soylent r61 - trunk/src



Author: treitter
Date: Fri Feb  1 07:20:51 2008
New Revision: 61
URL: http://svn.gnome.org/viewvc/soylent?rev=61&view=rev

Log:
Do some more signal setup factoring in soylent-browser.c

Modified:
   trunk/src/soylent-browser.c
   trunk/src/soylent-utils.h

Modified: trunk/src/soylent-browser.c
==============================================================================
--- trunk/src/soylent-browser.c	(original)
+++ trunk/src/soylent-browser.c	Fri Feb  1 07:20:51 2008
@@ -75,11 +75,7 @@
                                                EmpathyContact *empathy_contact);
 
 static gboolean soylent_browser_widget_setup (SoylentBrowser *browser);
-static gboolean soylent_browser_dialog_signals_setup (SoylentBrowser *browser);
-static void soylent_browser_person_actions_signals_setup
-                                                      (SoylentBrowser *browser);
-static void soylent_browser_person_icons_signals_setup
-                                                      (SoylentBrowser *browser);
+static gboolean soylent_browser_simple_signals_setup (SoylentBrowser *browser);
 static void soylent_browser_person_info_avatar_signals_setup
                                                       (SoylentBrowser *browser);
 static void soylent_browser_person_info_email_signals_setup
@@ -96,7 +92,6 @@
                                                       (SoylentBrowser *browser);
 static void soylent_browser_person_detail_add_signals_setup
                                                       (SoylentBrowser *browser);
-static void soylent_browser_presence_signals_setup (SoylentBrowser *browser);
 static gboolean soylent_browser_signals_setup (SoylentBrowser *browser);
 
 /* Instantiate the main SoylentBrowser */
@@ -1633,23 +1628,45 @@
  *
  * Return TRUE for success, for FALSE for any failure */
 static gboolean
-soylent_browser_dialog_signals_setup (SoylentBrowser *browser)
+soylent_browser_simple_signals_setup (SoylentBrowser *browser)
 {
   widget_signal_args_t signal_handlers[] =
     {
+      /* Main app window */
+      {"window_main", "delete-event", soylent_browser_delete_cb, browser},
+
+      /* People icons in main icon view */
+      {"iv_people", "selection-changed",
+       soylent_browser_person_selection_changed_cb, browser},
+      {"iv_people", "item_activated", soylent_browser_person_icon_activated_cb,
+       browser},
+
+      /* Set Online Presence combo box */
+      {"cbox_presence", "changed", soylent_browser_presence_set_cb, browser},
+
+      /* Person action buttons */
+      {"btn_new_person", "clicked", soylent_browser_person_action_new_person_cb,
+       browser},
+      {"btn_delete_people", "clicked",
+       soylent_browser_person_action_delete_selected_cb, browser},
+      {"btn_edit_person", "clicked",
+       soylent_browser_person_action_edit_selected_cb, browser},
+      {"btntb_email", "clicked",
+       soylent_browser_person_action_email_menu_tool_button_cb, browser},
+      {"btntb_chat", "clicked",
+       soylent_browser_person_action_chat_menu_tool_button_cb, browser},
+
+      /* "Save Changes?" dialog */
       {"btn_delete_person_cancel", "clicked", 
        soylent_browser_person_action_delete_selected_hide_dialog_cb, browser,},
-
       {"btn_delete_person_confirm", "clicked", 
        soylent_browser_person_action_delete_selected_finalize_cb, browser},
-
       {"dia_delete_person_confirm", "delete-event", gtk_widget_hide_on_delete,
        browser},
     };
-
   gboolean retval = FALSE;
   GladeXML *wtree = NULL;
-  const guint signals_num = WIDGET_SIGNAL_ARGS_LEN (signal_handlers);
+  guint signals_num = -1;
   guint i = -1;
 
   g_return_val_if_fail (browser != NULL, retval);
@@ -1657,6 +1674,9 @@
   g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
    */
 
+  wtree = browser->main_window;
+  signals_num = ARRAY_LEN (signal_handlers);
+
   /* invert usual logic to simplify the loop below */
   retval = TRUE;
 
@@ -1682,6 +1702,7 @@
 }
 
 /* Hook up handlers for actions related to setting our own presence */
+/*
 static void
 soylent_browser_presence_signals_setup (SoylentBrowser *browser)
 {
@@ -1694,8 +1715,10 @@
   g_signal_connect (G_OBJECT (cbox_presence), "changed",
                     G_CALLBACK (soylent_browser_presence_set_cb), browser);
 }
+*/
 
 /* Hook up the action button/menu handlers */
+/*
 static void
 soylent_browser_person_actions_signals_setup (SoylentBrowser *browser)
 {
@@ -1736,8 +1759,10 @@
            G_CALLBACK (soylent_browser_person_action_chat_menu_tool_button_cb),
            browser);
 }
+*/
 
 /* Hook up signals dealing with actions on people representations (icons) */
+/*
 static void
 soylent_browser_person_icons_signals_setup (SoylentBrowser *browser)
 {
@@ -1751,6 +1776,7 @@
                     G_CALLBACK (soylent_browser_person_selection_changed_cb),
                     browser);
 }
+*/
 
 /* Hook up handlers for peoples' existing image edits */
 static void
@@ -1923,6 +1949,7 @@
 
   wtree = browser->main_window;
 
+  /* FIXME: replace this sizeof calculation with ARRAY_LEN() */
   for (context = 0; context < sizeof (e_contact_fields) / sizeof (const guint*);
         context++)
     {
@@ -2035,6 +2062,8 @@
                     G_CALLBACK (soylent_browser_person_view_save_finalize_cb),
                     browser);
 
+  /* FIXME: factor these a little more, and push their contents into this
+   * function; use an array like in *_dialog_signals_setup() */
   soylent_browser_person_info_avatar_signals_setup (browser);
   soylent_browser_person_info_email_signals_setup  (browser);
   soylent_browser_person_info_phone_signals_setup  (browser);
@@ -2050,28 +2079,22 @@
 soylent_browser_signals_setup (SoylentBrowser *browser)
 {
   gboolean retval = FALSE;
-  gboolean dialog_signals_retval = FALSE;
+  gboolean simple_signals_retval = FALSE;
   GladeXML *wtree = NULL;
-  GtkWidget *widget = NULL;
+
+  g_return_val_if_fail (browser != NULL, retval);
+  /* FIXME: uncomment once SoylentBrowser is a GObject:
+  g_return_val_if_fail (SOYLENT_IS_BROWSER (browser), retval);
+   */
 
   wtree = browser->main_window;
 
-  dialog_signals_retval = soylent_browser_dialog_signals_setup (browser);
-  soylent_browser_person_actions_signals_setup    (browser);
-  soylent_browser_person_icons_signals_setup      (browser);
+  /* FIXME: check this return value, etc. */
+  simple_signals_retval = soylent_browser_simple_signals_setup (browser);
+
+  /* FIXME: simplify these like simple_signals_setup, above */
   soylent_browser_person_info_signals_setup       (browser);
   soylent_browser_person_detail_add_signals_setup (browser);
-  soylent_browser_presence_signals_setup          (browser);
-
-  widget = glade_xml_get_widget (wtree, "iv_people");
-  g_signal_connect (G_OBJECT (widget), "item_activated",
-                    G_CALLBACK (soylent_browser_person_icon_activated_cb),
-                    browser);
-
-  /* Have the delete event (window close) end the program */
-  widget = glade_xml_get_widget (wtree, "window_main");
-  g_signal_connect (G_OBJECT (widget), "delete-event",
-                    G_CALLBACK (soylent_browser_delete_cb), browser);
 
   /* FIXME: only set this if everything above succeeds */
   retval = TRUE;

Modified: trunk/src/soylent-utils.h
==============================================================================
--- trunk/src/soylent-utils.h	(original)
+++ trunk/src/soylent-utils.h	Fri Feb  1 07:20:51 2008
@@ -30,7 +30,7 @@
 
 #define STRING_NULL_OR_EMPTY(x) ((!(x)) || (g_str_equal ((x), "")))
 
-#define WIDGET_SIGNAL_ARGS_LEN(x) ((sizeof (x)) / sizeof (widget_signal_args_t))
+#define ARRAY_LEN(x) ((sizeof (x)) / sizeof (x[0]))
 
 typedef struct widget_signal_args_tag widget_signal_args_t;
 struct widget_signal_args_tag



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]