aboutsummaryrefslogtreecommitdiff
path: root/hardinfo2/remote.c
diff options
context:
space:
mode:
authorLeandro A. F. Pereira <leandro@hardinfo.org>2009-05-01 14:11:48 -0300
committerLeandro A. F. Pereira <leandro@hardinfo.org>2009-05-01 14:11:48 -0300
commitddf9b782e39355db410ae4225d7a41a8dea902c4 (patch)
tree6a20d9728248544c3e2ee6acb1d0d6f3aef4f563 /hardinfo2/remote.c
parent083768985c5d7f71c98891db7ba3be12e987f4ec (diff)
First attempt at making connections to remote hosts
Diffstat (limited to 'hardinfo2/remote.c')
-rw-r--r--hardinfo2/remote.c56
1 files changed, 44 insertions, 12 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;