summaryrefslogtreecommitdiffstats
path: root/src/virt-viewer-util.c
diff options
context:
space:
mode:
authorFabiano Fidêncio <fidencio@redhat.com>2016-02-26 18:08:40 +0100
committerFabiano Fidêncio <fidencio@redhat.com>2016-03-03 23:08:37 +0100
commit82e13442b9218215e6e13482a0e8cbe927b1cd8d (patch)
treee36018e85dd16ceb0a9159d16a016bc20549e4e7 /src/virt-viewer-util.c
parentad6924aff15f590e6c08961eff20d8e8cac1eac2 (diff)
downloadvirt-viewer-82e13442b9218215e6e13482a0e8cbe927b1cd8d.tar.gz
virt-viewer-82e13442b9218215e6e13482a0e8cbe927b1cd8d.tar.xz
virt-viewer-82e13442b9218215e6e13482a0e8cbe927b1cd8d.zip
Use GResource for loading ui files
Let's take advantage of GResource for loading ui files in a better and cleaner way than virt_viewer_util_load_ui() was doing. It also brings the benefit, at least for developers, of being able to test ui changes without having to "make install" virt-viewer. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Diffstat (limited to 'src/virt-viewer-util.c')
-rw-r--r--src/virt-viewer-util.c48
1 files changed, 5 insertions, 43 deletions
diff --git a/src/virt-viewer-util.c b/src/virt-viewer-util.c
index 76b61a1..9a4b7c9 100644
--- a/src/virt-viewer-util.c
+++ b/src/virt-viewer-util.c
@@ -49,53 +49,15 @@ virt_viewer_error_quark(void)
GtkBuilder *virt_viewer_util_load_ui(const char *name)
{
- struct stat sb;
GtkBuilder *builder;
- GError *error = NULL;
-
- builder = gtk_builder_new();
- if (stat(name, &sb) >= 0) {
- gtk_builder_add_from_file(builder, name, &error);
- } else {
- gchar *path = g_build_filename(PACKAGE_DATADIR, "ui", name, NULL);
- gboolean success = (gtk_builder_add_from_file(builder, path, &error) != 0);
- if (error) {
- if (!(error->domain == G_FILE_ERROR && error->code == G_FILE_ERROR_NOENT))
- g_warning("Failed to add ui file '%s': %s", path, error->message);
- g_clear_error(&error);
- }
- g_free(path);
-
- if (!success) {
- const gchar * const * dirs = g_get_system_data_dirs();
- g_return_val_if_fail(dirs != NULL, NULL);
-
- while (dirs[0] != NULL) {
- path = g_build_filename(dirs[0], PACKAGE, "ui", name, NULL);
- if (gtk_builder_add_from_file(builder, path, NULL) != 0) {
- g_free(path);
- break;
- }
- g_free(path);
- dirs++;
- }
- if (dirs[0] == NULL)
- goto failed;
- }
- }
+ gchar *resource = g_strdup_printf("%s/%s",
+ VIRT_VIEWER_RESOURCE_PREFIX,
+ name);
- if (error) {
- g_error("Cannot load UI description %s: %s", name,
- error->message);
- g_clear_error(&error);
- goto failed;
- }
+ builder = gtk_builder_new_from_resource(resource);
+ g_free(resource);
return builder;
- failed:
- g_error("failed to find UI description file");
- g_object_unref(builder);
- return NULL;
}
int