soylent r76 - trunk/src
- From: treitter svn gnome org
- To: svn-commits-list gnome org
- Subject: soylent r76 - trunk/src
- Date: Mon, 11 Feb 2008 07:01:01 +0000 (GMT)
Author: treitter
Date: Mon Feb 11 07:01:01 2008
New Revision: 76
URL: http://svn.gnome.org/viewvc/soylent?rev=76&view=rev
Log:
Simplify the signal setup function for adding new details
Modified:
trunk/src/soylent-browser.c
Modified: trunk/src/soylent-browser.c
==============================================================================
--- trunk/src/soylent-browser.c (original)
+++ trunk/src/soylent-browser.c Mon Feb 11 07:01:01 2008
@@ -90,7 +90,7 @@
(SoylentBrowser *browser);
static void soylent_browser_person_info_signals_setup
(SoylentBrowser *browser);
-static void soylent_browser_person_detail_add_signals_setup
+static gboolean soylent_browser_person_detail_add_signals_setup
(SoylentBrowser *browser);
static gboolean soylent_browser_signals_setup (SoylentBrowser *browser);
@@ -1654,6 +1654,11 @@
{"btntb_chat", "clicked",
soylent_browser_person_action_chat_menu_tool_button_cb, browser},
+ /* Adding new details to a person */
+ {"cbox_detail_domain", "changed", cbox_detail_type_update, browser},
+ {"entry_detail_add", "changed", btn_detail_add_update, browser},
+ {"btn_detail_add", "clicked", commit_detail_add, browser},
+
/* "Save Changes?" dialog */
{"btn_delete_person_cancel", "clicked",
soylent_browser_person_action_delete_selected_hide_dialog_cb, browser,},
@@ -2102,51 +2107,55 @@
return retval;
}
-/* Hook up handlers for actions on widgets in the Detail Add UI section */
-static void
+/* Hook up handlers for actions on widgets in the Detail Add UI section
+ *
+ * Return TRUE for success, FALSE for any failure. */
+static gboolean
soylent_browser_person_detail_add_signals_setup (SoylentBrowser *browser)
{
+ gboolean retval = FALSE;
GladeXML *wtree = NULL;
- GtkComboBox *cbox_detail_domain = NULL;
- GtkEntry *entry_detail_add = NULL;
- GtkButton *btn_detail_add = NULL;
- gint i = 0;
+ guint i = 0;
+
+ 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;
- cbox_detail_domain = GTK_COMBO_BOX (glade_xml_get_widget (wtree,
- "cbox_detail_domain"));
- entry_detail_add = GTK_ENTRY (glade_xml_get_widget (wtree,
- "entry_detail_add"));
- btn_detail_add = GTK_BUTTON (glade_xml_get_widget (wtree, "btn_detail_add"));
-
- g_signal_connect (G_OBJECT (cbox_detail_domain), "changed",
- G_CALLBACK (cbox_detail_type_update), browser);
- g_signal_connect (G_OBJECT (entry_detail_add), "changed",
- G_CALLBACK (btn_detail_add_update), browser);
- g_signal_connect (G_OBJECT (btn_detail_add), "clicked",
- G_CALLBACK (commit_detail_add), browser);
- /* Set up 'changed' signals for the mail "Detail Add" fields */
+ /* invert usual logic to simplify the loop below */
+ retval = TRUE;
+
for (i = 0; i < MAIL_FIELDS_NUM; i++)
{
- GObject *widget_cur = NULL;
+ const gchar *signal_name = "changed";
+ const GCallback callback = G_CALLBACK (btn_detail_add_update);
+ gboolean connect_retval = FALSE;
gchar *widget_name = NULL;
widget_name = g_strdup_printf ("%s_person_mail_add_%s",
MAIL_WIDGET_TYPE_STRS[i],
MAIL_FIELD_STRS[i]);
- widget_cur = G_OBJECT (glade_xml_get_widget (wtree, widget_name));
- if (GTK_IS_TEXT_VIEW (widget_cur))
- {
- widget_cur = G_OBJECT (gtk_text_view_get_buffer (GTK_TEXT_VIEW
- (widget_cur)));
- }
- g_signal_connect (widget_cur, "changed",
- G_CALLBACK (btn_detail_add_update), browser);
+ connect_retval = widget_signal_connect (wtree, widget_name, signal_name,
+ callback, browser);
+ if (connect_retval)
+ {
+ /* success */
+ }
+ else
+ {
+ g_critical ("failed to set up signal handler for widget "
+ "%s::%s\n", widget_name, signal_name);
+
+ retval = FALSE;
+ }
g_free (widget_name);
}
+
+ return retval;
}
/* Hook up handlers for all the people-detail-editing-related widgets */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]