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

Reply via email to