[empathy] account-widget: Embed .ui files with GResource



commit a169a5c76e983532b4a0699bfc39cd510768a923
Author: Emanuele Aina <emanuele aina collabora com>
Date:   Fri Mar 22 16:39:22 2013 +0100

    account-widget: Embed .ui files with GResource
    
    https://bugzilla.gnome.org/show_bug.cgi?id=696978

 libempathy-gtk/.gitignore                          |    1 +
 libempathy-gtk/Makefile.am                         |   25 ++++++++--
 libempathy-gtk/empathy-account-widget-irc.c        |    4 +-
 libempathy-gtk/empathy-account-widget-sip.c        |    4 +-
 libempathy-gtk/empathy-account-widget.c            |   48 ++++++++-----------
 .../empathy-account-widgets.gresource.xml          |   16 +++++++
 libempathy-gtk/empathy-irc-network-dialog.c        |    6 +--
 libempathy-gtk/empathy-ui-utils.h                  |    2 +
 8 files changed, 64 insertions(+), 42 deletions(-)
---
diff --git a/libempathy-gtk/.gitignore b/libempathy-gtk/.gitignore
index 3e3f6f0..3e651d7 100644
--- a/libempathy-gtk/.gitignore
+++ b/libempathy-gtk/.gitignore
@@ -1,2 +1,3 @@
+empathy-account-widgets-resources.[ch]
 empathy-gtk-marshal.*
 *.gladep
diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am
index 902a5e5..2de397a 100644
--- a/libempathy-gtk/Makefile.am
+++ b/libempathy-gtk/Makefile.am
@@ -22,6 +22,8 @@ AM_CPPFLAGS =                                           \
        $(DISABLE_DEPRECATED)
 
 BUILT_SOURCES =                                        \
+       empathy-account-widgets-resources.c             \
+       empathy-account-widgets-resources.h             \
        empathy-gtk-enum-types.h                        \
        empathy-gtk-enum-types.c
 
@@ -209,10 +211,7 @@ check_c_sources = \
 include $(top_srcdir)/tools/check-coding-style.mk
 check-local: check-coding-style
 
-uidir = $(datadir)/empathy
-ui_DATA =                                      \
-       empathy-contact-widget.ui               \
-       empathy-contact-blocking-dialog.ui      \
+account_widgets_ui_files =                     \
        empathy-account-widget-generic.ui       \
        empathy-account-widget-jabber.ui        \
        empathy-account-widget-msn.ui           \
@@ -223,6 +222,12 @@ ui_DATA =                                  \
        empathy-account-widget-yahoo.ui         \
        empathy-account-widget-groupwise.ui     \
        empathy-account-widget-aim.ui           \
+       $(NULL)
+
+uidir = $(datadir)/empathy
+ui_DATA =                                      \
+       empathy-contact-widget.ui               \
+       empathy-contact-blocking-dialog.ui      \
        empathy-status-preset-dialog.ui         \
        empathy-log-window.ui                   \
        empathy-chat.ui                         \
@@ -267,7 +272,17 @@ empathy-gtk-enum-types.c: Makefile $(libempathy_gtk_headers)
        && cp xgen-gtc $(@F) \
        && rm -f xgen-gtc
 
-EXTRA_DIST =                   \
+account_widgets_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies 
--sourcedir=$(srcdir) $(srcdir)/empathy-account-widgets.gresource.xml)
+
+empathy-account-widgets-resources.c: empathy-account-widgets.gresource.xml $(account_widgets_resource_files)
+       $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $<
+
+empathy-account-widgets-resources.h: empathy-account-widgets.gresource.xml $(account_widgets_resource_files)
+       $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-header $<
+
+EXTRA_DIST =                                   \
+       empathy-account-widgets.gresource.xml   \
+       $(account_widgets_ui_files)             \
        $(ui_DATA)
 
 if HAVE_GEOCLUE
diff --git a/libempathy-gtk/empathy-account-widget-irc.c b/libempathy-gtk/empathy-account-widget-irc.c
index c027fb2..be9c993 100644
--- a/libempathy-gtk/empathy-account-widget-irc.c
+++ b/libempathy-gtk/empathy-account-widget-irc.c
@@ -142,7 +142,7 @@ empathy_account_widget_irc_build (EmpathyAccountWidget *self,
   settings = g_slice_new0 (EmpathyAccountWidgetIrc);
   settings->self = self;
 
-  self->ui_details->gui = empathy_builder_get_file (filename,
+  self->ui_details->gui = empathy_builder_get_resource (filename,
       "table_irc_settings", table_common_settings,
       "vbox_irc", box,
       "table_irc_settings", &settings->vbox_settings,
@@ -209,7 +209,7 @@ empathy_account_widget_irc_build_simple (EmpathyAccountWidget *self,
   settings = g_slice_new0 (EmpathyAccountWidgetIrc);
   settings->self = self;
 
-  self->ui_details->gui = empathy_builder_get_file (filename,
+  self->ui_details->gui = empathy_builder_get_resource (filename,
       "vbox_irc_simple", box,
       "alignment_network_simple", &alignment,
       NULL);
diff --git a/libempathy-gtk/empathy-account-widget-sip.c b/libempathy-gtk/empathy-account-widget-sip.c
index 4568cf1..7545efb 100644
--- a/libempathy-gtk/empathy-account-widget-sip.c
+++ b/libempathy-gtk/empathy-account-widget-sip.c
@@ -113,7 +113,7 @@ empathy_account_widget_sip_build (EmpathyAccountWidget *self,
 
   if (is_simple)
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_sip_simple", &vbox_settings,
           NULL);
 
@@ -133,7 +133,7 @@ empathy_account_widget_sip_build (EmpathyAccountWidget *self,
       settings = g_slice_new0 (EmpathyAccountWidgetSip);
       settings->self = self;
 
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "grid_common_settings", grid_common_settings,
           "grid_advanced_sip_settings", &grid_advanced,
           "vbox_sip_settings", &vbox_settings,
diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c
index 794e7d5..9fa8c1e 100644
--- a/libempathy-gtk/empathy-account-widget.c
+++ b/libempathy-gtk/empathy-account-widget.c
@@ -1060,7 +1060,7 @@ account_widget_build_generic (EmpathyAccountWidget *self,
 {
   GtkWidget *expander_advanced, *box;
 
-  self->ui_details->gui = empathy_builder_get_file (filename,
+  self->ui_details->gui = empathy_builder_get_resource (filename,
       "grid_common_settings", &self->priv->grid_common_settings,
       "vbox_generic_settings", &box,
       "expander_advanced_settings", &expander_advanced,
@@ -1086,7 +1086,7 @@ account_widget_build_salut (EmpathyAccountWidget *self,
 {
   GtkWidget *expander_advanced, *box;
 
-  self->ui_details->gui = empathy_builder_get_file (filename,
+  self->ui_details->gui = empathy_builder_get_resource (filename,
       "grid_common_settings", &self->priv->grid_common_settings,
       "vbox_salut_settings", &box,
       "expander_advanced_settings", &expander_advanced,
@@ -1167,7 +1167,7 @@ account_widget_build_msn (EmpathyAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_msn_simple", &box,
           NULL);
 
@@ -1184,7 +1184,7 @@ account_widget_build_msn (EmpathyAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "grid_common_msn_settings", &self->priv->grid_common_settings,
           "vbox_msn_settings", &box,
           NULL);
@@ -1323,7 +1323,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
   if (self->priv->simple && service == NO_SERVICE)
     {
       /* Simple widget for XMPP */
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_jabber_simple", &box,
           "label_id_simple", &label_id,
           "label_id_create", &label_id_create,
@@ -1354,7 +1354,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
   else if (self->priv->simple && service == GTALK_SERVICE)
     {
       /* Simple widget for Google Talk */
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_gtalk_simple", &box,
           NULL);
 
@@ -1372,7 +1372,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
   else if (self->priv->simple && service == FACEBOOK_SERVICE)
     {
       /* Simple widget for Facebook */
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_fb_simple", &box,
           "entry_id_fb_simple", &entry_id,
           NULL);
@@ -1394,7 +1394,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
       ServiceInfo info = services_infos[service];
 
       /* Full widget for XMPP, Google Talk and Facebook*/
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
           "vbox_jabber_settings", &box,
           "spinbutton_port", &spinbutton_port,
@@ -1474,7 +1474,7 @@ account_widget_build_icq (EmpathyAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_icq_simple", &box,
           NULL);
 
@@ -1491,7 +1491,7 @@ account_widget_build_icq (EmpathyAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
           "vbox_icq_settings", &box,
           "spinbutton_port", &spinbutton_port,
@@ -1522,7 +1522,7 @@ account_widget_build_aim (EmpathyAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_aim_simple", &box,
           NULL);
 
@@ -1539,7 +1539,7 @@ account_widget_build_aim (EmpathyAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
           "vbox_aim_settings", &box,
           "spinbutton_port", &spinbutton_port,
@@ -1572,7 +1572,7 @@ account_widget_build_yahoo (EmpathyAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_yahoo_simple", &box,
           NULL);
 
@@ -1589,7 +1589,7 @@ account_widget_build_yahoo (EmpathyAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "grid_common_settings", &self->priv->grid_common_settings,
           "vbox_yahoo_settings", &box,
           NULL);
@@ -1620,7 +1620,7 @@ account_widget_build_groupwise (EmpathyAccountWidget *self,
 
   if (self->priv->simple)
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "vbox_groupwise_simple", &box,
           NULL);
 
@@ -1637,7 +1637,7 @@ account_widget_build_groupwise (EmpathyAccountWidget *self,
     }
   else
     {
-      self->ui_details->gui = empathy_builder_get_file (filename,
+      self->ui_details->gui = empathy_builder_get_resource (filename,
           "grid_common_groupwise_settings", &self->priv->grid_common_settings,
           "vbox_groupwise_settings", &box,
           NULL);
@@ -1808,7 +1808,7 @@ out:
 }
 
 #define WIDGET(cm, proto) \
-  { #cm, #proto, "empathy-account-widget-"#proto".ui", \
+  { #cm, #proto, ACCOUNT_WIDGETS_RESOURCES_PREFIX "/empathy-account-widget-"#proto".ui", \
     account_widget_build_##proto }
 
 static void
@@ -1904,7 +1904,7 @@ do_constructed (GObject *obj)
     const char *file;
     GtkWidget * (*func)(EmpathyAccountWidget *self, const gchar *filename);
   } widgets [] = {
-    { "salut", "local-xmpp", "empathy-account-widget-local-xmpp.ui",
+    { "salut", "local-xmpp", ACCOUNT_WIDGETS_RESOURCES_PREFIX "/empathy-account-widget-local-xmpp.ui",
         account_widget_build_salut },
     WIDGET (gabble, jabber),
     WIDGET (haze, msn),
@@ -1928,23 +1928,15 @@ do_constructed (GObject *obj)
       if (!tp_strdiff (widgets[i].cm_name, cm_name) &&
           !tp_strdiff (widgets[i].protocol, protocol))
         {
-          gchar *filename;
-
-          filename = empathy_file_lookup (widgets[i].file,
-              "libempathy-gtk");
-          box = widgets[i].func (self, filename);
-          g_free (filename);
-
+          box = widgets[i].func (self, widgets[i].file);
           break;
         }
     }
 
   if (i == G_N_ELEMENTS (widgets))
     {
-      gchar *filename = empathy_file_lookup (
-          "empathy-account-widget-generic.ui", "libempathy-gtk");
+      gchar *filename = ACCOUNT_WIDGETS_RESOURCES_PREFIX "/empathy-account-widget-generic.ui";
       box = account_widget_build_generic (self, filename);
-      g_free (filename);
     }
 
   gtk_container_add (GTK_CONTAINER (self), box);
diff --git a/libempathy-gtk/empathy-account-widgets.gresource.xml 
b/libempathy-gtk/empathy-account-widgets.gresource.xml
new file mode 100644
index 0000000..093cb2a
--- /dev/null
+++ b/libempathy-gtk/empathy-account-widgets.gresource.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/AccountWidgets">
+    <file compressed="true">empathy-account-widget-generic.ui</file>
+    <file compressed="true">empathy-account-widget-jabber.ui</file>
+    <file compressed="true">empathy-account-widget-msn.ui</file>
+    <file compressed="true">empathy-account-widget-sip.ui</file>
+    <file compressed="true">empathy-account-widget-local-xmpp.ui</file>
+    <file compressed="true">empathy-account-widget-irc.ui</file>
+    <file compressed="true">empathy-account-widget-icq.ui</file>
+    <file compressed="true">empathy-account-widget-yahoo.ui</file>
+    <file compressed="true">empathy-account-widget-groupwise.ui</file>
+    <file compressed="true">empathy-account-widget-aim.ui</file>
+  </gresource>
+</gresources>
+
diff --git a/libempathy-gtk/empathy-irc-network-dialog.c b/libempathy-gtk/empathy-irc-network-dialog.c
index aedb5dc..fe26ceb 100644
--- a/libempathy-gtk/empathy-irc-network-dialog.c
+++ b/libempathy-gtk/empathy-irc-network-dialog.c
@@ -453,7 +453,6 @@ empathy_irc_network_dialog_show (EmpathyIrcNetwork *network,
   GtkAdjustment *adjustment;
   GtkTreeSelection *selection;
   GtkTreeViewColumn *column;
-  gchar *filename;
   GtkWidget *sw, *toolbar;
   GtkStyleContext *context;
 
@@ -472,9 +471,7 @@ empathy_irc_network_dialog_show (EmpathyIrcNetwork *network,
   dialog->network = network;
   g_object_ref (dialog->network);
 
-  filename = empathy_file_lookup ("empathy-account-widget-irc.ui",
-      "libempathy-gtk");
-  gui = empathy_builder_get_file (filename,
+  gui = empathy_builder_get_resource (ACCOUNT_WIDGETS_RESOURCES_PREFIX "/empathy-account-widget-irc.ui",
       "irc_network_dialog", &dialog->dialog,
       "button_close", &dialog->button_close,
       "entry_network", &dialog->entry_network,
@@ -487,7 +484,6 @@ empathy_irc_network_dialog_show (EmpathyIrcNetwork *network,
       "scrolledwindow_network_server", &sw,
       "toolbar_network_server", &toolbar,
       NULL);
-  g_free (filename);
 
   store = gtk_list_store_new (4, G_TYPE_OBJECT, G_TYPE_STRING,
       G_TYPE_UINT, G_TYPE_BOOLEAN);
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index e5c3aa1..d1712f5 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -41,6 +41,8 @@
 
 G_BEGIN_DECLS
 
+#define ACCOUNT_WIDGETS_RESOURCES_PREFIX "/org/gnome/AccountWidgets"
+
 #define EMPATHY_RECT_IS_ON_SCREEN(x,y,w,h) ((x) + (w) > 0 && \
               (y) + (h) > 0 && \
               (x) < gdk_screen_width () && \


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