diff options
-rw-r--r-- | hardinfo2/remote.c | 56 | ||||
-rw-r--r-- | hardinfo2/shell.c | 8 | ||||
-rw-r--r-- | hardinfo2/shell.h | 5 |
3 files changed, 53 insertions, 16 deletions
diff --git a/hardinfo2/remote.c b/hardinfo2/remote.c index a6d26b43..e9d03ef1 100644 --- a/hardinfo2/remote.c +++ b/hardinfo2/remote.c @@ -90,22 +90,25 @@ static gchar *remote_module_entry_func() { Shell *shell = shell_get_main_shell(); + shell_status_pulse(); return xmlrpc_get_string("http://localhost:4242/xmlrpc", "module.entryFunction", "%s%i", shell->selected_module_name, shell->selected->number); } -static gchar *remote_module_entry_scan_func() +static void remote_module_entry_scan_func() { Shell *shell = shell_get_main_shell(); - return xmlrpc_get_string("http://localhost:4242/xmlrpc", "module.entryScan", - "%s%i", shell->selected_module_name, shell->selected->number); + shell_status_pulse(); + xmlrpc_get_string("http://localhost:4242/xmlrpc", "module.entryScan", + "%s%i", shell->selected_module_name, shell->selected->number); } static gchar *remote_module_entry_field_func(gchar *entry) { Shell *shell = shell_get_main_shell(); + shell_status_pulse(); return xmlrpc_get_string("http://localhost:4242/xmlrpc", "module.entryGetField", "%s%i%s", shell->selected_module_name, shell->selected->number, entry); } @@ -114,6 +117,7 @@ static gchar *remote_module_entry_more_func(gchar *entry) { Shell *shell = shell_get_main_shell(); + shell_status_pulse(); return xmlrpc_get_string("http://localhost:4242/xmlrpc", "module.entryGetMoreInfo", "%s%i%s", shell->selected_module_name, shell->selected->number, entry); } @@ -121,32 +125,46 @@ static gchar *remote_module_entry_more_func(gchar *entry) static gchar *remote_module_entry_note_func(gint entry) { Shell *shell = shell_get_main_shell(); + gchar *note; - return xmlrpc_get_string("http://localhost:4242/xmlrpc", "module.entryGetNote", + shell_status_pulse(); + note = xmlrpc_get_string("http://localhost:4242/xmlrpc", "module.entryGetNote", "%s%i", shell->selected_module_name, shell->selected->number); + if (!*note) { + g_free(note); + return NULL; + } + + return note; } static gboolean load_module_list() { + Shell *shell; GValueArray *modules; int i = 0; - shell_status_update("Obtaining remote server module list..."); + shell_status_update("Unloading local modules..."); + module_unload_all(); + shell_status_update("Obtaining remote server module list..."); modules = xmlrpc_get_array("http://localhost:4242/xmlrpc", "module.getModuleList", NULL); if (!modules) { return FALSE; } - shell_status_update("Unloading local modules..."); - module_unload_all(); + shell = shell_get_main_shell(); for (; i < modules->n_values; i++) { + ShellModule *m; + ShellModuleEntry *e; GValueArray *entries; const gchar *module = g_value_get_string(&modules->values[i]); int j = 0; - DEBUG("%s", module); + m = g_new0(ShellModule, 1); + m->name = g_strdup(module); + m->icon = icon_cache_get_pixbuf("module.png"); /* FIXME */ shell_status_pulse(); entries = xmlrpc_get_array("http://localhost:4242/xmlrpc", "module.getEntryList", "%s", module); @@ -154,16 +172,30 @@ static gboolean load_module_list() for (; j < entries->n_values; j++) { GValueArray *tuple = g_value_get_boxed(&entries->values[j]); - DEBUG("--- %s [%s](%d)", - g_value_get_string(&tuple->values[0]), - g_value_get_string(&tuple->values[1]), - j); + e = g_new0(ShellModuleEntry, 1); + e->name = g_strdup(g_value_get_string(&tuple->values[0])); + e->icon = icon_cache_get_pixbuf(g_value_get_string(&tuple->values[1])); + e->icon_file = g_strdup(g_value_get_string(&tuple->values[1])); + e->number = j; + + e->func = remote_module_entry_func; + e->scan_func = remote_module_entry_scan_func; + e->fieldfunc = remote_module_entry_field_func; + e->morefunc = remote_module_entry_more_func; + e->notefunc = remote_module_entry_note_func; + + m->entries = g_slist_append(m->entries, e); } g_value_array_free(entries); } + + shell->tree->modules = g_slist_append(shell->tree->modules, m); } + g_slist_foreach(shell->tree->modules, shell_add_modules_to_gui, shell->tree); + gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->tree->view)); + g_value_array_free(modules); return TRUE; diff --git a/hardinfo2/shell.c b/hardinfo2/shell.c index 96ec2010..7ffd1b52 100644 --- a/hardinfo2/shell.c +++ b/hardinfo2/shell.c @@ -506,10 +506,10 @@ add_module_entry_to_view_menu(gchar * module, gchar * name, shell->merge_ids = g_slist_prepend(shell->merge_ids, GINT_TO_POINTER(merge_id)); } -static void add_modules_to_gui(gpointer data, gpointer user_data) +void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree) { - ShellTree *shelltree = (ShellTree *) user_data; - ShellModule *module = (ShellModule *) data; + ShellModule *module = (ShellModule *) _shell_module; + ShellTree *shelltree = (ShellTree *) _shell_tree; GtkTreeStore *store = GTK_TREE_STORE(shelltree->model); GtkTreeIter parent; @@ -603,7 +603,7 @@ void shell_init(GSList * modules) shell->tree->modules = modules ? modules : modules_load_all(); - g_slist_foreach(shell->tree->modules, add_modules_to_gui, shell->tree); + g_slist_foreach(shell->tree->modules, shell_add_modules_to_gui, shell->tree); gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->tree->view)); gtk_widget_show_all(shell->hpaned); diff --git a/hardinfo2/shell.h b/hardinfo2/shell.h index 0f3af78c..b1714c77 100644 --- a/hardinfo2/shell.h +++ b/hardinfo2/shell.h @@ -189,4 +189,9 @@ void shell_view_set_enabled(gboolean setting); void shell_clear_timeouts(Shell *shell); void shell_clear_tree_models(Shell *shell); void shell_reset_title(Shell *shell); + +void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree); + #endif /* __SHELL_H__ */ + + |