soylent r65 - trunk/src
- From: treitter svn gnome org
- To: svn-commits-list gnome org
- Subject: soylent r65 - trunk/src
- Date: Sun, 10 Feb 2008 23:57:43 +0000 (GMT)
Author: treitter
Date: Sun Feb 10 23:57:43 2008
New Revision: 65
URL: http://svn.gnome.org/viewvc/soylent?rev=65&view=rev
Log:
begin factoring the signal setup functions in soylent-browser.c; make most of the arguments to widget_signal_connect const
Modified:
trunk/src/soylent-browser.c
trunk/src/soylent-utils.c
trunk/src/soylent-utils.h
Modified: trunk/src/soylent-browser.c
==============================================================================
--- trunk/src/soylent-browser.c (original)
+++ trunk/src/soylent-browser.c Sun Feb 10 23:57:43 2008
@@ -78,7 +78,7 @@
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
+static gboolean soylent_browser_person_info_email_signals_setup
(SoylentBrowser *browser);
static void soylent_browser_person_info_phone_signals_setup
(SoylentBrowser *browser);
@@ -1699,83 +1699,6 @@
return retval;
}
-/* Hook up handlers for actions related to setting our own presence */
-/*
-static void
-soylent_browser_presence_signals_setup (SoylentBrowser *browser)
-{
- GladeXML *wtree = NULL;
- GtkComboBox *cbox_presence = NULL;
-
- wtree = browser->main_window;
- cbox_presence = GTK_COMBO_BOX (glade_xml_get_widget (wtree, "cbox_presence"));
-
- 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)
-{
- GladeXML *wtree = NULL;
- GtkButton *btn_new_person = NULL;
- GtkButton *btn_delete_people = NULL;
- GtkButton *btn_edit_people = NULL;
- GtkMenuToolButton *btntb_email = NULL;
- GtkMenuToolButton *btntb_chat = NULL;
-
- wtree = browser->main_window;
- btn_new_person = GTK_BUTTON (glade_xml_get_widget (wtree, "btn_new_person"));
- btn_delete_people = GTK_BUTTON (glade_xml_get_widget (wtree,
- "btn_delete_people"));
- btn_edit_people = GTK_BUTTON (glade_xml_get_widget (wtree,
- "btn_edit_person"));
- btntb_email = GTK_MENU_TOOL_BUTTON (glade_xml_get_widget (wtree,
- "btntb_email"));
- btntb_chat = GTK_MENU_TOOL_BUTTON (glade_xml_get_widget (wtree,
- "btntb_chat"));
-
- g_signal_connect (G_OBJECT (btn_new_person), "clicked",
- G_CALLBACK (soylent_browser_person_action_new_person_cb),
- browser);
- g_signal_connect
- (G_OBJECT (btn_delete_people), "clicked",
- G_CALLBACK (soylent_browser_person_action_delete_selected_cb),
- browser);
- g_signal_connect (G_OBJECT (btn_edit_people), "clicked",
- G_CALLBACK (soylent_browser_person_action_edit_selected_cb),
- browser);
- g_signal_connect
- (G_OBJECT (btntb_email), "clicked",
- G_CALLBACK (soylent_browser_person_action_email_menu_tool_button_cb),
- browser);
- g_signal_connect
- (G_OBJECT (btntb_chat), "clicked",
- 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)
-{
- GladeXML *wtree = NULL;
- GtkIconView *iv_people = NULL;
-
- wtree = browser->main_window;
- iv_people = GTK_ICON_VIEW (glade_xml_get_widget (wtree, "iv_people"));
-
- g_signal_connect (G_OBJECT (iv_people), "selection-changed",
- G_CALLBACK (soylent_browser_person_selection_changed_cb),
- browser);
-}
-*/
-
/* Hook up handlers for peoples' existing image edits */
static void
soylent_browser_person_info_avatar_signals_setup (SoylentBrowser *browser)
@@ -1784,36 +1707,84 @@
}
/* Hook up handlers for edits to peoples' existing email addresses */
-static void
+static gboolean
soylent_browser_person_info_email_signals_setup (SoylentBrowser *browser)
{
+#if 0
+ widget_signal_args_t signal_handlers_template[] =
+ {
+ /* Person Details email edit box */
+ {NULL, "changed", entry_changed_e_contact, NULL},
+ };
+#endif
+ gboolean retval = FALSE;
GladeXML *wtree = NULL;
+ /*
GtkEntry *entry_email = NULL;
- guint email_pos = 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;
- for (email_pos = 0; email_pos < MAX_GUI_EMAIL; email_pos++)
+ /* invert usual logic to simplify the loop below */
+ retval = TRUE;
+
+ for (i = 0; i < MAX_GUI_EMAIL; i++)
{
- gchar *widget_str = NULL;
+ gboolean connect_retval = FALSE;
+ const gchar *signal_name = "changed";
+ gchar *widget_name = NULL;
cb_entry_changed_e_contact *cb_data = NULL;
- widget_str = g_strdup_printf ("entry_person_email_%c", '1' + email_pos);
+ widget_name = g_strdup_printf ("entry_person_email_%c", '1' + i);
+ /*
entry_email = GTK_ENTRY (glade_xml_get_widget (wtree, widget_str));
+ */
cb_data = g_new0 (cb_entry_changed_e_contact, 1);
-
cb_data->browser = browser;
- cb_data->widget_name = g_strdup (widget_str);
- g_free (widget_str);
+ cb_data->widget_name = g_strdup (widget_name);
cb_data->field = g_new0 (EContactField, 1);
- *(cb_data->field) = E_CONTACT_EMAIL_1 + email_pos;
+ *(cb_data->field) = E_CONTACT_EMAIL_1 + i;
/* FIXME - use g_signal_connect_data so we can eventually free
* each instance of cb_data */
+ /*
g_signal_connect (G_OBJECT (entry_email), "changed",
G_CALLBACK (entry_changed_e_contact), cb_data);
+ */
+
+ if (cb_data)
+ {
+ /* FIXME - use a version which uses g_signal_connect_data so we can
+ * eventually free each instance of cb_data */
+ connect_retval = widget_signal_connect (wtree, widget_name,
+ signal_name,
+ entry_changed_e_contact,
+ cb_data);
+
+ if (!connect_retval)
+ {
+ g_critical ("failed to set up signal handler for widget %s::%s\n",
+ widget_name, signal_name);
+ retval = FALSE;
+ }
+ }
+ else
+ {
+ g_critical ("failed to set up callback data for widget %s::%s\n",
+ widget_name, signal_name);
+ }
+
+ g_free (widget_name);
}
+
+ return retval;
}
/* Hook up handlers for edits to peoples' existing phone numbers */
@@ -2061,7 +2032,7 @@
browser);
/* FIXME: factor these a little more, and push their contents into this
- * function; use an array like in *_dialog_signals_setup() */
+ * function; use an array like in *_simple_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);
Modified: trunk/src/soylent-utils.c
==============================================================================
--- trunk/src/soylent-utils.c (original)
+++ trunk/src/soylent-utils.c Sun Feb 10 23:57:43 2008
@@ -32,8 +32,9 @@
*
* Return TRUE for success, FALSE for any failure */
gboolean
-widget_signal_connect (GladeXML *wtree, gchar *widget_name, gchar *signal,
- gpointer callback, gpointer user_data)
+widget_signal_connect (GladeXML *wtree, const gchar *widget_name,
+ const gchar *signal, gconstpointer callback,
+ gpointer user_data)
{
gboolean retval = FALSE;
GtkWidget *widget = NULL;
Modified: trunk/src/soylent-utils.h
==============================================================================
--- trunk/src/soylent-utils.h (original)
+++ trunk/src/soylent-utils.h Sun Feb 10 23:57:43 2008
@@ -45,7 +45,8 @@
};
gboolean
-widget_signal_connect (GladeXML *wtree, gchar *widget_name, gchar *signal,
- gpointer callback, gpointer user_data);
+widget_signal_connect (GladeXML *wtree, const gchar *widget_name,
+ const gchar *signal, gconstpointer callback,
+ gpointer user_data);
#endif /* _SOYLENT_UTILS_H_ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]