]> git.0d.be Git - empathy.git/commitdiff
account-widget: Embed .ui files with GResource
authorEmanuele Aina <emanuele.aina@collabora.com>
Fri, 22 Mar 2013 15:39:22 +0000 (16:39 +0100)
committerEmanuele Aina <emanuele.aina@collabora.com>
Mon, 1 Apr 2013 09:50:28 +0000 (11:50 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=696978

libempathy-gtk/.gitignore
libempathy-gtk/Makefile.am
libempathy-gtk/empathy-account-widget-irc.c
libempathy-gtk/empathy-account-widget-sip.c
libempathy-gtk/empathy-account-widget.c
libempathy-gtk/empathy-account-widgets.gresource.xml [new file with mode: 0644]
libempathy-gtk/empathy-irc-network-dialog.c
libempathy-gtk/empathy-ui-utils.h

index 3e3f6f051a280187461d70be1da0c4c64ccaad31..3e651d7f4bf14026abf9722b3d597a629dfadca9 100644 (file)
@@ -1,2 +1,3 @@
+empathy-account-widgets-resources.[ch]
 empathy-gtk-marshal.*
 *.gladep
index 902a5e57fe6b4128b1c9f257c2d5a9c5ce08d3bc..2de397a57dbe46a12c201b5d6fb810974beb1545 100644 (file)
@@ -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
index c027fb25096cf10af2f09cb2d9a98ee0fceacc1c..be9c99301990c64f696eb26ebed20b67e3e5f100 100644 (file)
@@ -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);
index 4568cf1751be1b13f7a031064841d5cdaddb263a..7545efb11e9ab4e4a7649ba3bf9c84da55aa0e18 100644 (file)
@@ -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,
index 794e7d5247a4ccb84dc81abf73183ad93930f5fd..9fa8c1eafd0edad35dbd2278e1f0d68a1734f493 100644 (file)
@@ -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 (file)
index 0000000..093cb2a
--- /dev/null
@@ -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>
+
index aedb5dc798a4bee9e4d7bbe70a644039f37e9c94..fe26ceb34e4a35d3eda9515ca5af500d68de38a4 100644 (file)
@@ -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);
index e5c3aa1faf76d88a97dc35feb193747e3d1c2d08..d1712f59590a64d78e05262f63df7791bb0afa24 100644 (file)
@@ -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 () && \