soylent r103 - trunk/src



Author: treitter
Date: Sat Mar 15 21:28:34 2008
New Revision: 103
URL: http://svn.gnome.org/viewvc/soylent?rev=103&view=rev

Log:
continued clean-ups in soylent-browser-person-view.c

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

Modified: trunk/src/soylent-browser-person-view.c
==============================================================================
--- trunk/src/soylent-browser-person-view.c	(original)
+++ trunk/src/soylent-browser-person-view.c	Sat Mar 15 21:28:34 2008
@@ -58,24 +58,23 @@
 static gboolean soylent_browser_person_selected_email_menu_update_cb
                                                 (GtkMenuToolButton *btntb_email,
                                                  gpointer user_data);
-static gboolean person_apply_edits_from_widgets_switch (gpointer key,
-                                                        gpointer value,
-                                                        gpointer user_data);
-static gboolean person_set_field_from_widget (gpointer e_contact_field,
-                                              gpointer widget_name,
-                                              gpointer user_data);
-static gboolean person_set_mail_fields_from_widgets (gpointer e_contact_field,
-                                                     gpointer widget_name,
-                                                     gpointer user_data);
-static gboolean person_set_im_field_e_vcard (SoylentBrowser* browser,
-                                             EContact* e_contact,
-                                             const gchar* widget_name,
-                                             const gchar* value);
-static void text_buffer_set_text_block_handler (GtkTextBuffer *buf,
-                                                const gchar *text,
-                                                gpointer handler);
-static void entry_set_text_block_handler (GtkEntry *entry, const gchar *text,
-                                          gpointer handler);
+static gboolean soylent_browser_person_apply_edits_from_widgets_switch
+                                                          (gpointer key,
+                                                           gpointer value,
+                                                           gpointer user_data);
+static gboolean soylent_browser_person_set_field_from_widget
+                                                      (gpointer e_contact_field,
+                                                       gpointer widget_name,
+                                                       gpointer user_data);
+static gboolean soylent_browser_person_set_mail_fields_from_widgets 
+                                                      (gpointer e_contact_field,
+                                                       gpointer widget_name,
+                                                       gpointer user_data);
+static gboolean soylent_browser_person_set_im_field_e_vcard
+                                                      (SoylentBrowser* browser,
+                                                       EContact* e_contact,
+                                                       const gchar* widget_name,
+                                                       const gchar* value);
 static gchar* soylent_browser_person_detail_add_get_cbox_val
                                                       (SoylentBrowser *browser,
                                                        const gchar *cbox_name);
@@ -84,11 +83,13 @@
 
 
 /* Adding individual details to the VCard/EContact */
-static gboolean detail_add_person_add_attr (SoylentBrowser *browser,
-                                            const gchar *attr_name,
-                                            const gchar *param_val);
-static gboolean detail_add_person_add_mail_attrs (SoylentBrowser *browser,
-                                                  const gchar *param_val);
+static gboolean soylent_browser_person_detail_add_person_add_attr
+                                                      (SoylentBrowser *browser,
+                                                       const gchar *attr_name,
+                                                       const gchar *param_val);
+static gboolean soylent_browser_person_detail_add_person_add_mail_attrs
+                                                      (SoylentBrowser *browser,
+                                                       const gchar *param_val);
 
 /* Setup/update sections of the person view UI with latest data from e-d-s */
 static void soylent_browser_person_view_update (SoylentBrowser *browser,
@@ -519,7 +520,8 @@
  *
  * Return TRUE for success, FALSE for any failure. */
 gboolean
-entry_changed_e_contact (GtkEditable *editable, gpointer user_data)
+soylent_browser_person_entry_changed_e_contact_cb (GtkEditable *editable,
+                                                   gpointer user_data)
 {
   gboolean retval = FALSE;
   cb_entry_changed_e_contact *cb_data = NULL;
@@ -760,11 +762,16 @@
     {
       if (g_str_equal (attr_name, EVC_ADR))
         {
-          retval = detail_add_person_add_mail_attrs (browser, param_val);
+          retval = soylent_browser_person_detail_add_person_add_mail_attrs
+                                                                    (browser,
+                                                                     param_val);
         }
       else
         {
-          retval = detail_add_person_add_attr (browser, attr_name, param_val);
+          retval = soylent_browser_person_detail_add_person_add_attr
+                                                                    (browser,
+                                                                     attr_name,
+                                                                     param_val);
         }
     }
 
@@ -914,7 +921,8 @@
  *
  * Return TRUE for success, FALSE for any failure. */
 gboolean
-btn_detail_add_update_simple (GtkEntry *entry_simple, gpointer user_data)
+soylent_browser_person_btn_detail_add_update_simple (GtkEntry *entry_simple,
+                                                     gpointer user_data)
 {
   gboolean retval = FALSE;
   SoylentBrowser *browser = NULL;
@@ -949,7 +957,8 @@
  *
  * Return TRUE for success, FALSE for any failure. */
 gboolean
-btn_detail_add_update_mail (GtkWidget *widget_mail, gpointer user_data)
+soylent_browser_person_btn_detail_add_update_mail (GtkWidget *widget_mail,
+                                                   gpointer user_data)
 {
   const gchar *entry_names[] = {"entry_person_mail_add_po",
                                 "entry_person_mail_add_locality",
@@ -1061,9 +1070,9 @@
       EContact *e_contact = NULL;
 
       g_hash_table_foreach_remove
-                              (edits_pending,
-                               (GHRFunc) person_apply_edits_from_widgets_switch,
-                               browser);
+              (edits_pending,
+               (GHRFunc) soylent_browser_person_apply_edits_from_widgets_switch,
+               browser);
 
       e_contact = soylent_browser_get_selected_person_e_contact (browser);
       if (e_contact)
@@ -1637,8 +1646,9 @@
  *
  * Return TRUE for success, FALSE for any failure. */
 static gboolean
-detail_add_person_add_attr (SoylentBrowser *browser, const gchar *attr_name,
-                            const gchar *param_val)
+soylent_browser_person_detail_add_person_add_attr (SoylentBrowser *browser,
+                                                   const gchar *attr_name,
+                                                   const gchar *param_val)
 {
   gboolean retval = FALSE;
   EVCard *e_vcard = NULL;
@@ -1697,8 +1707,9 @@
  *
  * Return TRUE for success, FALSE for any failure. */
 static gboolean
-detail_add_person_add_mail_attrs (SoylentBrowser *browser,
-                                  const gchar *param_val)
+soylent_browser_person_detail_add_person_add_mail_attrs
+                                                      (SoylentBrowser *browser,
+                                                       const gchar *param_val)
 {
   gboolean retval = FALSE;
   GladeXML *wtree = NULL;
@@ -1814,8 +1825,9 @@
  *
  * Return TRUE for success, FALSE for any failure. */
 static gboolean
-person_apply_edits_from_widgets_switch (gpointer key, gpointer value,
-                                        gpointer user_data)
+soylent_browser_person_apply_edits_from_widgets_switch (gpointer key,
+                                                        gpointer value,
+                                                        gpointer user_data)
 {
   gboolean ret_value = FALSE;
   SoylentBrowser *browser = NULL;
@@ -1826,17 +1838,22 @@
 
   if (g_ascii_strncasecmp (key, "mail", 4) == 0)
   {
-    ret_value = person_set_mail_fields_from_widgets (key, value, user_data);
+    ret_value = soylent_browser_person_set_mail_fields_from_widgets (key, value,
+                                                                     user_data);
   }
 
-  ret_value = person_set_field_from_widget (key, value, user_data);
+  ret_value = soylent_browser_person_set_field_from_widget (key, value,
+                                                            user_data);
 
   return ret_value;
 }
 
-/* Save a single-valued detail edit for the person being edited */
+/* Save a single-valued detail edit for the person being edited
+ *
+ * Return TRUE for success, FALSE for any failure. */
 static gboolean
-person_set_field_from_widget (gpointer key, gpointer value, gpointer user_data)
+soylent_browser_person_set_field_from_widget (gpointer key, gpointer value,
+                                              gpointer user_data)
 {
   SoylentBrowser *browser = NULL;
   GladeXML *wtree = NULL;
@@ -1893,12 +1910,12 @@
 
   /* 
    * TODO: split this detection logic out into
-   * person_apply_edits_from_widgets_switch()
+   * soylent_browser_person_apply_edits_from_widgets_switch()
    */
   if (e_contact_field == CB_DATA_FIELD_IM)
     {
-      person_set_im_field_e_vcard (browser, e_contact, widget_name,
-                                   contents_new);
+      soylent_browser_person_set_im_field_e_vcard (browser, e_contact,
+                                                   widget_name, contents_new);
     }
   else
     {
@@ -1973,8 +1990,9 @@
 /* Propagate existing mailing address changes to the person-being-edited's
  * EContact */
 static gboolean
-person_set_mail_fields_from_widgets (gpointer key, gpointer value,
-                                     gpointer user_data)
+soylent_browser_person_set_mail_fields_from_widgets (gpointer key,
+                                                     gpointer value,
+                                                     gpointer user_data)
 {
   const gchar *widget_name = NULL;
   EContactField e_contact_field = 0;
@@ -2073,8 +2091,10 @@
 /* Set a person's IM field in their EContact on the contents of a corresponding
  * widget(s) */
 static gboolean
-person_set_im_field_e_vcard (SoylentBrowser* browser, EContact* e_contact,
-                             const gchar* widget_name, const gchar* value)
+soylent_browser_person_set_im_field_e_vcard (SoylentBrowser* browser,
+                                             EContact* e_contact,
+                                             const gchar* widget_name,
+                                             const gchar* value)
 {
   GladeXML *wtree = NULL;
   GtkLabel *label = NULL;
@@ -2131,36 +2151,6 @@
   return TRUE;
 }
 
-/* Set the contents of a GtkTextBuffer without triggering its handler
- * (eg, when pre-filling them with e-d-s fields for the given person) */
-static void
-text_buffer_set_text_block_handler (GtkTextBuffer *buf, const gchar *text,
-                                    gpointer handler)
-{
-  g_signal_handlers_block_matched   (buf, G_SIGNAL_MATCH_FUNC, 0, (GQuark) 0,
-                                     NULL, handler, NULL);
-
-  gtk_text_buffer_set_text (buf, text, -1);
-
-  g_signal_handlers_unblock_matched (buf, G_SIGNAL_MATCH_FUNC, 0, (GQuark) 0,
-                                     NULL, handler, NULL);
-}
-
-/* Set the contents of a GtkEntry without triggering its handler
- * (eg, when pre-filling them with e-d-s fields for the given person) */
-static void
-entry_set_text_block_handler (GtkEntry *entry, const gchar *text,
-                              gpointer handler)
-{
-  g_signal_handlers_block_matched   (entry, G_SIGNAL_MATCH_FUNC, 0, (GQuark) 0,
-                                     NULL, handler, NULL);
-
-  gtk_entry_set_text (entry, text);
-
-  g_signal_handlers_unblock_matched (entry, G_SIGNAL_MATCH_FUNC, 0, (GQuark) 0,
-                                     NULL, handler, NULL);
-}
-
 /* Update the entire Person View UI section */
 static void
 soylent_browser_person_view_update (SoylentBrowser *browser,
@@ -2271,8 +2261,9 @@
 
       if (email_str)
         {
-          entry_set_text_block_handler (entry_email, email_str,
-                                        entry_changed_e_contact);
+          entry_set_text_block_handler
+                            (entry_email, email_str,
+                             soylent_browser_person_entry_changed_e_contact_cb);
           gtk_widget_show (GTK_WIDGET (hbox_email));
           num_entries_set_email++;
         }
@@ -2419,8 +2410,9 @@
                 {
                   gtk_label_set_text (label_im,
                                       e_vcard_attribute_get_name (attr) + 2);
-                  entry_set_text_block_handler (entry_im, im_name,
-                                                entry_changed_e_contact);
+                  entry_set_text_block_handler
+                            (entry_im, im_name,
+                             soylent_browser_person_entry_changed_e_contact_cb);
 
                   gtk_widget_show (GTK_WIDGET (hbox_im));
                 }
@@ -2596,18 +2588,24 @@
         }
 
       /* FIXME: factor out the commonality */
-      text_buffer_set_text_block_handler (tb_street, addr->street,
-                                          entry_changed_e_contact);
-      entry_set_text_block_handler (entry_po, addr->po,
-                                    entry_changed_e_contact);
-      entry_set_text_block_handler (entry_code, addr->code,
-                                    entry_changed_e_contact);
-      entry_set_text_block_handler (entry_locality, addr->locality,
-                                    entry_changed_e_contact);
-      entry_set_text_block_handler (entry_region, addr->region,
-                                    entry_changed_e_contact);
-      entry_set_text_block_handler (entry_country, addr->country,
-                                    entry_changed_e_contact);
+      text_buffer_set_text_block_handler
+                            (tb_street, addr->street,
+                             soylent_browser_person_entry_changed_e_contact_cb);
+      entry_set_text_block_handler
+                            (entry_po, addr->po,
+                             soylent_browser_person_entry_changed_e_contact_cb);
+      entry_set_text_block_handler
+                            (entry_code, addr->code,
+                             soylent_browser_person_entry_changed_e_contact_cb);
+      entry_set_text_block_handler
+                            (entry_locality, addr->locality,
+                             soylent_browser_person_entry_changed_e_contact_cb);
+      entry_set_text_block_handler
+                            (entry_region, addr->region,
+                             soylent_browser_person_entry_changed_e_contact_cb);
+      entry_set_text_block_handler
+                            (entry_country, addr->country,
+                             soylent_browser_person_entry_changed_e_contact_cb);
     }
 
   if (frames_visible > 0)
@@ -2638,7 +2636,9 @@
   /* TODO: use the <b></b> markup */
   name = display_name_from_e_contact (e_contact);
 
-  entry_set_text_block_handler (entry_name, name, entry_changed_e_contact);
+  entry_set_text_block_handler
+                            (entry_name, name,
+                             soylent_browser_person_entry_changed_e_contact_cb);
 
   /*
   soylent_debug ("\n%s\n", 
@@ -2692,8 +2692,9 @@
       phone_str = e_contact_get_const (e_contact, e_contact_fields[context]);
       if (phone_str)
         {
-          entry_set_text_block_handler (entry_phone, phone_str,
-                                        entry_changed_e_contact);
+          entry_set_text_block_handler
+                            (entry_phone, phone_str,
+                             soylent_browser_person_entry_changed_e_contact_cb);
           num_entries_set_phone++;
 
           gtk_widget_show (GTK_WIDGET (hbox_phone));
@@ -2760,8 +2761,9 @@
        * string instead of NULL */
       if (web_name && *web_name != '\0')
         {
-          entry_set_text_block_handler (entry_web, web_name,
-                                        entry_changed_e_contact);
+          entry_set_text_block_handler
+                            (entry_web, web_name,
+                             soylent_browser_person_entry_changed_e_contact_cb);
 
           num_entries_set++;
 

Modified: trunk/src/soylent-browser-person-view.h
==============================================================================
--- trunk/src/soylent-browser-person-view.h	(original)
+++ trunk/src/soylent-browser-person-view.h	Sat Mar 15 21:28:34 2008
@@ -64,7 +64,9 @@
                                                       (SoylentBrowser *browser,
                                                        SoylentPerson *person);
 
-gboolean entry_changed_e_contact (GtkEditable *editable, gpointer user_data);
+gboolean soylent_browser_person_entry_changed_e_contact_cb
+                                                        (GtkEditable *editable,
+                                                         gpointer user_data);
 void soylent_browser_person_error_chat_new_cb (MissionControl *mc,
                                                GError *error,
                                                gpointer user_data);
@@ -74,10 +76,12 @@
                                                    gpointer user_data);
 
 /* Setup/update sections of the person view UI with latest data from e-d-s */
-gboolean btn_detail_add_update_simple (GtkEntry *entry_simple,
-                                       gpointer user_data);
-gboolean btn_detail_add_update_mail (GtkWidget *widget_mail,
-                                     gpointer user_data);
+gboolean soylent_browser_person_btn_detail_add_update_simple
+                                                        (GtkEntry *entry_simple,
+                                                         gpointer user_data);
+gboolean soylent_browser_person_btn_detail_add_update_mail  
+                                                        (GtkWidget *widget_mail,
+                                                         gpointer user_data);
 gboolean soylent_browser_person_detail_add_cbox_setup
                                                     (SoylentBrowser *browser,
                                                      gboolean skip_domain_cbox);

Modified: trunk/src/soylent-browser.c
==============================================================================
--- trunk/src/soylent-browser.c	(original)
+++ trunk/src/soylent-browser.c	Sat Mar 15 21:28:34 2008
@@ -1626,97 +1626,132 @@
       /*   general */
       {"cbox_detail_domain", "changed",
        soylent_browser_person_detail_add_cbox_update, CB_DATA_SIMPLE, browser},
-      {"entry_detail_add", "changed", btn_detail_add_update_simple,
+      {"entry_detail_add", "changed",
+       soylent_browser_person_btn_detail_add_update_simple,
        CB_DATA_SIMPLE, browser},
       {"btn_detail_add", "clicked", soylent_browser_person_detail_add_commit,
        CB_DATA_SIMPLE, browser},
       /*   postal mail */
-      {"tv_person_mail_add_street", "changed", btn_detail_add_update_mail,
-       CB_DATA_SIMPLE, browser},
-      {"entry_person_mail_add_po", "changed", btn_detail_add_update_mail,
-       CB_DATA_SIMPLE, browser},
-      {"entry_person_mail_add_locality", "changed", btn_detail_add_update_mail,
-       CB_DATA_SIMPLE, browser},
-      {"entry_person_mail_add_code", "changed", btn_detail_add_update_mail,
-       CB_DATA_SIMPLE, browser},
-      {"entry_person_mail_add_region", "changed", btn_detail_add_update_mail,
-       CB_DATA_SIMPLE, browser},
-      {"entry_person_mail_add_country", "changed", btn_detail_add_update_mail,
-       CB_DATA_SIMPLE, browser},
+      {"tv_person_mail_add_street", "changed",
+       soylent_browser_person_btn_detail_add_update_mail, CB_DATA_SIMPLE,
+       browser},
+      {"entry_person_mail_add_po", "changed",
+       soylent_browser_person_btn_detail_add_update_mail, CB_DATA_SIMPLE,
+       browser},
+      {"entry_person_mail_add_locality", "changed",
+       soylent_browser_person_btn_detail_add_update_mail, CB_DATA_SIMPLE,
+       browser},
+      {"entry_person_mail_add_code", "changed",
+       soylent_browser_person_btn_detail_add_update_mail, CB_DATA_SIMPLE,
+       browser},
+      {"entry_person_mail_add_region", "changed",
+       soylent_browser_person_btn_detail_add_update_mail, CB_DATA_SIMPLE,
+       browser},
+      {"entry_person_mail_add_country", "changed",
+       soylent_browser_person_btn_detail_add_update_mail, CB_DATA_SIMPLE,
+       browser},
 
       /*
        * Editing existing Person Details
        */
       /* Name */
-      {"entry_person_name", "changed", entry_changed_e_contact,
+      {"entry_person_name", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_FULL_NAME},
 
       /* Avatar */
       /* TODO: set up avatar editing */
 
       /* Email addresses */
-      {"entry_person_email_1", "changed", entry_changed_e_contact,
+      {"entry_person_email_1", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_EMAIL_1},
-      {"entry_person_email_2", "changed", entry_changed_e_contact,
+      {"entry_person_email_2", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_EMAIL_2},
-      {"entry_person_email_3", "changed", entry_changed_e_contact,
+      {"entry_person_email_3", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_EMAIL_3},
-      {"entry_person_email_4", "changed", entry_changed_e_contact,
+      {"entry_person_email_4", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_EMAIL_4},
 
       /* Phone numbers */
-      {"entry_person_phone_home", "changed", entry_changed_e_contact,
+      {"entry_person_phone_home", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_PHONE_HOME},
-      {"entry_person_phone_work", "changed", entry_changed_e_contact,
+      {"entry_person_phone_work", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_PHONE_BUSINESS},
-      {"entry_person_phone_cell", "changed", entry_changed_e_contact,
+      {"entry_person_phone_cell", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_PHONE_MOBILE},
 
       /* XXX: pretty arbitrary and extremely noisy */
       /* Instant messenger */
       /*   home */
-      {"entry_person_im_home_1", "changed", entry_changed_e_contact,
+      {"entry_person_im_home_1", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_home_2", "changed", entry_changed_e_contact,
+      {"entry_person_im_home_2", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_home_3", "changed", entry_changed_e_contact,
+      {"entry_person_im_home_3", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_home_4", "changed", entry_changed_e_contact,
+      {"entry_person_im_home_4", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_home_5", "changed", entry_changed_e_contact,
+      {"entry_person_im_home_5", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_home_6", "changed", entry_changed_e_contact,
+      {"entry_person_im_home_6", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_home_7", "changed", entry_changed_e_contact,
+      {"entry_person_im_home_7", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_home_8", "changed", entry_changed_e_contact,
+      {"entry_person_im_home_8", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
       /*   work */
-      {"entry_person_im_work_1", "changed", entry_changed_e_contact,
+      {"entry_person_im_work_1", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_work_2", "changed", entry_changed_e_contact,
+      {"entry_person_im_work_2", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_work_3", "changed", entry_changed_e_contact,
+      {"entry_person_im_work_3", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_work_4", "changed", entry_changed_e_contact,
+      {"entry_person_im_work_4", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_work_5", "changed", entry_changed_e_contact,
+      {"entry_person_im_work_5", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_work_6", "changed", entry_changed_e_contact,
+      {"entry_person_im_work_6", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_work_7", "changed", entry_changed_e_contact,
+      {"entry_person_im_work_7", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
-      {"entry_person_im_work_8", "changed", entry_changed_e_contact,
+      {"entry_person_im_work_8", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) CB_DATA_FIELD_IM},
 
       /* Web URLs */
-      {"entry_person_web_homepage", "changed", entry_changed_e_contact,
+      {"entry_person_web_homepage", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_HOMEPAGE_URL},
-      {"entry_person_web_blog", "changed", entry_changed_e_contact,
+      {"entry_person_web_blog", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_BLOG_URL},
-      {"entry_person_web_calendar", "changed", entry_changed_e_contact,
+      {"entry_person_web_calendar", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_CALENDAR_URI},
-      {"entry_person_web_video", "changed", entry_changed_e_contact,
+      {"entry_person_web_video", "changed",
+       soylent_browser_person_entry_changed_e_contact_cb,
        CB_DATA_COMPLEX_FROM_E_CONTACT_FIELD, (void*) E_CONTACT_VIDEO_URL},
     };
   gboolean retval = FALSE;
@@ -1845,7 +1880,8 @@
         /* TODO: factor this out somewhere else, if possible */
         const gchar *context_list[] = {"home", "work", "other"};
         const gchar *signal_name = "changed";
-        const GCallback callback = G_CALLBACK (entry_changed_e_contact);
+        const GCallback callback =
+                G_CALLBACK (soylent_browser_person_entry_changed_e_contact_cb);
         gboolean connect_retval = FALSE;
         gchar *widget_name = NULL;
         cb_entry_changed_e_contact *cb_data = NULL;

Modified: trunk/src/soylent-utils.c
==============================================================================
--- trunk/src/soylent-utils.c	(original)
+++ trunk/src/soylent-utils.c	Sat Mar 15 21:28:34 2008
@@ -76,3 +76,33 @@
 
   return retval;
 }
+
+/* Set the contents of a GtkTextBuffer without triggering its handler
+ * (eg, when pre-filling them with e-d-s fields for the given person) */
+void
+text_buffer_set_text_block_handler (GtkTextBuffer *buf, const gchar *text,
+                                    gpointer handler)
+{
+  g_signal_handlers_block_matched   (buf, G_SIGNAL_MATCH_FUNC, 0, (GQuark) 0,
+                                     NULL, handler, NULL);
+
+  gtk_text_buffer_set_text (buf, text, -1);
+
+  g_signal_handlers_unblock_matched (buf, G_SIGNAL_MATCH_FUNC, 0, (GQuark) 0,
+                                     NULL, handler, NULL);
+}
+
+/* Set the contents of a GtkEntry without triggering its handler
+ * (eg, when pre-filling them with e-d-s fields for the given person) */
+void
+entry_set_text_block_handler (GtkEntry *entry, const gchar *text,
+                              gpointer handler)
+{
+  g_signal_handlers_block_matched   (entry, G_SIGNAL_MATCH_FUNC, 0, (GQuark) 0,
+                                     NULL, handler, NULL);
+
+  gtk_entry_set_text (entry, text);
+
+  g_signal_handlers_unblock_matched (entry, G_SIGNAL_MATCH_FUNC, 0, (GQuark) 0,
+                                     NULL, handler, NULL);
+}

Modified: trunk/src/soylent-utils.h
==============================================================================
--- trunk/src/soylent-utils.h	(original)
+++ trunk/src/soylent-utils.h	Sat Mar 15 21:28:34 2008
@@ -56,9 +56,12 @@
   gpointer user_data;
 };
 
-gboolean
-widget_signal_connect (GladeXML *wtree, const gchar *widget_name,
-                       const gchar *signal, gconstpointer callback,
-                       gpointer user_data);
+gboolean widget_signal_connect (GladeXML *wtree, const gchar *widget_name,
+                                const gchar *signal, gconstpointer callback,
+                                gpointer user_data);
 
+void text_buffer_set_text_block_handler (GtkTextBuffer *buf, const gchar *text,
+                                         gpointer handler);
+void entry_set_text_block_handler (GtkEntry *entry, const gchar *text,
+                                   gpointer handler);
 #endif /* _SOYLENT_UTILS_H_ */



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