]> git.0d.be Git - empathy.git/commitdiff
ui-utils: Add empathy_builder_get_resource()
authorEmanuele Aina <emanuele.aina@collabora.com>
Fri, 22 Mar 2013 12:36:30 +0000 (13:36 +0100)
committerEmanuele Aina <emanuele.aina@collabora.com>
Sun, 31 Mar 2013 15:33:53 +0000 (17:33 +0200)
Add the empathy_builder_get_file() companion to load UI elements from
embedded resources.

https://bugzilla.gnome.org/show_bug.cgi?id=696978

libempathy-gtk/empathy-ui-utils.c
libempathy-gtk/empathy-ui-utils.h

index 9f4300840431ba77f90cce61c0e5d994aa15a421..32f1fe38925f58ffdf8a634621b6aafcc3b9b656 100644 (file)
@@ -75,8 +75,15 @@ empathy_gtk_init (void)
   initialized = TRUE;
 }
 
+enum _BuilderSource
+{
+  BUILDER_SOURCE_FILE,
+  BUILDER_SOURCE_RESOURCE
+};
+
 static GtkBuilder *
-builder_get_file_valist (const gchar *filename,
+builder_get_valist (const gchar *sourcename,
+    enum _BuilderSource source,
     const gchar *first_object,
     va_list args)
 {
@@ -84,16 +91,29 @@ builder_get_file_valist (const gchar *filename,
   const gchar *name;
   GObject **object_ptr;
   GError *error = NULL;
+  gboolean success;
 
-  DEBUG ("Loading file %s", filename);
+  DEBUG ("Loading %s '%s'", source == BUILDER_SOURCE_FILE ? "file" : "resource", sourcename);
 
   gui = gtk_builder_new ();
   gtk_builder_set_translation_domain (gui, GETTEXT_PACKAGE);
 
-  if (!gtk_builder_add_from_file (gui, filename, &error))
+  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",
-          filename, error->message);
+          sourcename, error->message);
 
       g_clear_error (&error);
       g_object_unref (gui);
@@ -134,7 +154,22 @@ empathy_builder_get_file (const gchar *filename,
   va_list args;
 
   va_start (args, first_object);
-  gui = builder_get_file_valist (filename, first_object, args);
+  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;
index 73232cf5295d51fadd71672870c4136976bcd586..e5c3aa1faf76d88a97dc35feb193747e3d1c2d08 100644 (file)
@@ -57,6 +57,9 @@ void empathy_gtk_init (void);
 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,