Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=gservice.git;a=commitdiff;h=81da1d7ac02019bd5e84ae8137f5367941cdee4c
commit 81da1d7ac02019bd5e84ae8137f5367941cdee4c Author: Priyank <priy...@frugalware.org> Date: Mon Jan 19 20:10:33 2009 +0530 Fixed some bugs and added cleanup functions * move config detection code to gservice.c * display a warning for the first time gservice is started * fix a bug in gsvc_config_set_bool() where all values were set to TRUE diff --git a/src/gservice-config.c b/src/gservice-config.c index 7bc07ce..53b5aab 100644 --- a/src/gservice-config.c +++ b/src/gservice-config.c @@ -49,6 +49,17 @@ gsvc_config_new (void) return ret; } +void +gsvc_config_free (gsvc_config_t *cfg) +{ + if (cfg) + { + g_free (cfg); + } + + return; +} + guint gsvc_config_init (gsvc_config_t *cfg) { @@ -152,10 +163,10 @@ gsvc_config_set_bool (gsvc_config_t *cfg, const char *key, gboolean val) c->show_warning = val; else if (!strcmp(key,"show_icons")) - c->show_warning = val; + c->show_icons = val; else if (!strcmp(key,"show_status")) - c->show_warning = val; + c->show_status = val; /* write the config to file */ return (_gsvc_write_config(c)); diff --git a/src/gservice-config.h b/src/gservice-config.h index 0f5295e..b0b0237 100644 --- a/src/gservice-config.h +++ b/src/gservice-config.h @@ -12,6 +12,9 @@ guint gsvc_config_init (gsvc_config_t *cfg); /* returns a newly allocated conf structure */ gsvc_config_t *gsvc_config_new (void); +/* free an allocated conf structure */ +void gsvc_config_free (gsvc_config_t *cfg); + /* set a boolean value for a configuration key * returns TRUE on success, FALSE on error */ gboolean gsvc_config_set_bool (gsvc_config_t *cfg, const char *key, gboolean val); @@ -19,4 +22,5 @@ gboolean gsvc_config_set_bool (gsvc_config_t *cfg, const char *key, gboolean val /* get the boolean value for a specified key */ gboolean gsvc_config_get_bool (gsvc_config_t *cfg, const char *key); + #endif diff --git a/src/gservice-interface.c b/src/gservice-interface.c index 040096b..a2e3d4b 100644 --- a/src/gservice-interface.c +++ b/src/gservice-interface.c @@ -48,11 +48,10 @@ static GtkWidget *gsvc_service_edit_dlg_r4 = NULL; static GtkWidget *gsvc_service_edit_dlg_r5 = NULL; static GtkWidget *gsvc_service_edit_dlg_r6 = NULL; extern GladeXML *xml; +extern gsvc_config_t *conf; static GList *gsvc_service_list = NULL; -static gsvc_config_t *conf = NULL; - /* callbacks */ static void cb_gsvc_r0_toggled (GtkCellRendererToggle *toggle, gchar *path_str, gpointer data); static void cb_gsvc_r1_toggled (GtkCellRendererToggle *toggle, gchar *path_str, gpointer data); @@ -314,14 +313,6 @@ gservice_push_status (const char *status) void gservice_interface_init (void) { - /* initialize configuration */ - conf = gsvc_config_new (); - if (gsvc_config_init(conf)) - { - gsvc_error (_("Error"), _("Failed to initialize configuration. Please check that a valid configuration file exists in /etc/gservice/main.conf")); - gtk_main_quit (); - } - gsvc_main_window = gservice_get_widget ("gsvc_main_window"); gsvc_splash_screen = gservice_get_widget ("gsvc_splash_screen"); gsvc_treeview_services = gservice_get_widget ("gsvc_treeview_services"); @@ -358,6 +349,10 @@ gservice_interface_init (void) gservice_populate_services (); /* connect some signals */ + g_signal_connect (G_OBJECT(gsvc_treeview_services), + "row-activated", + G_CALLBACK(cb_gsvc_button_edit_clicked), + NULL); g_signal_connect (G_OBJECT(gservice_get_widget("menu_about")), "activate", G_CALLBACK(gservice_about), @@ -399,11 +394,30 @@ gservice_interface_init (void) G_CALLBACK(cb_gsvc_mnu_show_status_toggled), (gpointer)gservice_get_widget("gsvc_status_box")); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(gservice_get_widget("gsvc_show_status")), gsvc_config_get_bool(conf,"show_status")); + if (!gsvc_config_get_bool(conf,"show_status")) + { + gtk_widget_hide (gservice_get_widget("gsvc_status_box")); + } /* alrite, lets display the main window */ while (gtk_events_pending()) gtk_main_iteration (); gtk_widget_hide (gsvc_splash_screen); gtk_widget_show (gsvc_main_window); + if (gsvc_config_get_bool(conf,"show_warning")) + { + if (gsvc_warning_special("You are about to change system settings. Please note that gService is not responsible for any damage to your computer system or loss of data that results from the use of gService.")) + { + gsvc_config_set_bool (conf, "show_warning", FALSE); + } + } + + return; +} + +void +gservice_interface_cleanup (void) +{ + g_object_unref (xml); return; } diff --git a/src/gservice-interface.h b/src/gservice-interface.h index 52390b1..d3be37b 100644 --- a/src/gservice-interface.h +++ b/src/gservice-interface.h @@ -4,6 +4,9 @@ #include "gservice.h" /* initialize widgets and interface signals */ -void gfpm_interface_init (void); +void gservice_interface_init (void); + +/* free memory used by gservice */ +void gservice_interface_cleanup (void); #endif diff --git a/src/gservice-messages.c b/src/gservice-messages.c index f219167..62d2b93 100644 --- a/src/gservice-messages.c +++ b/src/gservice-messages.c @@ -116,3 +116,31 @@ gsvc_input (const char *title, const char *message, int *res) return ret; } +gboolean +gsvc_warning_special (const char *message) +{ + GtkWidget *dialog; + GtkCheckButton *button; + int res; + gboolean ret = FALSE; + + dialog = gtk_message_dialog_new (GTK_WINDOW(gsvc_main_window), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + message); + gtk_window_set_resizable (GTK_WINDOW(dialog), FALSE); + button = gtk_check_button_new_with_label (_("Do not show this warning again.")); + gtk_container_add (GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), button); + gtk_widget_show_all (GTK_WIDGET(dialog)); + res = gtk_dialog_run (GTK_DIALOG(dialog)); + if (res == GTK_RESPONSE_ACCEPT || res == GTK_RESPONSE_OK) + { + ret = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)); + } + gtk_widget_destroy (dialog); + + return ret; +} + + diff --git a/src/gservice.c b/src/gservice.c index 2cb305b..2f5d574 100644 --- a/src/gservice.c +++ b/src/gservice.c @@ -26,12 +26,14 @@ #endif #include "gservice.h" +#include "gservice-config.h" #include "gservice-messages.h" #include "gservice-interface.h" #define UI_FILE "/share/gservice/gservice.glade" -GladeXML *xml = NULL; +GladeXML *xml = NULL; +gsvc_config_t *conf = NULL; int main (int argc, char *argv[]) @@ -54,10 +56,26 @@ main (int argc, char *argv[]) } g_free (path); glade_xml_signal_autoconnect (xml); + + /* initialize configuration */ + conf = gsvc_config_new (); + if (gsvc_config_init(conf)) + { + gsvc_error (_("Error"), _("Failed to initialize configuration. Please check that a valid configuration file exists in /etc/gservice/main.conf")); + exit (1); + } + + /* initialize gservice */ gservice_interface_init (); + /* run the main loop */ gtk_main (); + + /* cleanup */ + gsvc_config_free (conf); + gservice_interface_cleanup (); + /* say goodbye! */ return 0; } _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git