aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hardinfo2/remote.c56
-rw-r--r--hardinfo2/shell.c8
-rw-r--r--hardinfo2/shell.h5
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__ */
+
+