Add a menu item Preferences under File and show the preferences dialog --- src/virt-viewer-app.c | 28 +++++++++++++++++++++++++++- src/virt-viewer-app.h | 1 + src/virt-viewer-window.c | 9 +++++++++ src/virt-viewer.xml | 9 +++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c index 4800beb..0b11aa1 100644 --- a/src/virt-viewer-app.c +++ b/src/virt-viewer-app.c @@ -112,7 +112,7 @@ struct _VirtViewerAppPrivate { GHashTable *displays; GHashTable *initial_display_map; gchar *clipboard; - + GtkWidget *preferences; gboolean direct; gboolean verbose; gboolean enable_accel; @@ -1629,6 +1629,10 @@ virt_viewer_app_dispose (GObject *object) VirtViewerApp *self = VIRT_VIEWER_APP(object); VirtViewerAppPrivate *priv = self->priv; + if (priv->preferences) + gtk_widget_destroy(priv->preferences); + priv->preferences = NULL; + if (priv->windows) { GList *tmp = priv->windows; /* null-ify before unrefing, because we need @@ -2401,6 +2405,28 @@ virt_viewer_app_get_windows(VirtViewerApp *self) return self->priv->windows; } +void +virt_viewer_app_show_preferences(VirtViewerApp *self, GtkWidget *parent) +{ + GtkWidget *preferences = self->priv->preferences; + + if (!preferences) { + GtkBuilder *builder = virt_viewer_util_load_ui("virt-viewer-preferences.xml"); + + gtk_builder_connect_signals(builder, self); + + preferences = GTK_WIDGET(gtk_builder_get_object(builder, "preferences")); + self->priv->preferences = preferences; + + g_object_unref(builder); + } + + gtk_window_set_transient_for(GTK_WINDOW(preferences), + GTK_WINDOW(parent)); + + gtk_window_present(GTK_WINDOW(preferences)); +} + static gboolean option_kiosk_quit(G_GNUC_UNUSED const gchar *option_name, const gchar *value, diff --git a/src/virt-viewer-app.h b/src/virt-viewer-app.h index f127b32..d214279 100644 --- a/src/virt-viewer-app.h +++ b/src/virt-viewer-app.h @@ -100,6 +100,7 @@ void virt_viewer_app_clear_hotkeys(VirtViewerApp *app); gint virt_viewer_app_get_n_initial_displays(VirtViewerApp* self); gint virt_viewer_app_get_initial_monitor_for_display(VirtViewerApp* self, gint display); void virt_viewer_app_set_enable_accel(VirtViewerApp *app, gboolean enable); +void virt_viewer_app_show_preferences(VirtViewerApp *app, GtkWidget *parent); G_END_DECLS diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c index c5f7c75..d668f74 100644 --- a/src/virt-viewer-window.c +++ b/src/virt-viewer-window.c @@ -58,6 +58,8 @@ void virt_viewer_window_menu_file_usb_device_selection(GtkWidget *menu, VirtView void virt_viewer_window_menu_file_smartcard_insert(GtkWidget *menu, VirtViewerWindow *self); void virt_viewer_window_menu_file_smartcard_remove(GtkWidget *menu, VirtViewerWindow *self); void virt_viewer_window_menu_view_release_cursor(GtkWidget *menu, VirtViewerWindow *self); +void virt_viewer_window_menu_preferences_cb(GtkWidget *menu, VirtViewerWindow *self); + /* Internal methods */ static void virt_viewer_window_enable_modifiers(VirtViewerWindow *self); @@ -1018,6 +1020,13 @@ virt_viewer_window_menu_file_smartcard_remove(GtkWidget *menu G_GNUC_UNUSED, } G_MODULE_EXPORT void +virt_viewer_window_menu_preferences_cb(GtkWidget *menu G_GNUC_UNUSED, + VirtViewerWindow *self) +{ + virt_viewer_app_show_preferences(self->priv->app, GTK_WIDGET(self->priv->window)); +} + +G_MODULE_EXPORT void virt_viewer_window_menu_view_release_cursor(GtkWidget *menu G_GNUC_UNUSED, VirtViewerWindow *self) { diff --git a/src/virt-viewer.xml b/src/virt-viewer.xml index 849fc7d..07948bd 100644 --- a/src/virt-viewer.xml +++ b/src/virt-viewer.xml @@ -69,6 +69,15 @@ </object> </child> <child> + <object class="GtkMenuItem" id="menu-preferences"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Preferences</property> + <property name="use_underline">True</property> + <signal name="activate" handler="virt_viewer_window_menu_preferences_cb" swapped="no"/> + </object> + </child> + <child> <object class="GtkSeparatorMenuItem" id="separatormenuitem1"> <property name="visible">True</property> <property name="can_focus">False</property> -- 2.1.0 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list