diff options
Diffstat (limited to 'syncmanager.c')
-rw-r--r-- | syncmanager.c | 658 |
1 files changed, 352 insertions, 306 deletions
diff --git a/syncmanager.c b/syncmanager.c index 7646990f..599804eb 100644 --- a/syncmanager.c +++ b/syncmanager.c @@ -21,6 +21,7 @@ #include "hardinfo.h" #include "config.h" +#ifdef HAS_LIBSOUP #include <libsoup/soup.h> #include <libsoup/soup-xmlrpc-message.h> #include <libsoup/soup-xmlrpc-response.h> @@ -28,41 +29,41 @@ #include <stdarg.h> #include <string.h> -typedef struct _SyncDialog SyncDialog; -typedef struct _SyncNetArea SyncNetArea; -typedef struct _SyncNetAction SyncNetAction; +typedef struct _SyncDialog SyncDialog; +typedef struct _SyncNetArea SyncNetArea; +typedef struct _SyncNetAction SyncNetAction; struct _SyncNetArea { GtkWidget *vbox; }; struct _SyncNetAction { - gchar *name; - gboolean (*do_action)(SyncDialog *sd, gpointer sna); - - SyncEntry *entry; - GError *error; + gchar *name; + gboolean(*do_action) (SyncDialog * sd, gpointer sna); + + SyncEntry *entry; + GError *error; }; struct _SyncDialog { - GtkWidget *dialog; - GtkWidget *label; - - GtkWidget *button_sync; - GtkWidget *button_cancel; - GtkWidget *button_close; - - GtkWidget *scroll_box; - - SyncNetArea *sna; - - gboolean flag_cancel : 1; + GtkWidget *dialog; + GtkWidget *label; + + GtkWidget *button_sync; + GtkWidget *button_cancel; + GtkWidget *button_close; + + GtkWidget *scroll_box; + + SyncNetArea *sna; + + gboolean flag_cancel:1; }; -static GSList *entries = NULL; -static SoupSession *session = NULL; -static GMainLoop *loop; -static GQuark err_quark; +static GSList *entries = NULL; +static SoupSession *session = NULL; +static GMainLoop *loop; +static GQuark err_quark; #define XMLRPC_SERVER_URI "http://hardinfo.berlios.de/xmlrpc/" #define XMLRPC_SERVER_API_VERSION 1 @@ -73,307 +74,328 @@ static GQuark err_quark; #define LABEL_SYNC_SYNCING "<big><b>Synchronizing</b></big>\n" \ "This may take some time." -static SyncDialog *sync_dialog_new(void); -static void sync_dialog_destroy(SyncDialog *sd); -static void sync_dialog_start_sync(SyncDialog *sd); +static SyncDialog *sync_dialog_new(void); +static void sync_dialog_destroy(SyncDialog * sd); +static void sync_dialog_start_sync(SyncDialog * sd); -static SyncNetArea *sync_dialog_netarea_new(void); -static void sync_dialog_netarea_destroy(SyncNetArea *sna); -static void sync_dialog_netarea_show(SyncDialog *sd); +static SyncNetArea *sync_dialog_netarea_new(void); +static void sync_dialog_netarea_destroy(SyncNetArea * sna); +static void sync_dialog_netarea_show(SyncDialog * sd); #if 0 -static void sync_dialog_netarea_hide(SyncDialog *sd); +static void sync_dialog_netarea_hide(SyncDialog * sd); #endif -static void sync_dialog_netarea_start_actions(SyncDialog *sd, SyncNetAction *sna, - gint n); +static void sync_dialog_netarea_start_actions(SyncDialog * sd, + SyncNetAction * sna, gint n); #define SNA_ERROR(code,message,...) if (!sna->error) { \ sna->error = g_error_new(err_quark, code, message, \ ##__VA_ARGS__); \ } +#endif /* HAS_LIBSOUP */ -void sync_manager_add_entry(SyncEntry *entry) +void sync_manager_add_entry(SyncEntry * entry) { +#ifdef HAS_LIBSOUP DEBUG("registering syncmanager entry ''%s''", entry->fancy_name); entry->selected = TRUE; entries = g_slist_prepend(entries, entry); +#else + DEBUG("libsoup support is disabled."); +#endif /* HAS_LIBSOUP */ } void sync_manager_show(void) { +#ifndef HAS_LIBSOUP + g_warning + ("HardInfo was compiled without libsoup support. (Network Manager requires it.)"); +#else /* !HAS_LIBSOUP */ SyncDialog *sd = sync_dialog_new(); - + err_quark = g_quark_from_static_string("syncmanager"); if (gtk_dialog_run(GTK_DIALOG(sd->dialog)) == GTK_RESPONSE_ACCEPT) { - shell_view_set_enabled(FALSE); - shell_status_set_enabled(TRUE); - - sync_dialog_start_sync(sd); - - shell_status_set_enabled(FALSE); - shell_view_set_enabled(TRUE); - } + shell_view_set_enabled(FALSE); + shell_status_set_enabled(TRUE); + + sync_dialog_start_sync(sd); + + shell_status_set_enabled(FALSE); + shell_view_set_enabled(TRUE); + } sync_dialog_destroy(sd); +#endif /* HAS_LIBSOUP */ } -static SoupXmlrpcValue *_soup_get_xmlrpc_value(SoupMessage *msg, SyncNetAction *sna) +#ifdef HAS_LIBSOUP +static SoupXmlrpcValue *_soup_get_xmlrpc_value(SoupMessage * msg, + SyncNetAction * sna) { SoupXmlrpcResponse *response = NULL; SoupXmlrpcValue *value = NULL; - + sna->error = NULL; - + if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { - SNA_ERROR(1, "%s (error #%d)", msg->reason_phrase, msg->status_code); - goto bad; + SNA_ERROR(1, "%s (error #%d)", msg->reason_phrase, + msg->status_code); + goto bad; } - response = soup_xmlrpc_message_parse_response(SOUP_XMLRPC_MESSAGE(msg)); + response = + soup_xmlrpc_message_parse_response(SOUP_XMLRPC_MESSAGE(msg)); if (!response) { - SNA_ERROR(2, "Could not parse XML-RPC response"); - goto bad; + SNA_ERROR(2, "Could not parse XML-RPC response"); + goto bad; } - + value = soup_xmlrpc_response_get_value(response); if (!value) { - SNA_ERROR(3, "No response value in XML-RPC response"); + SNA_ERROR(3, "No response value in XML-RPC response"); } - - /* g_object_unref(response); */ -bad: + + /*g_object_unref(response); */ + bad: return value; } -static long _soup_get_xmlrpc_value_int(SoupMessage *msg, SyncNetAction *sna) +static long _soup_get_xmlrpc_value_int(SoupMessage * msg, + SyncNetAction * sna) { SoupXmlrpcValue *value; long int_value = -1; - + value = _soup_get_xmlrpc_value(msg, sna); if (!value) { - SNA_ERROR(4, "Could not extract result from XML-RPC response"); - goto bad; + SNA_ERROR(4, "Could not extract result from XML-RPC response"); + goto bad; } if (!soup_xmlrpc_value_get_int(value, &int_value)) { - SNA_ERROR(4, "Could not extract result from XML-RPC response"); + SNA_ERROR(4, "Could not extract result from XML-RPC response"); } -bad: + bad: return int_value; } -static gchar* _soup_get_xmlrpc_value_string(SoupMessage *msg, SyncNetAction *sna) +static gchar *_soup_get_xmlrpc_value_string(SoupMessage * msg, + SyncNetAction * sna) { SoupXmlrpcValue *value; gchar *string = NULL; - + value = _soup_get_xmlrpc_value(msg, sna); if (!value) { - SNA_ERROR(4, "Could not extract result from XML-RPC response"); - goto bad; + SNA_ERROR(4, "Could not extract result from XML-RPC response"); + goto bad; } if (!soup_xmlrpc_value_get_string(value, &string)) { - SNA_ERROR(4, "Could not extract result from XML-RPC response"); + SNA_ERROR(4, "Could not extract result from XML-RPC response"); } -bad: + bad: return string; } -static gboolean _soup_xmlrpc_call(gchar *method, SyncNetAction *sna, - SoupMessageCallbackFn callback) +static gboolean _soup_xmlrpc_call(gchar * method, SyncNetAction * sna, + SoupMessageCallbackFn callback) { SoupXmlrpcMessage *msg; - + sna->error = NULL; - + msg = soup_xmlrpc_message_new(XMLRPC_SERVER_URI); if (!msg) - return FALSE; - + return FALSE; + DEBUG("calling xmlrpc method %s", method); soup_xmlrpc_message_start_call(msg, method); soup_xmlrpc_message_end_call(msg); - + soup_xmlrpc_message_persist(msg); - - soup_session_queue_message(session, SOUP_MESSAGE(msg), - callback, sna); + + soup_session_queue_message(session, SOUP_MESSAGE(msg), callback, sna); g_main_run(loop); - + return TRUE; } -static gboolean _soup_xmlrpc_call_with_parameters(gchar *method, SyncNetAction *sna, - SoupMessageCallbackFn callback, - ...) +static gboolean _soup_xmlrpc_call_with_parameters(gchar * method, + SyncNetAction * sna, + SoupMessageCallbackFn + callback, ...) { SoupXmlrpcMessage *msg; gchar *argument; va_list ap; - + sna->error = NULL; - + msg = soup_xmlrpc_message_new(XMLRPC_SERVER_URI); if (!msg) - return FALSE; - + return FALSE; + DEBUG("calling xmlrpc method %s", method); soup_xmlrpc_message_start_call(msg, method); - + va_start(ap, callback); while ((argument = va_arg(ap, gchar *))) { - soup_xmlrpc_message_start_param(msg); - soup_xmlrpc_message_write_string(msg, argument); - soup_xmlrpc_message_end_param(msg); - - DEBUG("with parameter: %s", argument); + soup_xmlrpc_message_start_param(msg); + soup_xmlrpc_message_write_string(msg, argument); + soup_xmlrpc_message_end_param(msg); + + DEBUG("with parameter: %s", argument); } va_end(ap); - + soup_xmlrpc_message_end_call(msg); soup_xmlrpc_message_persist(msg); - + soup_session_queue_message(session, SOUP_MESSAGE(msg), callback, sna); g_main_run(loop); - + return TRUE; } -static void _action_check_api_version_got_response(SoupMessage *msg, gpointer user_data) +static void _action_check_api_version_got_response(SoupMessage * msg, + gpointer user_data) { SyncNetAction *sna = (SyncNetAction *) user_data; long version = _soup_get_xmlrpc_value_int(msg, sna); - + if (version != XMLRPC_SERVER_API_VERSION) { - SNA_ERROR(5, "Server says it supports API version %ld, but " \ - "this version of HardInfo only supports API " \ - "version %d.", version, XMLRPC_SERVER_API_VERSION); + SNA_ERROR(5, "Server says it supports API version %ld, but " + "this version of HardInfo only supports API " + "version %d.", version, XMLRPC_SERVER_API_VERSION); } g_main_quit(loop); } -static gboolean _action_check_api_version(SyncDialog *sd, gpointer user_data) +static gboolean _action_check_api_version(SyncDialog * sd, + gpointer user_data) { SyncNetAction *sna = (SyncNetAction *) user_data; if (!_soup_xmlrpc_call("server.getAPIVersion", sna, - _action_check_api_version_got_response)) - return FALSE; - + _action_check_api_version_got_response)) + return FALSE; + return sna->error ? FALSE : TRUE; } -static void _action_call_function_got_response(SoupMessage *msg, gpointer user_data) +static void _action_call_function_got_response(SoupMessage * msg, + gpointer user_data) { SyncNetAction *sna = (SyncNetAction *) user_data; gchar *string; - - string = _soup_get_xmlrpc_value_string(msg, sna); - DEBUG("received string: %s\n", string); - - if (sna->entry->save_to) { - gchar *filename = g_build_filename(g_get_home_dir(), ".hardinfo", - sna->entry->save_to, NULL); - - DEBUG("saving to %s", filename); + + if ((string = _soup_get_xmlrpc_value_string(msg, sna)) && + sna->entry->save_to) { + DEBUG("received string: %s\n", string); + gchar *filename = g_build_filename(g_get_home_dir(), ".hardinfo", + sna->entry->save_to, NULL); + + DEBUG("saving to %s", filename); #ifdef g_file_set_contents - g_file_set_contents(filename, string, -1, NULL); + g_file_set_contents(filename, string, -1, NULL); #else - { - FILE *f; - - f = fopen(filename, "w+"); - if (f) { - fwrite(string, 1, strlen(string), f); - fclose(f); - } - } + { + FILE *f; + + f = fopen(filename, "w+"); + if (f) { + fwrite(string, 1, strlen(string), f); + fclose(f); + } + } #endif - g_free(filename); + g_free(filename); } - + if (sna->entry->callback) { - sna->entry->callback(sna->entry, string); + sna->entry->callback(sna->entry, string); } g_free(string); g_main_quit(loop); } -static gboolean _action_call_function(SyncDialog *sd, gpointer user_data) +static gboolean _action_call_function(SyncDialog * sd, gpointer user_data) { SyncNetAction *sna = (SyncNetAction *) user_data; - + if (sna->entry) { - gchar *str_data = NULL; - - if (sna->entry->get_data) - str_data = sna->entry->get_data(); - - if (!_soup_xmlrpc_call_with_parameters("sync.callFunction", sna, - _action_call_function_got_response, - VERSION, ARCH, - sna->entry->name, - str_data, NULL)) { - if (str_data) - g_free(str_data); - - return FALSE; - } - - if (str_data) - g_free(str_data); + gchar *str_data = NULL; + + if (sna->entry->get_data) + str_data = sna->entry->get_data(); + + if (!_soup_xmlrpc_call_with_parameters("sync.callFunction", sna, + _action_call_function_got_response, + VERSION, ARCH, + sna->entry->name, + str_data, NULL)) { + if (str_data) + g_free(str_data); + + return FALSE; + } + + if (str_data) + g_free(str_data); } - + return sna->error ? FALSE : TRUE; } -static gboolean _cancel_sync(GtkWidget *widget, gpointer data) +static gboolean _cancel_sync(GtkWidget * widget, gpointer data) { SyncDialog *sd = (SyncDialog *) data; - + if (session) { - soup_session_abort(session); + soup_session_abort(session); } - + sd->flag_cancel = TRUE; g_main_quit(loop); - + gtk_widget_set_sensitive(widget, FALSE); - + return FALSE; } -static SyncNetAction *sync_manager_get_selected_actions(gint *n) +static SyncNetAction *sync_manager_get_selected_actions(gint * n) { gint i; GSList *entry; SyncNetAction *actions; - SyncNetAction action_check_api = { "Contacting HardInfo Central Database", - _action_check_api_version }, - action_clean_up = { "Cleaning up", NULL }; - + SyncNetAction action_check_api = + { "Contacting HardInfo Central Database", + _action_check_api_version + }, action_clean_up = { + "Cleaning up", NULL}; + actions = g_new0(SyncNetAction, 2 + g_slist_length(entries)); - + for (entry = entries, i = 1; entry; entry = entry->next) { - SyncEntry *e = (SyncEntry *) entry->data; - - if (e->selected) { - SyncNetAction sna = { e->fancy_name, _action_call_function, e }; - - actions[i++] = sna; - } + SyncEntry *e = (SyncEntry *) entry->data; + + if (e->selected) { + SyncNetAction sna = + { e->fancy_name, _action_call_function, e }; + + actions[i++] = sna; + } } - actions[0] = action_check_api; + actions[0] = action_check_api; actions[i++] = action_clean_up; *n = i; @@ -383,137 +405,150 @@ static SyncNetAction *sync_manager_get_selected_actions(gint *n) static SoupUri *sync_manager_get_proxy(void) { const gchar *conf; - + if (!(conf = g_getenv("HTTP_PROXY"))) { - if (!(conf = g_getenv("http_proxy"))) { - return NULL; - } + if (!(conf = g_getenv("http_proxy"))) { + return NULL; + } } - + return soup_uri_new(conf); } -static void sync_dialog_start_sync(SyncDialog *sd) +static void sync_dialog_start_sync(SyncDialog * sd) { - gint nactions; + gint nactions; SyncNetAction *actions; - + if (!session) { - SoupUri *proxy = sync_manager_get_proxy(); - - session = soup_session_async_new_with_options(SOUP_SESSION_TIMEOUT, 10, - SOUP_SESSION_PROXY_URI, proxy, NULL); - /* Crashes if we unref the proxy? O_o - if (proxy) - g_object_unref(proxy); - */ + SoupUri *proxy = sync_manager_get_proxy(); + + session = + soup_session_async_new_with_options(SOUP_SESSION_TIMEOUT, 10, + SOUP_SESSION_PROXY_URI, + proxy, NULL); + /* Crashes if we unref the proxy? O_o */ + /*if (proxy) + g_object_unref(proxy); */ } - + loop = g_main_loop_new(NULL, TRUE); gtk_widget_hide(sd->button_sync); sync_dialog_netarea_show(sd); g_signal_connect(G_OBJECT(sd->button_cancel), "clicked", - (GCallback)_cancel_sync, sd); + (GCallback) _cancel_sync, sd); actions = sync_manager_get_selected_actions(&nactions); sync_dialog_netarea_start_actions(sd, actions, nactions); g_free(actions); - + if (sd->flag_cancel) { - gtk_widget_hide(sd->button_cancel); - gtk_widget_show(sd->button_close); + gtk_widget_hide(sd->button_cancel); + gtk_widget_show(sd->button_close); - /* wait for the user to close the dialog */ - g_main_run(loop); + /* wait for the user to close the dialog */ + g_main_run(loop); } - + g_main_loop_unref(loop); } -static void sync_dialog_netarea_start_actions(SyncDialog *sd, SyncNetAction sna[], gint n) +static void sync_dialog_netarea_start_actions(SyncDialog * sd, + SyncNetAction sna[], gint n) { gint i; GtkWidget **labels; GtkWidget **icons; GdkPixbuf *done_icon = icon_cache_get_pixbuf("status-done.png"); GdkPixbuf *curr_icon = icon_cache_get_pixbuf("status-curr.png"); - + labels = g_new0(GtkWidget *, n); - icons = g_new0(GtkWidget *, n); - + icons = g_new0(GtkWidget *, n); + for (i = 0; i < n; i++) { - GtkWidget *hbox; - - hbox = gtk_hbox_new(FALSE, 5); - - labels[i] = gtk_label_new(sna[i].name); - icons[i] = gtk_image_new(); - - gtk_widget_set_size_request(icons[i], - gdk_pixbuf_get_width(done_icon), - gdk_pixbuf_get_height(done_icon)); - - gtk_label_set_use_markup(GTK_LABEL(labels[i]), TRUE); - gtk_misc_set_alignment(GTK_MISC(labels[i]), 0.0, 0.5); - - gtk_box_pack_start(GTK_BOX(hbox), icons[i], FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox), labels[i], TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(sd->sna->vbox), hbox, FALSE, FALSE, 3); - - gtk_widget_show_all(hbox); + GtkWidget *hbox; + + hbox = gtk_hbox_new(FALSE, 5); + + labels[i] = gtk_label_new(sna[i].name); + icons[i] = gtk_image_new(); + + gtk_widget_set_size_request(icons[i], + gdk_pixbuf_get_width(done_icon), + gdk_pixbuf_get_height(done_icon)); + + gtk_label_set_use_markup(GTK_LABEL(labels[i]), TRUE); + gtk_misc_set_alignment(GTK_MISC(labels[i]), 0.0, 0.5); + + gtk_box_pack_start(GTK_BOX(hbox), icons[i], FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), labels[i], TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(sd->sna->vbox), hbox, FALSE, FALSE, 3); + + gtk_widget_show_all(hbox); } - + while (gtk_events_pending()) - gtk_main_iteration(); - + gtk_main_iteration(); + for (i = 0; i < n; i++) { - gchar *markup; - - if (sd->flag_cancel) { - markup = g_strdup_printf("<s>%s</s> <i>(canceled)</i>", sna[i].name); - gtk_label_set_markup(GTK_LABEL(labels[i]), markup); - g_free(markup); - - gtk_image_set_from_pixbuf(GTK_IMAGE(icons[i]), - icon_cache_get_pixbuf("dialog-error.png")); - break; - } - - markup = g_strdup_printf("<b>%s</b>", sna[i].name); - gtk_label_set_markup(GTK_LABEL(labels[i]), markup); - g_free(markup); - - gtk_image_set_from_pixbuf(GTK_IMAGE(icons[i]), curr_icon); - - if (sna[i].do_action && !sna[i].do_action(sd, &sna[i])) { - markup = g_strdup_printf("<b><s>%s</s></b> <i>(failed)</i>", sna[i].name); - gtk_label_set_markup(GTK_LABEL(labels[i]), markup); - g_free(markup); - - sd->flag_cancel = TRUE; - - gtk_image_set_from_pixbuf(GTK_IMAGE(icons[i]), - icon_cache_get_pixbuf("dialog-error.png")); - if (sna[i].error) { - g_warning("Failed while performing \"%s\". Please file a bug report " \ - "if this problem persists. (Use the Help\342\206\222Report" \ - " bug option.)\n\nDetails: %s", - sna[i].name, sna[i].error->message); - - g_error_free(sna[i].error); - } else { - g_warning("Failed while performing \"%s\". Please file a bug report " \ - "if this problem persists. (Use the Help\342\206\222Report" \ - " bug option.)", sna[i].name); - } - break; - } - - gtk_image_set_from_pixbuf(GTK_IMAGE(icons[i]), done_icon); - gtk_label_set_markup(GTK_LABEL(labels[i]), sna[i].name); + gchar *markup; + + if (sd->flag_cancel) { + markup = + g_strdup_printf("<s>%s</s> <i>(canceled)</i>", + sna[i].name); + gtk_label_set_markup(GTK_LABEL(labels[i]), markup); + g_free(markup); + + gtk_image_set_from_pixbuf(GTK_IMAGE(icons[i]), + icon_cache_get_pixbuf + ("dialog-error.png")); + break; + } + + markup = g_strdup_printf("<b>%s</b>", sna[i].name); + gtk_label_set_markup(GTK_LABEL(labels[i]), markup); + g_free(markup); + + gtk_image_set_from_pixbuf(GTK_IMAGE(icons[i]), curr_icon); + + if (sna[i].do_action && !sna[i].do_action(sd, &sna[i])) { + markup = + g_strdup_printf("<b><s>%s</s></b> <i>(failed)</i>", + sna[i].name); + gtk_label_set_markup(GTK_LABEL(labels[i]), markup); + g_free(markup); + + sd->flag_cancel = TRUE; + + gtk_image_set_from_pixbuf(GTK_IMAGE(icons[i]), + icon_cache_get_pixbuf + ("dialog-error.png")); + if (sna[i].error) { + if (sna[i].error->code != 1) { + /* the user has not cancelled something... */ + g_warning + ("Failed while performing \"%s\". Please file a bug report " + "if this problem persists. (Use the Help\342\206\222Report" + " bug option.)\n\nDetails: %s", sna[i].name, + sna[i].error->message); + } + + g_error_free(sna[i].error); + } else { + g_warning + ("Failed while performing \"%s\". Please file a bug report " + "if this problem persists. (Use the Help\342\206\222Report" + " bug option.)", sna[i].name); + } + break; + } + + gtk_image_set_from_pixbuf(GTK_IMAGE(icons[i]), done_icon); + gtk_label_set_markup(GTK_LABEL(labels[i]), sna[i].name); } - + g_free(labels); g_free(icons); } @@ -521,41 +556,41 @@ static void sync_dialog_netarea_start_actions(SyncDialog *sd, SyncNetAction sna[ static SyncNetArea *sync_dialog_netarea_new(void) { SyncNetArea *sna = g_new0(SyncNetArea, 1); - + sna->vbox = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(sna->vbox), 10); gtk_widget_show_all(sna->vbox); gtk_widget_hide(sna->vbox); - + return sna; } -static void sync_dialog_netarea_destroy(SyncNetArea *sna) +static void sync_dialog_netarea_destroy(SyncNetArea * sna) { g_return_if_fail(sna != NULL); g_free(sna); } -static void sync_dialog_netarea_show(SyncDialog *sd) +static void sync_dialog_netarea_show(SyncDialog * sd) { g_return_if_fail(sd && sd->sna); - + gtk_widget_hide(GTK_WIDGET(sd->scroll_box)); gtk_widget_show(GTK_WIDGET(sd->sna->vbox)); - + gtk_label_set_markup(GTK_LABEL(sd->label), LABEL_SYNC_SYNCING); gtk_window_set_default_size(GTK_WINDOW(sd->dialog), 0, 0); gtk_window_reshow_with_initial_size(GTK_WINDOW(sd->dialog)); } #if 0 -static void sync_dialog_netarea_hide(SyncDialog *sd) +static void sync_dialog_netarea_hide(SyncDialog * sd) { g_return_if_fail(sd && sd->sna); - + gtk_widget_show(GTK_WIDGET(sd->scroll_box)); gtk_widget_hide(GTK_WIDGET(sd->sna->vbox)); @@ -564,40 +599,40 @@ static void sync_dialog_netarea_hide(SyncDialog *sd) } #endif -static void populate_store(GtkListStore *store) +static void populate_store(GtkListStore * store) { GSList *entry; SyncEntry *e; - + gtk_list_store_clear(store); - + for (entry = entries; entry; entry = entry->next) { - GtkTreeIter iter; - - e = (SyncEntry *) entry->data; + GtkTreeIter iter; + + e = (SyncEntry *) entry->data; - e->selected = TRUE; + e->selected = TRUE; - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, 0, TRUE, 1, e->fancy_name, 2, e, -1); + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, TRUE, 1, e->fancy_name, 2, e, + -1); } } static void -sel_toggle(GtkCellRendererToggle *cellrenderertoggle, - gchar *path_str, - GtkTreeModel *model) +sel_toggle(GtkCellRendererToggle * cellrenderertoggle, + gchar * path_str, GtkTreeModel * model) { - GtkTreeIter iter; + GtkTreeIter iter; GtkTreePath *path = gtk_tree_path_new_from_string(path_str); SyncEntry *se; gboolean active; - + gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, 0, &active, 2, &se, -1); - + se->selected = !active; - + gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, se->selected, -1); gtk_tree_path_free(path); } @@ -620,48 +655,55 @@ static SyncDialog *sync_dialog_new(void) GtkWidget *button6; GtkWidget *label; GtkWidget *hbox; - + GtkTreeViewColumn *column; GtkTreeModel *model; GtkListStore *store; - GtkCellRenderer *cr_text, *cr_toggle; - + GtkCellRenderer *cr_text, *cr_toggle; + sd = g_new0(SyncDialog, 1); sd->sna = sync_dialog_netarea_new(); dialog = gtk_dialog_new(); gtk_window_set_title(GTK_WINDOW(dialog), "Network Updater"); - gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); + gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); + gtk_window_set_icon(GTK_WINDOW(dialog), + icon_cache_get_pixbuf("syncmanager.png")); gtk_window_set_default_size(GTK_WINDOW(dialog), 420, 260); - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT); + gtk_window_set_position(GTK_WINDOW(dialog), + GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_type_hint(GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); + dialog1_vbox = GTK_DIALOG(dialog)->vbox; gtk_box_set_spacing(GTK_BOX(dialog1_vbox), 5); gtk_container_set_border_width(GTK_CONTAINER(dialog1_vbox), 4); gtk_widget_show(dialog1_vbox); - + hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, FALSE, FALSE, 0); - + label = gtk_label_new(LABEL_SYNC_DEFAULT); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - + gtk_box_pack_start(GTK_BOX(hbox), - icon_cache_get_image("syncmanager.png"), - FALSE, FALSE, 0); + icon_cache_get_image("syncmanager.png"), + FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); gtk_widget_show_all(hbox); - - gtk_box_pack_start(GTK_BOX(dialog1_vbox), sd->sna->vbox, TRUE, TRUE, 0); + + gtk_box_pack_start(GTK_BOX(dialog1_vbox), sd->sna->vbox, TRUE, TRUE, + 0); scrolledwindow2 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwindow2); - gtk_box_pack_start(GTK_BOX(dialog1_vbox), scrolledwindow2, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(dialog1_vbox), scrolledwindow2, TRUE, TRUE, + 0); gtk_widget_set_size_request(scrolledwindow2, -1, 200); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2), GTK_POLICY_AUTOMATIC, @@ -669,14 +711,16 @@ static SyncDialog *sync_dialog_new(void) gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_SHADOW_IN); - store = gtk_list_store_new(3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER); + store = + gtk_list_store_new(3, G_TYPE_BOOLEAN, G_TYPE_STRING, + G_TYPE_POINTER); model = GTK_TREE_MODEL(store); treeview2 = gtk_tree_view_new_with_model(model); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview2), FALSE); gtk_widget_show(treeview2); gtk_container_add(GTK_CONTAINER(scrolledwindow2), treeview2); - + column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview2), column); @@ -688,7 +732,7 @@ static SyncDialog *sync_dialog_new(void) cr_text = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, cr_text, TRUE); gtk_tree_view_column_add_attribute(column, cr_text, "markup", 1); - + populate_store(store); dialog1_action_area = GTK_DIALOG(dialog)->action_area; @@ -709,12 +753,13 @@ static SyncDialog *sync_dialog_new(void) GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT); button6 = gtk_button_new_from_stock(GTK_STOCK_CLOSE); - g_signal_connect(G_OBJECT(button6), "clicked", (GCallback)close_clicked, NULL); + g_signal_connect(G_OBJECT(button6), "clicked", + (GCallback) close_clicked, NULL); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button6, GTK_RESPONSE_ACCEPT); GTK_WIDGET_SET_FLAGS(button6, GTK_CAN_DEFAULT); - sd->dialog = dialog; + sd->dialog = dialog; sd->button_sync = button7; sd->button_cancel = button8; sd->button_close = button6; @@ -724,9 +769,10 @@ static SyncDialog *sync_dialog_new(void) return sd; } -static void sync_dialog_destroy(SyncDialog *sd) +static void sync_dialog_destroy(SyncDialog * sd) { gtk_widget_destroy(sd->dialog); sync_dialog_netarea_destroy(sd->sna); g_free(sd); } +#endif /* HAS_LIBSOUP */ |