summaryrefslogtreecommitdiff
path: root/callbacks.c
diff options
context:
space:
mode:
authorSimon Quigley <tsimonq2@ubuntu.com>2017-06-19 14:38:41 -0500
committerSimon Quigley <tsimonq2@ubuntu.com>2017-06-19 14:38:41 -0500
commit11b8179a57e675c6672cbe649c655230ae3e9744 (patch)
tree2919c366d51e154e65279156fef5b4f97b8fd2f9 /callbacks.c
parent720f5023a8f68aaaa54cb6b7bf46efee23b5b4c3 (diff)
Import Upstream version 0.4.2.1
Diffstat (limited to 'callbacks.c')
-rw-r--r--callbacks.c164
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);
}