diff options
| author | Leandro A. F. Pereira <leandro@hardinfo.org> | 2009-05-01 14:11:48 -0300 | 
|---|---|---|
| committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2009-05-01 14:11:48 -0300 | 
| commit | ddf9b782e39355db410ae4225d7a41a8dea902c4 (patch) | |
| tree | 6a20d9728248544c3e2ee6acb1d0d6f3aef4f563 /hardinfo2 | |
| parent | 083768985c5d7f71c98891db7ba3be12e987f4ec (diff) | |
First attempt at making connections to remote hosts
Diffstat (limited to 'hardinfo2')
| -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__ */ + + | 
