diff options
author | Simon Quigley <tsimonq2@ubuntu.com> | 2017-06-19 14:38:41 -0500 |
---|---|---|
committer | Simon Quigley <tsimonq2@ubuntu.com> | 2017-06-19 14:38:41 -0500 |
commit | 11b8179a57e675c6672cbe649c655230ae3e9744 (patch) | |
tree | 2919c366d51e154e65279156fef5b4f97b8fd2f9 /callbacks.c | |
parent | 720f5023a8f68aaaa54cb6b7bf46efee23b5b4c3 (diff) |
Import Upstream version 0.4.2.1
Diffstat (limited to 'callbacks.c')
-rw-r--r-- | callbacks.c | 164 |
1 files changed, 157 insertions, 7 deletions
diff --git a/callbacks.c b/callbacks.c index fd862984..ac47d089 100644 --- a/callbacks.c +++ b/callbacks.c @@ -1,6 +1,6 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@linuxmag.com.br> + * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@linuxmag.com.br> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,19 +19,103 @@ #include <stdlib.h> #include <gtk/gtk.h> +#include <hardinfo.h> #include <callbacks.h> #include <iconcache.h> #include <shell.h> #include <report.h> +#include <syncmanager.h> #include <config.h> +void cb_sync_manager() +{ + sync_manager_show(); +} + +void cb_save_graphic() +{ + Shell *shell = shell_get_main_shell(); + GtkWidget *dialog; + gchar *filename; + + /* save the pixbuf to a png file */ + dialog = gtk_file_chooser_dialog_new("Save Image", + NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + NULL); + + filename = g_strconcat(shell->selected->name, ".png", NULL); + gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), filename); + g_free(filename); + + if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { + filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + gtk_widget_destroy(dialog); + + shell_status_update("Saving image..."); + + tree_view_save_image(filename); + + shell_status_update("Done."); + g_free(filename); + + return; + } + + gtk_widget_destroy(dialog); +} + +void cb_open_web_page() +{ + open_url("http://hardinfo.berlios.de"); +} + +void cb_open_online_docs() +{ + open_url("http://hardinfo.berlios.de/web/Documentation"); +} + +void cb_report_bug() +{ + open_url("http://hardinfo.berlios.de/web/BugReports"); +} + +void cb_donate() +{ + open_url("http://hardinfo.berlios.de/web/Donate"); +} + void cb_refresh() { shell_do_reload(); } +void cb_copy_to_clipboard() +{ + ShellModuleEntry *entry = shell_get_main_shell()->selected; + + if (entry) { + gchar *data = module_entry_function(entry); + GtkClipboard *clip = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE)); + ReportContext *ctx = report_context_text_new(NULL); + + ctx->entry = entry; + + report_header(ctx); + report_table(ctx, data); + report_footer(ctx); + + gtk_clipboard_set_text(clip, ctx->output, -1); + + g_free(data); + report_context_free(ctx); + } +} + void cb_side_pane() { gboolean visible; @@ -48,15 +132,74 @@ void cb_toolbar() shell_ui_manager_set_visible("/MainMenuBarAction", visible); } +void cb_about_module(GtkAction *action) +{ + Shell *shell = shell_get_main_shell(); + GSList *modules = shell->tree->modules; + ModuleAbout *ma; + gchar *name; + + g_object_get(G_OBJECT(action), "tooltip", &name, NULL); + + for (; modules; modules = modules->next) { + ShellModule *sm = (ShellModule *)modules->data; + + if (!g_str_equal(sm->name, name)) + continue; + + if ((ma = module_get_about(sm))) { + GtkWidget *about; + + about = gtk_about_dialog_new(); + gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), + idle_free(g_strdup_printf("%s Module", sm->name))); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), ma->version); + gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), + idle_free(g_strdup_printf("Written by %s\n" + "Licensed under %s", + ma->author, + ma->license))); + + if (ma->description) + gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about), + ma->description); + + gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about), sm->icon); + gtk_dialog_run(GTK_DIALOG(about)); + gtk_widget_destroy(about); + } else { + g_warning("No about information is associated with the %s module.", name); + } + + break; + } + + g_free(name); +} + void cb_about() { GtkWidget *about; const gchar *authors[] = { + "Author:", "Leandro A. F. Pereira", + "", + "Contributors:", + "Agney Lopes Roth Ferraz", "SCSI support by Pascal F. Martin", - "MD5 implementation by Colin Plumb", - "SHA1 implementation by Steve Raid", - "Blowfish implementation by Paul Kocher", + "", + "Based on work by:", + "MD5 implementation by Colin Plumb (see md5.c for details)", + "SHA1 implementation by Steve Raid (see sha1.c for details)", + "Blowfish implementation by Paul Kocher (see blowfich.c for details)", + "Raytracing benchmark by John Walker (see fbench.c for details)", + "Some code partly based on x86cpucaps by Osamu Kayasono", + "Vendor list based on GtkSysInfo by Pissens Sebastien", + NULL + }; + const gchar *artists[] = { + "The GNOME Project", + "Tango Project", NULL }; @@ -64,7 +207,7 @@ void cb_about() gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), "HardInfo"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), VERSION); gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), - "Copyright \302\251 2003-2006 " + "Copyright \302\251 2003-2007 " "Leandro A. F. Pereira"); gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about), "System information and benchmark tool"); @@ -87,6 +230,7 @@ void cb_about() #endif gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(about), authors); + gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(about), artists); gtk_dialog_run(GTK_DIALOG(about)); gtk_widget_destroy(about); @@ -95,12 +239,18 @@ void cb_about() void cb_generate_report() { Shell *shell = shell_get_main_shell(); + gboolean btn_refresh = shell_action_get_enabled("RefreshAction"); + gboolean btn_copy = shell_action_get_enabled("CopyAction"); report_dialog_show(shell->tree->model, shell->window); + + shell_action_set_enabled("RefreshAction", btn_refresh); + shell_action_set_enabled("CopyAction", btn_copy); } void cb_quit(void) { - gtk_main_quit(); - exit(0); + do { + gtk_main_quit(); + } while (gtk_main_level() > 1); } |