summaryrefslogtreecommitdiffstats
path: root/src
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
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')
-rw-r--r--src/Makefile.am19
-rw-r--r--src/virt-viewer-about.xml1
-rw-r--r--src/virt-viewer-app.c5
-rw-r--r--src/virt-viewer-util.c48
-rw-r--r--src/virt-viewer-util.h1
-rw-r--r--src/virt-viewer-window.c20
-rw-r--r--src/virt-viewer.gresource.xml19
7 files changed, 59 insertions, 54 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index f42a7bf..4f511b0 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,8 +5,7 @@ bin_PROGRAMS =
noinst_LTLIBRARIES = libvirt-viewer.la
-builderxmldir = $(pkgdatadir)/ui
-builderxml_DATA = \
+noinst_DATA = \
virt-viewer.xml \
virt-viewer-about.xml \
virt-viewer-auth.xml \
@@ -17,9 +16,10 @@ builderxml_DATA = \
$(NULL)
EXTRA_DIST = \
- $(builderxml_DATA) \
+ $(noinst_DATA) \
virt-viewer-enums.c.etemplate \
virt-viewer-enums.h.etemplate \
+ virt-viewer.gresource.xml \
$(NULL)
ENUMS_FILES = \
@@ -27,15 +27,24 @@ ENUMS_FILES = \
$(NULL)
BUILT_SOURCES = \
+ virt-viewer-resources.h \
+ virt-viewer-resources.c \
virt-viewer-enums.h \
virt-viewer-enums.c \
$(NULL)
-$(BUILT_SOURCES): %: %.etemplate $(ENUMS_FILES)
+virt-viewer-resources.c virt-viewer-resources.h: virt-viewer.gresource.xml Makefile $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies --sourcedir $(srcdir) $(srcdir)/virt-viewer.gresource.xml)
+ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name virt_viewer $<
+
+virt-viewer-enums.c virt-viewer-enums.h: %: %.etemplate $(ENUMS_FILES)
$(AM_V_GEN)$(GLIB_MKENUMS) --template $^ | \
sed -e 's/VIRT_TYPE_VIEWER/VIRT_VIEWER_TYPE/' \
-e 's,#include "$(srcdir)/,#include ",' > $@
+CLEANFILES = \
+ $(BUILT_SOURCES) \
+ $(NULL)
+
libvirt_viewer_la_SOURCES = \
$(BUILT_SOURCES) \
virt-viewer-util.h \
@@ -185,8 +194,6 @@ if OS_WIN32
remote_viewer_LDFLAGS += -Wl,--subsystem,windows
endif
-AM_CPPFLAGS = -DPACKAGE_DATADIR=\""$(pkgdatadir)"\"
-
VIRT_VIEWER_RES = virt-viewer.rc virt-viewer.manifest
ICONDIR = $(top_builddir)/icons
MANIFESTDIR = $(srcdir)
diff --git a/src/virt-viewer-about.xml b/src/virt-viewer-about.xml
index 65e2da6..28e38c8 100644
--- a/src/virt-viewer-about.xml
+++ b/src/virt-viewer-about.xml
@@ -36,7 +36,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Marc-André Lureau
</property>
<property name="translator_credits" translatable="yes">The Fedora Translation Team</property>
- <property name="logo_icon_name">virt-viewer</property>
<signal name="delete-event" handler="virt_viewer_app_about_delete" swapped="no"/>
<signal name="response" handler="virt_viewer_app_about_close" swapped="no"/>
<child internal-child="vbox">
diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index b51bf4f..660acef 100644
--- a/src/virt-viewer-app.c
+++ b/src/virt-viewer-app.c
@@ -49,6 +49,7 @@
#endif
#include "virt-viewer-app.h"
+#include "virt-viewer-resources.h"
#include "virt-viewer-auth.h"
#include "virt-viewer-window.h"
#include "virt-viewer-session.h"
@@ -112,6 +113,7 @@ struct _VirtViewerAppPrivate {
gchar *clipboard;
GtkWidget *preferences;
GtkFileChooser *preferences_shared_folder;
+ GResource *resource;
gboolean direct;
gboolean verbose;
gboolean enable_accel;
@@ -1714,6 +1716,7 @@ virt_viewer_app_dispose (GObject *object)
g_hash_table_unref(tmp);
}
+ priv->resource = NULL;
g_clear_object(&priv->session);
g_free(priv->title);
priv->title = NULL;
@@ -1860,6 +1863,8 @@ virt_viewer_app_on_application_startup(GApplication *app)
G_APPLICATION_CLASS(virt_viewer_app_parent_class)->startup(app);
+ self->priv->resource = virt_viewer_get_resource();
+
virt_viewer_app_set_debug(opt_debug);
virt_viewer_app_set_fullscreen(self, opt_fullscreen);
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
diff --git a/src/virt-viewer-util.h b/src/virt-viewer-util.h
index 0a7dd97..c453804 100644
--- a/src/virt-viewer-util.h
+++ b/src/virt-viewer-util.h
@@ -34,6 +34,7 @@ enum {
};
#define VIRT_VIEWER_ERROR virt_viewer_error_quark ()
+#define VIRT_VIEWER_RESOURCE_PREFIX "/org/virt-manager/virt-viewer"
GQuark virt_viewer_error_quark(void);
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
index 8ce34ca..ef62d9a 100644
--- a/src/virt-viewer-window.c
+++ b/src/virt-viewer-window.c
@@ -1030,11 +1030,24 @@ G_MODULE_EXPORT void
virt_viewer_window_menu_help_about(GtkWidget *menu G_GNUC_UNUSED,
VirtViewerWindow *self)
{
- GtkBuilder *about = virt_viewer_util_load_ui("virt-viewer-about.xml");
+ GtkBuilder *about;
+ GtkWidget *dialog;
+ GdkPixbuf *icon;
+
+ about = virt_viewer_util_load_ui("virt-viewer-about.xml");
+
+ dialog = GTK_WIDGET(gtk_builder_get_object(about, "about"));
- GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(about, "about"));
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), VERSION BUILDID);
+ icon = gdk_pixbuf_new_from_resource(VIRT_VIEWER_RESOURCE_PREFIX"/icons/48x48/virt-viewer.png", NULL);
+ if (icon != NULL) {
+ gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(dialog), icon);
+ g_object_unref(icon);
+ } else {
+ gtk_about_dialog_set_logo_icon_name(GTK_ABOUT_DIALOG(dialog), "virt-viewer");
+ }
+
gtk_window_set_transient_for(GTK_WINDOW(dialog),
GTK_WINDOW(self->priv->window));
@@ -1066,8 +1079,7 @@ virt_viewer_window_toolbar_setup(VirtViewerWindow *self)
g_signal_connect(button, "clicked", G_CALLBACK(virt_viewer_window_menu_file_quit), self);
/* USB Device selection */
- button = gtk_image_new_from_icon_name("virt-viewer-usb",
- GTK_ICON_SIZE_INVALID);
+ button = gtk_image_new_from_resource(VIRT_VIEWER_RESOURCE_PREFIX"/icons/24x24/virt-viewer-usb.png");
button = GTK_WIDGET(gtk_tool_button_new(button, NULL));
gtk_tool_button_set_label(GTK_TOOL_BUTTON(button), _("USB device selection"));
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(button), _("USB device selection"));
diff --git a/src/virt-viewer.gresource.xml b/src/virt-viewer.gresource.xml
new file mode 100644
index 0000000..596889a
--- /dev/null
+++ b/src/virt-viewer.gresource.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/org/virt-manager/virt-viewer">
+ <file>remote-viewer-connect.xml</file>
+ <file>virt-viewer-about.xml</file>
+ <file>virt-viewer-auth.xml</file>
+ <file>virt-viewer-guest-details.xml</file>
+ <file>virt-viewer-preferences.xml</file>
+ <file>virt-viewer-vm-connection.xml</file>
+ <file>virt-viewer.xml</file>
+ <file alias="icons/16x16/virt-viewer.png">../icons/16x16/virt-viewer.png</file>
+ <file alias="icons/22x22/virt-viewer.png">../icons/22x22/virt-viewer.png</file>
+ <file alias="icons/24x24/virt-viewer.png">../icons/24x24/virt-viewer.png</file>
+ <file alias="icons/24x24/virt-viewer-usb.png">../icons/24x24/virt-viewer-usb.png</file>
+ <file alias="icons/32x32/virt-viewer.png">../icons/32x32/virt-viewer.png</file>
+ <file alias="icons/48x48/virt-viewer.png">../icons/48x48/virt-viewer.png</file>
+ <file alias="icons/256x256/virt-viewer.png">../icons/256x256/virt-viewer.png</file>
+ </gresource>
+</gresources>