[empathy] builder: move empathy_builder_* from Empathy to tp-account-widgets



commit 1f633bf20747995395b1dcc7001e0c9502104eda
Author: Marco Barisione <marco barisione collabora co uk>
Date:   Thu May 9 15:50:15 2013 +0100

    builder: move empathy_builder_* from Empathy to tp-account-widgets
    
    This commit also changes the licence of the moved code from GPL to LGPL.
    See GOSSIP-RELICENSING.txt for details.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=699492

 libempathy-gtk/empathy-chat.c                    |    5 +-
 libempathy-gtk/empathy-contact-blocking-dialog.c |    5 +-
 libempathy-gtk/empathy-contact-widget.c          |    3 +-
 libempathy-gtk/empathy-individual-widget.c       |    3 +-
 libempathy-gtk/empathy-log-window.c              |    5 +-
 libempathy-gtk/empathy-search-bar.c              |    5 +-
 libempathy-gtk/empathy-status-preset-dialog.c    |    5 +-
 libempathy-gtk/empathy-ui-utils.c                |  148 --------------------
 libempathy-gtk/empathy-ui-utils.h                |   14 --
 src/empathy-accounts-dialog.c                    |    5 +-
 src/empathy-call-window-fullscreen.c             |    4 +-
 src/empathy-call-window.c                        |    5 +-
 src/empathy-chat-window.c                        |    5 +-
 src/empathy-chatrooms-window.c                   |   23 ++--
 src/empathy-ft-manager.c                         |    7 +-
 src/empathy-import-widget.c                      |    5 +-
 src/empathy-new-chatroom-dialog.c                |    5 +-
 src/empathy-preferences.c                        |    3 +-
 src/empathy-roster-window.c                      |    5 +-
 src/empathy-status-icon.c                        |    6 +-
 tp-account-widgets/tpaw-account-widget-irc.c     |    9 +-
 tp-account-widgets/tpaw-account-widget-sip.c     |    7 +-
 tp-account-widgets/tpaw-account-widget.c         |   33 +++---
 tp-account-widgets/tpaw-builder.c                |  156 ++++++++++++++++++++++
 tp-account-widgets/tpaw-builder.h                |   18 +++
 tp-account-widgets/tpaw-irc-network-dialog.c     |    5 +-
 26 files changed, 265 insertions(+), 229 deletions(-)
---
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 5bdc7ba..dd6208b 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -34,6 +34,7 @@
 
 #include <glib/gi18n-lib.h>
 #include <tp-account-widgets/tpaw-keyring.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-client-factory.h"
 #include "empathy-gsettings.h"
@@ -3251,7 +3252,7 @@ chat_create_ui (EmpathyChat *chat)
 
        filename = empathy_file_lookup ("empathy-chat.ui",
                                        "libempathy-gtk");
-       gui = empathy_builder_get_file (filename,
+       gui = tpaw_builder_get_file (filename,
                                        "chat_widget", &priv->widget,
                                        "hpaned", &priv->hpaned,
                                        "vbox_left", &priv->vbox_left,
@@ -3264,7 +3265,7 @@ chat_create_ui (EmpathyChat *chat)
                                        "info_bar_vbox", &priv->info_bar_vbox,
                                        NULL);
 
-       empathy_builder_connect (gui, chat,
+       tpaw_builder_connect (gui, chat,
                "expander_topic", "notify::expanded", chat_topic_expander_activate_cb,
                "label_topic", "size-allocate", chat_topic_label_size_allocate_cb,
                NULL);
diff --git a/libempathy-gtk/empathy-contact-blocking-dialog.c 
b/libempathy-gtk/empathy-contact-blocking-dialog.c
index ddcbcf3..046356a 100644
--- a/libempathy-gtk/empathy-contact-blocking-dialog.c
+++ b/libempathy-gtk/empathy-contact-blocking-dialog.c
@@ -26,6 +26,7 @@
 #include "empathy-contact-blocking-dialog.h"
 
 #include <glib/gi18n-lib.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-account-chooser.h"
 #include "empathy-ui-utils.h"
@@ -614,7 +615,7 @@ empathy_contact_blocking_dialog_init (EmpathyContactBlockingDialog *self)
   filename = empathy_file_lookup ("empathy-contact-blocking-dialog.ui",
       "libempathy-gtk");
 
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "contents", &contents,
       "account-hbox", &account_hbox,
       "add-button", &self->priv->add_button,
@@ -626,7 +627,7 @@ empathy_contact_blocking_dialog_init (EmpathyContactBlockingDialog *self)
       "remove-toolbar", &remove_toolbar,
       NULL);
 
-  empathy_builder_connect (gui, self,
+  tpaw_builder_connect (gui, self,
       "add-button", "clicked", contact_blocking_dialog_add_contact,
       "add-contact-entry", "activate", contact_blocking_dialog_add_contact,
       "remove-button", "clicked", contact_blocking_dialog_remove_contacts,
diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c
index 80a1aaf..be0b745 100644
--- a/libempathy-gtk/empathy-contact-widget.c
+++ b/libempathy-gtk/empathy-contact-widget.c
@@ -23,6 +23,7 @@
 #include "empathy-contact-widget.h"
 
 #include <glib/gi18n-lib.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-avatar-image.h"
 #include "empathy-client-factory.h"
@@ -660,7 +661,7 @@ empathy_contact_widget_new (EmpathyContact *contact)
 
   filename = empathy_file_lookup ("empathy-contact-widget.ui",
       "libempathy-gtk");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
        "vbox_contact_widget", &main_vbox,
        "hbox_presence", &self->priv->hbox_presence,
        "label_alias", &self->priv->label_alias,
diff --git a/libempathy-gtk/empathy-individual-widget.c b/libempathy-gtk/empathy-individual-widget.c
index a267a7d..e24aead 100644
--- a/libempathy-gtk/empathy-individual-widget.c
+++ b/libempathy-gtk/empathy-individual-widget.c
@@ -23,6 +23,7 @@
 #include "empathy-individual-widget.h"
 
 #include <glib/gi18n-lib.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #ifdef HAVE_LIBCHAMPLAIN
 #include <champlain/champlain.h>
@@ -1965,7 +1966,7 @@ empathy_individual_widget_init (EmpathyIndividualWidget *self)
 
   filename = empathy_file_lookup ("empathy-individual-widget.ui",
       "libempathy-gtk");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "scrolled_window_individual", &priv->scrolled_window_individual,
       "viewport_individual", &priv->viewport_individual,
       "vbox_individual_widget", &priv->vbox_individual_widget,
diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c
index a815c45..fa7753e 100644
--- a/libempathy-gtk/empathy-log-window.c
+++ b/libempathy-gtk/empathy-log-window.c
@@ -27,6 +27,7 @@
 
 #include <glib/gi18n-lib.h>
 #include <telepathy-glib/proxy-subclass.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "action-chain-internal.h"
 #include "empathy-account-chooser.h"
@@ -629,7 +630,7 @@ empathy_log_window_init (EmpathyLogWindow *self)
   gtk_window_set_default_size (GTK_WINDOW (self), 800, 600);
 
   filename = empathy_file_lookup ("empathy-log-window.ui", "libempathy-gtk");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "vbox1", &self->priv->vbox,
       "toolbutton_profile", &self->priv->button_profile,
       "toolbutton_chat", &self->priv->button_chat,
@@ -647,7 +648,7 @@ empathy_log_window_init (EmpathyLogWindow *self)
       NULL);
   g_free (filename);
 
-  empathy_builder_connect (gui, self,
+  tpaw_builder_connect (gui, self,
       "toolbutton_profile", "clicked", toolbutton_profile_clicked,
       "toolbutton_chat", "clicked", toolbutton_chat_clicked,
       "toolbutton_call", "clicked", toolbutton_av_clicked,
diff --git a/libempathy-gtk/empathy-search-bar.c b/libempathy-gtk/empathy-search-bar.c
index dce1bdd..1ffdc1d 100644
--- a/libempathy-gtk/empathy-search-bar.c
+++ b/libempathy-gtk/empathy-search-bar.c
@@ -21,6 +21,7 @@
 #include "empathy-search-bar.h"
 
 #include <glib/gi18n-lib.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-ui-utils.h"
 #include "empathy-utils.h"
@@ -263,7 +264,7 @@ empathy_search_bar_init (EmpathySearchBar * self)
   self->priv = priv;
 
   filename = empathy_file_lookup ("empathy-search-bar.ui", "libempathy-gtk");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "search_widget", &internal,
       "search_close", &priv->search_close,
       "search_entry", &priv->search_entry,
@@ -275,7 +276,7 @@ empathy_search_bar_init (EmpathySearchBar * self)
   g_free (filename);
 
   /* Add the signals */
-  empathy_builder_connect (gui, self,
+  tpaw_builder_connect (gui, self,
       "search_close", "clicked", empathy_search_bar_close_cb,
       "search_entry", "changed", empathy_search_bar_entry_changed,
       "search_previous", "clicked", empathy_search_bar_previous_cb,
diff --git a/libempathy-gtk/empathy-status-preset-dialog.c b/libempathy-gtk/empathy-status-preset-dialog.c
index b122f28..f487b8c 100644
--- a/libempathy-gtk/empathy-status-preset-dialog.c
+++ b/libempathy-gtk/empathy-status-preset-dialog.c
@@ -38,6 +38,7 @@
 #include "empathy-status-preset-dialog.h"
 
 #include <glib/gi18n-lib.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-status-presets.h"
 #include "empathy-ui-utils.h"
@@ -298,7 +299,7 @@ empathy_status_preset_dialog_init (EmpathyStatusPresetDialog *self)
 
        filename = empathy_file_lookup ("empathy-status-preset-dialog.ui",
                        "libempathy-gtk");
-       gui = empathy_builder_get_file (filename,
+       gui = tpaw_builder_get_file (filename,
                        "toplevel-vbox", &toplevel_vbox,
                        "presets-sw", &presets_sw,
                        "presets-treeview", &priv->presets_treeview,
@@ -321,7 +322,7 @@ empathy_status_preset_dialog_init (EmpathyStatusPresetDialog *self)
                        remove_button);
        gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
 
-       empathy_builder_connect (gui, self,
+       tpaw_builder_connect (gui, self,
                        "remove-button", "clicked", status_preset_dialog_preset_remove,
                        NULL);
 
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index ec868a3..cd74620 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -75,154 +75,6 @@ empathy_gtk_init (void)
   initialized = TRUE;
 }
 
-enum _BuilderSource
-{
-  BUILDER_SOURCE_FILE,
-  BUILDER_SOURCE_RESOURCE
-};
-
-static GtkBuilder *
-builder_get_valist (const gchar *sourcename,
-    enum _BuilderSource source,
-    const gchar *first_object,
-    va_list args)
-{
-  GtkBuilder *gui;
-  const gchar *name;
-  GObject **object_ptr;
-  GError *error = NULL;
-  gboolean success;
-
-  DEBUG ("Loading %s '%s'", source == BUILDER_SOURCE_FILE ? "file" : "resource", sourcename);
-
-  gui = gtk_builder_new ();
-  gtk_builder_set_translation_domain (gui, GETTEXT_PACKAGE);
-
-  switch (source)
-    {
-    case BUILDER_SOURCE_FILE:
-      success = gtk_builder_add_from_file (gui, sourcename, &error);
-      break;
-    case BUILDER_SOURCE_RESOURCE:
-      success = gtk_builder_add_from_resource (gui, sourcename, &error);
-      break;
-    default:
-      g_assert_not_reached ();
-    }
-
-  if (!success)
-    {
-      g_critical ("GtkBuilder Error (%s): %s",
-          sourcename, error->message);
-
-      g_clear_error (&error);
-      g_object_unref (gui);
-
-      /* we need to iterate and set all of the pointers to NULL */
-      for (name = first_object; name; name = va_arg (args, const gchar *))
-        {
-          object_ptr = va_arg (args, GObject**);
-
-          *object_ptr = NULL;
-        }
-
-      return NULL;
-    }
-
-  for (name = first_object; name; name = va_arg (args, const gchar *))
-    {
-      object_ptr = va_arg (args, GObject**);
-
-      *object_ptr = gtk_builder_get_object (gui, name);
-
-      if (!*object_ptr)
-        {
-          g_warning ("File is missing object '%s'.", name);
-          continue;
-        }
-    }
-
-  return gui;
-}
-
-GtkBuilder *
-empathy_builder_get_file (const gchar *filename,
-    const gchar *first_object,
-    ...)
-{
-  GtkBuilder *gui;
-  va_list args;
-
-  va_start (args, first_object);
-  gui = builder_get_valist (filename, BUILDER_SOURCE_FILE, first_object, args);
-  va_end (args);
-
-  return gui;
-}
-
-GtkBuilder *
-empathy_builder_get_resource (const gchar *resourcename,
-    const gchar *first_object,
-    ...)
-{
-  GtkBuilder *gui;
-  va_list args;
-
-  va_start (args, first_object);
-  gui = builder_get_valist (resourcename, BUILDER_SOURCE_RESOURCE, first_object, args);
-  va_end (args);
-
-  return gui;
-}
-
-void
-empathy_builder_connect (GtkBuilder *gui,
-    gpointer user_data,
-    const gchar *first_object,
-    ...)
-{
-  va_list args;
-  const gchar *name;
-  const gchar *sig;
-  GObject *object;
-  GCallback callback;
-
-  va_start (args, first_object);
-  for (name = first_object; name; name = va_arg (args, const gchar *))
-    {
-      sig = va_arg (args, const gchar *);
-      callback = va_arg (args, GCallback);
-
-      object = gtk_builder_get_object (gui, name);
-      if (!object)
-        {
-          g_warning ("File is missing object '%s'.", name);
-          continue;
-        }
-
-      g_signal_connect (object, sig, callback, user_data);
-    }
-
-  va_end (args);
-}
-
-GtkWidget *
-empathy_builder_unref_and_keep_widget (GtkBuilder *gui,
-    GtkWidget *widget)
-{
-  /* On construction gui sinks the initial reference to widget. When gui
-   * is finalized it will drop its ref to widget. We take our own ref to
-   * prevent widget being finalised. The widget is forced to have a
-   * floating reference, like when it was initially unowned so that it can
-   * be used like any other GtkWidget. */
-
-  g_object_ref (widget);
-  g_object_force_floating (G_OBJECT (widget));
-  g_object_unref (gui);
-
-  return widget;
-}
-
 const gchar *
 empathy_icon_name_for_presence (TpConnectionPresenceType presence)
 {
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index baf250e..13559d8 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -54,20 +54,6 @@ typedef void (*EmpathyPixbufAvatarFromIndividualCb) (
 
 void empathy_gtk_init (void);
 
-/* Glade */
-GtkBuilder * empathy_builder_get_file (const gchar *filename,
-    const gchar *first_object,
-    ...);
-GtkBuilder * empathy_builder_get_resource (const gchar *resourcename,
-    const gchar *first_object,
-    ...);
-void empathy_builder_connect (GtkBuilder *gui,
-    gpointer user_data,
-    const gchar *first_object,
-    ...);
-GtkWidget * empathy_builder_unref_and_keep_widget (GtkBuilder *gui,
-    GtkWidget *root);
-
 /* Pixbufs */
 const gchar * empathy_icon_name_for_presence (
     TpConnectionPresenceType presence);
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index 42bf35d..53f6997 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -29,6 +29,7 @@
 
 #include <glib/gi18n-lib.h>
 #include <tp-account-widgets/tpaw-account-widget.h>
+#include <tp-account-widgets/tpaw-builder.h>
 #include <tp-account-widgets/tpaw-utils.h>
 
 #include "empathy-accounts-common.h"
@@ -2283,7 +2284,7 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog)
 
   filename = empathy_file_lookup ("empathy-accounts-dialog.ui", "src");
 
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "accounts_dialog_hbox", &top_hbox,
       "vbox_details", &priv->vbox_details,
       "alignment_settings", &priv->alignment_settings,
@@ -2299,7 +2300,7 @@ accounts_dialog_build_ui (EmpathyAccountsDialog *dialog)
       NULL);
   g_free (filename);
 
-  empathy_builder_connect (gui, dialog,
+  tpaw_builder_connect (gui, dialog,
       "button_add", "clicked", accounts_dialog_button_add_clicked_cb,
       "button_remove", "clicked", accounts_dialog_button_remove_clicked_cb,
       "button_import", "clicked", accounts_dialog_button_import_clicked_cb,
diff --git a/src/empathy-call-window-fullscreen.c b/src/empathy-call-window-fullscreen.c
index e6dca48..5ecc123 100644
--- a/src/empathy-call-window-fullscreen.c
+++ b/src/empathy-call-window-fullscreen.c
@@ -25,6 +25,8 @@
 #include "config.h"
 #include "empathy-call-window-fullscreen.h"
 
+#include <tp-account-widgets/tpaw-builder.h>
+
 #include "empathy-ui-utils.h"
 #include "empathy-utils.h"
 
@@ -185,7 +187,7 @@ empathy_call_window_fullscreen_init (EmpathyCallWindowFullscreen *self)
   gchar *filename;
 
   filename = empathy_file_lookup ("empathy-call-window-fullscreen.ui", "src");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
     "leave_fullscreen_window", &priv->leave_fullscreen_popup,
     "leave_fullscreen_button", &self->leave_fullscreen_button,
     NULL);
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index 03c9efb..ed5de4e 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -25,6 +25,7 @@
 #include <telepathy-farstream/telepathy-farstream.h>
 #include <farstream/fs-element-added-notifier.h>
 #include <farstream/fs-utils.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-about-dialog.h"
 #include "empathy-audio-sink.h"
@@ -1622,7 +1623,7 @@ empathy_call_window_init (EmpathyCallWindow *self)
   priv->timer = g_timer_new ();
 
   filename = empathy_file_lookup ("empathy-call-window.ui", "src");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
     "call_window_vbox", &top_vbox,
     "errors_vbox", &priv->errors_vbox,
     "pane", &priv->pane,
@@ -1659,7 +1660,7 @@ empathy_call_window_init (EmpathyCallWindow *self)
     NULL);
   g_free (filename);
 
-  empathy_builder_connect (gui, self,
+  tpaw_builder_connect (gui, self,
     "hangup", "clicked", empathy_call_window_hangup_cb,
     "audiocall", "clicked", empathy_call_window_audio_call_cb,
     "videocall", "clicked", empathy_call_window_video_call_cb,
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index b373b9c..5f23b6a 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -29,6 +29,7 @@
 #include "empathy-chat-window.h"
 
 #include <glib/gi18n.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-about-dialog.h"
 #include "empathy-chat-manager.h"
@@ -2411,7 +2412,7 @@ empathy_chat_window_init (EmpathyChatWindow *self)
     EMPATHY_TYPE_CHAT_WINDOW, EmpathyChatWindowPriv);
 
   filename = empathy_file_lookup ("empathy-chat-window.ui", "src");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "chat_vbox", &chat_vbox,
       "ui_manager", &self->priv->ui_manager,
       "menu_conv_insert_smiley", &self->priv->menu_conv_insert_smiley,
@@ -2433,7 +2434,7 @@ empathy_chat_window_init (EmpathyChatWindow *self)
       NULL);
   g_free (filename);
 
-  empathy_builder_connect (gui, self,
+  tpaw_builder_connect (gui, self,
       "menu_conv", "activate", chat_window_conv_activate_cb,
       "menu_conv_clear", "activate", chat_window_clear_activate_cb,
       "menu_conv_favorite", "toggled", chat_window_favorite_toggled_cb,
diff --git a/src/empathy-chatrooms-window.c b/src/empathy-chatrooms-window.c
index 553c912..25c7814 100644
--- a/src/empathy-chatrooms-window.c
+++ b/src/empathy-chatrooms-window.c
@@ -27,6 +27,7 @@
 #include "empathy-chatrooms-window.h"
 
 #include <glib/gi18n.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-account-chooser.h"
 #include "empathy-chatroom-manager.h"
@@ -100,16 +101,16 @@ empathy_chatrooms_window_show (GtkWindow *parent)
        window = g_new0 (EmpathyChatroomsWindow, 1);
 
        filename = empathy_file_lookup ("empathy-chatrooms-window.ui", "src");
-       gui = empathy_builder_get_file (filename,
-                                      "chatrooms_window", &window->window,
-                                      "hbox_account", &window->hbox_account,
-                                      "label_account", &window->label_account,
-                                      "sw_room_list", &sw,
-                                      "treeview", &window->treeview,
-                                      "toolbar_remove", &toolbar,
-                                      "button_remove", &window->button_remove,
-                                      "button_close", &window->button_close,
-                                      NULL);
+       gui = tpaw_builder_get_file (filename,
+                                    "chatrooms_window", &window->window,
+                                    "hbox_account", &window->hbox_account,
+                                    "label_account", &window->label_account,
+                                    "sw_room_list", &sw,
+                                    "treeview", &window->treeview,
+                                    "toolbar_remove", &toolbar,
+                                    "button_remove", &window->button_remove,
+                                    "button_close", &window->button_close,
+                                    NULL);
        g_free (filename);
 
        /* join the remove toolbar to the treeview */
@@ -118,7 +119,7 @@ empathy_chatrooms_window_show (GtkWindow *parent)
        context = gtk_widget_get_style_context (toolbar);
        gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
 
-       empathy_builder_connect (gui, window,
+       tpaw_builder_connect (gui, window,
                              "chatrooms_window", "destroy", chatrooms_window_destroy_cb,
                              "button_remove", "clicked", chatrooms_window_button_remove_clicked_cb,
                              "button_close", "clicked", chatrooms_window_button_close_clicked_cb,
diff --git a/src/empathy-ft-manager.c b/src/empathy-ft-manager.c
index 18e05dc..4321969 100644
--- a/src/empathy-ft-manager.c
+++ b/src/empathy-ft-manager.c
@@ -31,6 +31,7 @@
 #include "empathy-ft-manager.h"
 
 #include <glib/gi18n.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-geometry.h"
 #include "empathy-ui-utils.h"
@@ -970,7 +971,7 @@ ft_manager_build_ui (EmpathyFTManager *manager)
   EmpathyFTManagerPriv *priv = GET_PRIV (manager);
 
   filename = empathy_file_lookup ("empathy-ft-manager.ui", "src");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "ft_manager_dialog", &priv->window,
       "ft_list", &priv->treeview,
       "clear_button", &priv->clear_button,
@@ -979,14 +980,14 @@ ft_manager_build_ui (EmpathyFTManager *manager)
       NULL);
   g_free (filename);
 
-  empathy_builder_connect (gui, manager,
+  tpaw_builder_connect (gui, manager,
       "ft_manager_dialog", "destroy", ft_manager_destroy_cb,
       "ft_manager_dialog", "response", ft_manager_response_cb,
       "ft_manager_dialog", "delete-event", ft_manager_delete_event_cb,
       "ft_manager_dialog", "key-press-event", ft_manager_key_press_event_cb,
       NULL);
 
-  empathy_builder_unref_and_keep_widget (gui, priv->window);
+  tpaw_builder_unref_and_keep_widget (gui, priv->window);
 
   /* Window geometry. */
   empathy_geometry_bind (GTK_WINDOW (priv->window), "ft-manager");
diff --git a/src/empathy-import-widget.c b/src/empathy-import-widget.c
index 400a006..42ffdd3 100644
--- a/src/empathy-import-widget.c
+++ b/src/empathy-import-widget.c
@@ -26,6 +26,7 @@
 #include "empathy-import-widget.h"
 
 #include <glib/gi18n-lib.h>
+#include <tp-account-widgets/tpaw-builder.h>
 #include <tp-account-widgets/tpaw-utils.h>
 
 #include "empathy-ui-utils.h"
@@ -431,14 +432,14 @@ do_constructed (GObject *obj)
   gchar *filename;
 
   filename = empathy_file_lookup ("empathy-import-dialog.ui", "src");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "widget_vbox", &priv->vbox,
       "treeview", &priv->treeview,
       "scrolledwindow", &priv->scrolledwindow,
       NULL);
 
   g_free (filename);
-  empathy_builder_unref_and_keep_widget (gui, priv->vbox);
+  tpaw_builder_unref_and_keep_widget (gui, priv->vbox);
 
   g_signal_connect (priv->vbox, "destroy",
       G_CALLBACK (import_widget_destroy_cb), self);
diff --git a/src/empathy-new-chatroom-dialog.c b/src/empathy-new-chatroom-dialog.c
index 5edf45a..ad44d21 100644
--- a/src/empathy-new-chatroom-dialog.c
+++ b/src/empathy-new-chatroom-dialog.c
@@ -25,6 +25,7 @@
 #include "empathy-new-chatroom-dialog.h"
 
 #include <glib/gi18n.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-account-chooser.h"
 #include "empathy-gsettings.h"
@@ -747,7 +748,7 @@ empathy_new_chatroom_dialog_init (EmpathyNewChatroomDialog *self)
       EMPATHY_TYPE_NEW_CHATROOM_DIALOG, EmpathyNewChatroomDialogPriv);
 
   filename = empathy_file_lookup ("empathy-new-chatroom-dialog.ui", "src");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "vbox_new_chatroom", &vbox,
       "table_grid", &self->priv->table_grid,
       "label_account", &self->priv->label_account,
@@ -763,7 +764,7 @@ empathy_new_chatroom_dialog_init (EmpathyNewChatroomDialog *self)
       NULL);
   g_free (filename);
 
-  empathy_builder_connect (gui, self,
+  tpaw_builder_connect (gui, self,
       "entry_server", "changed", new_chatroom_dialog_entry_changed_cb,
       "entry_server", "activate", new_chatroom_dialog_entry_server_activate_cb,
       "entry_server", "focus-out-event",
diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c
index b5e02b6..e37bc74 100644
--- a/src/empathy-preferences.c
+++ b/src/empathy-preferences.c
@@ -27,6 +27,7 @@
 #include "empathy-preferences.h"
 
 #include <glib/gi18n.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-client-factory.h"
 #include "empathy-gsettings.h"
@@ -1029,7 +1030,7 @@ empathy_preferences_init (EmpathyPreferences *preferences)
        gtk_window_set_icon_name (GTK_WINDOW (preferences), "preferences-desktop");
 
        filename = empathy_file_lookup ("empathy-preferences.ui", "src");
-       gui = empathy_builder_get_file (filename,
+       gui = tpaw_builder_get_file (filename,
                "notebook", &priv->notebook,
                "vbox_chat_theme", &priv->vbox_chat_theme,
                "combobox_chat_theme", &priv->combobox_chat_theme,
diff --git a/src/empathy-roster-window.c b/src/empathy-roster-window.c
index 1a30f71..600d196 100644
--- a/src/empathy-roster-window.c
+++ b/src/empathy-roster-window.c
@@ -26,6 +26,7 @@
 
 #include <sys/stat.h>
 #include <glib/gi18n.h>
+#include <tp-account-widgets/tpaw-builder.h>
 
 #include "empathy-about-dialog.h"
 #include "empathy-accounts-dialog.h"
@@ -2245,7 +2246,7 @@ empathy_roster_window_init (EmpathyRosterWindow *self)
 
   /* Set up interface */
   filename = empathy_file_lookup ("empathy-roster-window.ui", "src");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "main_vbox", &self->priv->main_vbox,
       "balance_vbox", &self->priv->balance_vbox,
       "errors_vbox", &self->priv->errors_vbox,
@@ -2290,7 +2291,7 @@ empathy_roster_window_init (EmpathyRosterWindow *self)
   roster_window_setup_actions (self);
 
   filename = empathy_file_lookup ("empathy-roster-window-menubar.ui", "src");
-  gui = empathy_builder_get_file (filename,
+  gui = tpaw_builder_get_file (filename,
       "appmenu", &self->priv->menumodel,
       "rooms", &self->priv->rooms_section,
       NULL);
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index 917fab3..e000f32 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -22,6 +22,8 @@
 #include "config.h"
 #include "empathy-status-icon.h"
 
+#include <tp-account-widgets/tpaw-builder.h>
+
 #include "empathy-event-manager.h"
 #include "empathy-gsettings.h"
 #include "empathy-new-call-dialog.h"
@@ -351,7 +353,7 @@ status_icon_create_menu (EmpathyStatusIcon *icon)
        gchar                 *filename;
 
        filename = empathy_file_lookup ("empathy-status-icon.ui", "src");
-       gui = empathy_builder_get_file (filename,
+       gui = tpaw_builder_get_file (filename,
                                        "ui_manager", &priv->ui_manager,
                                        "menu", &priv->popup_menu,
                                        "show_list", &priv->show_window_item,
@@ -360,7 +362,7 @@ status_icon_create_menu (EmpathyStatusIcon *icon)
                                       NULL);
        g_free (filename);
 
-       empathy_builder_connect (gui, icon,
+       tpaw_builder_connect (gui, icon,
                              "show_list", "toggled", status_icon_show_hide_window_cb,
                              "new_message", "activate", status_icon_new_message_cb,
                              "new_call", "activate", status_icon_new_call_cb,
diff --git a/tp-account-widgets/tpaw-account-widget-irc.c b/tp-account-widgets/tpaw-account-widget-irc.c
index a547a23..970f3a2 100644
--- a/tp-account-widgets/tpaw-account-widget-irc.c
+++ b/tp-account-widgets/tpaw-account-widget-irc.c
@@ -22,6 +22,7 @@
 #include "tpaw-account-widget-irc.h"
 
 #include "tpaw-account-widget-private.h"
+#include "tpaw-builder.h"
 #include "empathy-ui-utils.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT | EMPATHY_DEBUG_IRC
@@ -142,7 +143,7 @@ tpaw_account_widget_irc_build (TpawAccountWidget *self,
   settings = g_slice_new0 (TpawAccountWidgetIrc);
   settings->self = self;
 
-  self->ui_details->gui = empathy_builder_get_resource (filename,
+  self->ui_details->gui = tpaw_builder_get_resource (filename,
       "table_irc_settings", table_common_settings,
       "vbox_irc", box,
       "table_irc_settings", &settings->vbox_settings,
@@ -172,7 +173,7 @@ tpaw_account_widget_irc_build (TpawAccountWidget *self,
       "entry_username", "username",
       NULL);
 
-  empathy_builder_connect (self->ui_details->gui, settings,
+  tpaw_builder_connect (self->ui_details->gui, settings,
       "table_irc_settings", "destroy", account_widget_irc_destroy_cb,
       NULL);
 
@@ -209,7 +210,7 @@ tpaw_account_widget_irc_build_simple (TpawAccountWidget *self,
   settings = g_slice_new0 (TpawAccountWidgetIrc);
   settings->self = self;
 
-  self->ui_details->gui = empathy_builder_get_resource (filename,
+  self->ui_details->gui = tpaw_builder_get_resource (filename,
       "vbox_irc_simple", box,
       "alignment_network_simple", &alignment,
       NULL);
@@ -230,7 +231,7 @@ tpaw_account_widget_irc_build_simple (TpawAccountWidget *self,
       "entry_nick_simple", "account",
       NULL);
 
-  empathy_builder_connect (self->ui_details->gui, settings,
+  tpaw_builder_connect (self->ui_details->gui, settings,
       "vbox_irc_simple", "destroy", account_widget_irc_destroy_cb,
       NULL);
 
diff --git a/tp-account-widgets/tpaw-account-widget-sip.c b/tp-account-widgets/tpaw-account-widget-sip.c
index 44d5aec..1e48e31 100644
--- a/tp-account-widgets/tpaw-account-widget-sip.c
+++ b/tp-account-widgets/tpaw-account-widget-sip.c
@@ -25,6 +25,7 @@
 #include <glib/gi18n-lib.h>
 
 #include "tpaw-account-widget-private.h"
+#include "tpaw-builder.h"
 #include "empathy-ui-utils.h"
 
 typedef struct {
@@ -113,7 +114,7 @@ tpaw_account_widget_sip_build (TpawAccountWidget *self,
 
   if (is_simple)
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_sip_simple", &vbox_settings,
           NULL);
 
@@ -133,7 +134,7 @@ tpaw_account_widget_sip_build (TpawAccountWidget *self,
       settings = g_slice_new0 (TpawAccountWidgetSip);
       settings->self = self;
 
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "grid_common_settings", grid_common_settings,
           "grid_advanced_sip_settings", &grid_advanced,
           "vbox_sip_settings", &vbox_settings,
@@ -173,7 +174,7 @@ tpaw_account_widget_sip_build (TpawAccountWidget *self,
           settings->checkbutton_discover_stun,
           settings);
 
-      empathy_builder_connect (self->ui_details->gui, settings,
+      tpaw_builder_connect (self->ui_details->gui, settings,
           "vbox_sip_settings", "destroy", account_widget_sip_destroy_cb,
           "checkbutton_discover-stun", "toggled",
           account_widget_sip_discover_stun_toggled_cb,
diff --git a/tp-account-widgets/tpaw-account-widget.c b/tp-account-widgets/tpaw-account-widget.c
index 20eb64f..a86a32f 100644
--- a/tp-account-widgets/tpaw-account-widget.c
+++ b/tp-account-widgets/tpaw-account-widget.c
@@ -33,6 +33,7 @@
 #include "tpaw-account-widget-irc.h"
 #include "tpaw-account-widget-private.h"
 #include "tpaw-account-widget-sip.h"
+#include "tpaw-builder.h"
 #include "empathy-ui-utils.h"
 #include "empathy-utils.h"
 #include "tpaw-utils.h"
@@ -1060,7 +1061,7 @@ account_widget_build_generic (TpawAccountWidget *self,
 {
   GtkWidget *expander_advanced, *box;
 
-  self->ui_details->gui = empathy_builder_get_resource (filename,
+  self->ui_details->gui = tpaw_builder_get_resource (filename,
       "grid_common_settings", &self->priv->grid_common_settings,
       "vbox_generic_settings", &box,
       "expander_advanced_settings", &expander_advanced,
@@ -1086,7 +1087,7 @@ account_widget_build_salut (TpawAccountWidget *self,
 {
   GtkWidget *expander_advanced, *box;
 
-  self->ui_details->gui = empathy_builder_get_resource (filename,
+  self->ui_details->gui = tpaw_builder_get_resource (filename,
       "grid_common_settings", &self->priv->grid_common_settings,
       "vbox_salut_settings", &box,
       "expander_advanced_settings", &expander_advanced,
@@ -1167,7 +1168,7 @@ account_widget_build_msn (TpawAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_msn_simple", &box,
           NULL);
 
@@ -1184,7 +1185,7 @@ account_widget_build_msn (TpawAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "grid_common_msn_settings", &self->priv->grid_common_settings,
           "vbox_msn_settings", &box,
           NULL);
@@ -1323,7 +1324,7 @@ account_widget_build_jabber (TpawAccountWidget *self,
   if (self->priv->simple && service == NO_SERVICE)
     {
       /* Simple widget for XMPP */
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_jabber_simple", &box,
           "label_id_simple", &label_id,
           "label_id_create", &label_id_create,
@@ -1354,7 +1355,7 @@ account_widget_build_jabber (TpawAccountWidget *self,
   else if (self->priv->simple && service == GTALK_SERVICE)
     {
       /* Simple widget for Google Talk */
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_gtalk_simple", &box,
           NULL);
 
@@ -1372,7 +1373,7 @@ account_widget_build_jabber (TpawAccountWidget *self,
   else if (self->priv->simple && service == FACEBOOK_SERVICE)
     {
       /* Simple widget for Facebook */
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_fb_simple", &box,
           "entry_id_fb_simple", &entry_id,
           NULL);
@@ -1394,7 +1395,7 @@ account_widget_build_jabber (TpawAccountWidget *self,
       ServiceInfo info = services_infos[service];
 
       /* Full widget for XMPP, Google Talk and Facebook*/
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
           "vbox_jabber_settings", &box,
           "spinbutton_port", &spinbutton_port,
@@ -1474,7 +1475,7 @@ account_widget_build_icq (TpawAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_icq_simple", &box,
           NULL);
 
@@ -1491,7 +1492,7 @@ account_widget_build_icq (TpawAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
           "vbox_icq_settings", &box,
           "spinbutton_port", &spinbutton_port,
@@ -1522,7 +1523,7 @@ account_widget_build_aim (TpawAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_aim_simple", &box,
           NULL);
 
@@ -1539,7 +1540,7 @@ account_widget_build_aim (TpawAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
           "vbox_aim_settings", &box,
           "spinbutton_port", &spinbutton_port,
@@ -1572,7 +1573,7 @@ account_widget_build_yahoo (TpawAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_yahoo_simple", &box,
           NULL);
 
@@ -1589,7 +1590,7 @@ account_widget_build_yahoo (TpawAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
           "vbox_yahoo_settings", &box,
           NULL);
@@ -1620,7 +1621,7 @@ account_widget_build_groupwise (TpawAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "vbox_groupwise_simple", &box,
           NULL);
 
@@ -1637,7 +1638,7 @@ account_widget_build_groupwise (TpawAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_resource (filename,
+      self->ui_details->gui = tpaw_builder_get_resource (filename,
           "grid_common_groupwise_settings", &self->priv->grid_common_settings,
           "vbox_groupwise_settings", &box,
           NULL);
diff --git a/tp-account-widgets/tpaw-builder.c b/tp-account-widgets/tpaw-builder.c
index 8b7587a..fc73098 100644
--- a/tp-account-widgets/tpaw-builder.c
+++ b/tp-account-widgets/tpaw-builder.c
@@ -2,6 +2,11 @@
  * Copyright (C) 2013 Collabora Ltd.
  *
  * Authors: Marco Barisione <marco barisione collabora co uk>
+ *          Guillaume Desmottes <guillaume desmottes collabora co uk>
+ *          Xavier Claessens <xavier claessens collabora co uk>
+ *          Mikael Hallendal <micke imendio com>
+ *          Richard Hult <richard imendio com>
+ *          Martyn Russell <martyn imendio com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -20,3 +25,154 @@
 
 #include "config.h"
 #include "tpaw-builder.h"
+
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include "empathy-debug.h"
+
+enum _BuilderSource
+{
+  BUILDER_SOURCE_FILE,
+  BUILDER_SOURCE_RESOURCE
+};
+
+static GtkBuilder *
+builder_get_valist (const gchar *sourcename,
+    enum _BuilderSource source,
+    const gchar *first_object,
+    va_list args)
+{
+  GtkBuilder *gui;
+  const gchar *name;
+  GObject **object_ptr;
+  GError *error = NULL;
+  gboolean success;
+
+  DEBUG ("Loading %s '%s'", source == BUILDER_SOURCE_FILE ? "file" : "resource", sourcename);
+
+  gui = gtk_builder_new ();
+  gtk_builder_set_translation_domain (gui, GETTEXT_PACKAGE);
+
+  switch (source)
+    {
+    case BUILDER_SOURCE_FILE:
+      success = gtk_builder_add_from_file (gui, sourcename, &error);
+      break;
+    case BUILDER_SOURCE_RESOURCE:
+      success = gtk_builder_add_from_resource (gui, sourcename, &error);
+      break;
+    default:
+      g_assert_not_reached ();
+    }
+
+  if (!success)
+    {
+      g_critical ("GtkBuilder Error (%s): %s",
+          sourcename, error->message);
+
+      g_clear_error (&error);
+      g_object_unref (gui);
+
+      /* we need to iterate and set all of the pointers to NULL */
+      for (name = first_object; name; name = va_arg (args, const gchar *))
+        {
+          object_ptr = va_arg (args, GObject**);
+
+          *object_ptr = NULL;
+        }
+
+      return NULL;
+    }
+
+  for (name = first_object; name; name = va_arg (args, const gchar *))
+    {
+      object_ptr = va_arg (args, GObject**);
+
+      *object_ptr = gtk_builder_get_object (gui, name);
+
+      if (!*object_ptr)
+        {
+          g_warning ("File is missing object '%s'.", name);
+          continue;
+        }
+    }
+
+  return gui;
+}
+
+GtkBuilder *
+tpaw_builder_get_file (const gchar *filename,
+    const gchar *first_object,
+    ...)
+{
+  GtkBuilder *gui;
+  va_list args;
+
+  va_start (args, first_object);
+  gui = builder_get_valist (filename, BUILDER_SOURCE_FILE, first_object, args);
+  va_end (args);
+
+  return gui;
+}
+
+GtkBuilder *
+tpaw_builder_get_resource (const gchar *resourcename,
+    const gchar *first_object,
+    ...)
+{
+  GtkBuilder *gui;
+  va_list args;
+
+  va_start (args, first_object);
+  gui = builder_get_valist (resourcename, BUILDER_SOURCE_RESOURCE, first_object, args);
+  va_end (args);
+
+  return gui;
+}
+
+void
+tpaw_builder_connect (GtkBuilder *gui,
+    gpointer user_data,
+    const gchar *first_object,
+    ...)
+{
+  va_list args;
+  const gchar *name;
+  const gchar *sig;
+  GObject *object;
+  GCallback callback;
+
+  va_start (args, first_object);
+  for (name = first_object; name; name = va_arg (args, const gchar *))
+    {
+      sig = va_arg (args, const gchar *);
+      callback = va_arg (args, GCallback);
+
+      object = gtk_builder_get_object (gui, name);
+      if (!object)
+        {
+          g_warning ("File is missing object '%s'.", name);
+          continue;
+        }
+
+      g_signal_connect (object, sig, callback, user_data);
+    }
+
+  va_end (args);
+}
+
+GtkWidget *
+tpaw_builder_unref_and_keep_widget (GtkBuilder *gui,
+    GtkWidget *widget)
+{
+  /* On construction gui sinks the initial reference to widget. When gui
+   * is finalized it will drop its ref to widget. We take our own ref to
+   * prevent widget being finalised. The widget is forced to have a
+   * floating reference, like when it was initially unowned so that it can
+   * be used like any other GtkWidget. */
+
+  g_object_ref (widget);
+  g_object_force_floating (G_OBJECT (widget));
+  g_object_unref (gui);
+
+  return widget;
+}
diff --git a/tp-account-widgets/tpaw-builder.h b/tp-account-widgets/tpaw-builder.h
index 66a9d44..57134ce 100644
--- a/tp-account-widgets/tpaw-builder.h
+++ b/tp-account-widgets/tpaw-builder.h
@@ -2,6 +2,11 @@
  * Copyright (C) 2013 Collabora Ltd.
  *
  * Authors: Marco Barisione <marco barisione collabora co uk>
+ *          Guillaume Desmottes <guillaume desmottes collabora co uk>
+ *          Xavier Claessens <xavier claessens collabora co uk>
+ *          Mikael Hallendal <micke imendio com>
+ *          Richard Hult <richard imendio com>
+ *          Martyn Russell <martyn imendio com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -26,6 +31,19 @@
 
 G_BEGIN_DECLS
 
+GtkBuilder * tpaw_builder_get_file (const gchar *filename,
+    const gchar *first_object,
+    ...);
+GtkBuilder * tpaw_builder_get_resource (const gchar *resourcename,
+    const gchar *first_object,
+    ...);
+void tpaw_builder_connect (GtkBuilder *gui,
+    gpointer user_data,
+    const gchar *first_object,
+    ...);
+GtkWidget * tpaw_builder_unref_and_keep_widget (GtkBuilder *gui,
+    GtkWidget *root);
+
 G_END_DECLS
 
 #endif /*  __TPAW_BUILDER_H__ */
diff --git a/tp-account-widgets/tpaw-irc-network-dialog.c b/tp-account-widgets/tpaw-irc-network-dialog.c
index 0f6b7ce..77cc865 100644
--- a/tp-account-widgets/tpaw-irc-network-dialog.c
+++ b/tp-account-widgets/tpaw-irc-network-dialog.c
@@ -24,6 +24,7 @@
 #include <glib/gi18n-lib.h>
 
 #include "empathy-ui-utils.h"
+#include "tpaw-builder.h"
 #include "totem-subtitle-encoding.h"
 
 typedef struct {
@@ -468,7 +469,7 @@ tpaw_irc_network_dialog_show (TpawIrcNetwork *network,
   dialog->network = network;
   g_object_ref (dialog->network);
 
-  gui = empathy_builder_get_resource (ACCOUNT_WIDGETS_RESOURCES_PREFIX "/tpaw-account-widget-irc.ui",
+  gui = tpaw_builder_get_resource (ACCOUNT_WIDGETS_RESOURCES_PREFIX "/tpaw-account-widget-irc.ui",
       "irc_network_dialog", &dialog->dialog,
       "button_close", &dialog->button_close,
       "entry_network", &dialog->entry_network,
@@ -548,7 +549,7 @@ tpaw_irc_network_dialog_show (TpawIrcNetwork *network,
 
   irc_network_dialog_setup (dialog);
 
-  empathy_builder_connect (gui, dialog,
+  tpaw_builder_connect (gui, dialog,
       "irc_network_dialog", "destroy", irc_network_dialog_destroy_cb,
       "button_close", "clicked", irc_network_dialog_close_clicked_cb,
       "entry_network", "focus-out-event", irc_network_dialog_network_focus_cb,



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