Moved preferences from virt-viewer-app to virt-viewer-window. Makes more sense to have all of the GUI in virt-viewer-window. This also makes it possible to implement virt-viewer/remote-viewer specific settings in preferences. --- New commit in version 3 Moving preferences into window is better then ifdefs all over virt-viewer-app --- src/virt-viewer-app.c | 89 ---------------------------------------------- src/virt-viewer-app.h | 1 - src/virt-viewer-window.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 91 insertions(+), 91 deletions(-) diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c index b22a876..2570b8c 100644 --- a/src/virt-viewer-app.c +++ b/src/virt-viewer-app.c @@ -112,8 +112,6 @@ struct _VirtViewerAppPrivate { GHashTable *displays; GHashTable *initial_display_map; gchar *clipboard; - GtkWidget *preferences; - GtkFileChooser *preferences_shared_folder; gboolean direct; gboolean verbose; gboolean enable_accel; @@ -1668,10 +1666,6 @@ 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 @@ -2442,89 +2436,6 @@ virt_viewer_app_get_windows(VirtViewerApp *self) return self->priv->windows; } -static void -share_folder_changed(VirtViewerApp *self) -{ - gchar *folder; - - folder = gtk_file_chooser_get_filename(self->priv->preferences_shared_folder); - - g_object_set(virt_viewer_app_get_session(self), - "shared-folder", folder, NULL); - - g_free(folder); -} - -static GtkWidget * -virt_viewer_app_get_preferences(VirtViewerApp *self) -{ - VirtViewerSession *session = virt_viewer_app_get_session(self); - GtkBuilder *builder = virt_viewer_util_load_ui("virt-viewer-preferences.xml"); - gboolean can_share_folder = virt_viewer_session_can_share_folder(session); - GtkWidget *preferences = self->priv->preferences; - gchar *path; - - if (preferences) - goto end; - - gtk_builder_connect_signals(builder, self); - - preferences = GTK_WIDGET(gtk_builder_get_object(builder, "preferences")); - self->priv->preferences = preferences; - - g_object_set (gtk_builder_get_object(builder, "cbsharefolder"), - "sensitive", can_share_folder, NULL); - g_object_set (gtk_builder_get_object(builder, "cbsharefolderro"), - "sensitive", can_share_folder, NULL); - g_object_set (gtk_builder_get_object(builder, "fcsharefolder"), - "sensitive", can_share_folder, NULL); - - if (!can_share_folder) - goto end; - - g_object_bind_property(virt_viewer_app_get_session(self), - "share-folder", - gtk_builder_get_object(builder, "cbsharefolder"), - "active", - G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); - - g_object_bind_property(virt_viewer_app_get_session(self), - "share-folder-ro", - gtk_builder_get_object(builder, "cbsharefolderro"), - "active", - G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); - - self->priv->preferences_shared_folder = - GTK_FILE_CHOOSER(gtk_builder_get_object(builder, "fcsharefolder")); - - g_object_get(virt_viewer_app_get_session(self), - "shared-folder", &path, NULL); - - gtk_file_chooser_set_filename(self->priv->preferences_shared_folder, path); - g_free(path); - - virt_viewer_signal_connect_object(self->priv->preferences_shared_folder, - "file-set", - G_CALLBACK(share_folder_changed), self, - G_CONNECT_SWAPPED); - -end: - g_object_unref(builder); - - return preferences; -} - -void -virt_viewer_app_show_preferences(VirtViewerApp *self, GtkWidget *parent) -{ - GtkWidget *preferences = virt_viewer_app_get_preferences(self); - - 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 f53fa73..ab1d7a9 100644 --- a/src/virt-viewer-app.h +++ b/src/virt-viewer-app.h @@ -100,7 +100,6 @@ void virt_viewer_app_clear_hotkeys(VirtViewerApp *app); GList* virt_viewer_app_get_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); void virt_viewer_app_set_menus_sensitive(VirtViewerApp *self, gboolean sensitive); G_END_DECLS diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c index d67fbc1..f66bd50 100644 --- a/src/virt-viewer-window.c +++ b/src/virt-viewer-window.c @@ -71,6 +71,7 @@ static void virt_viewer_window_toolbar_setup(VirtViewerWindow *self); static GtkMenu* virt_viewer_window_get_keycombo_menu(VirtViewerWindow *self); static void virt_viewer_window_get_minimal_dimensions(VirtViewerWindow *self, guint *width, guint *height); static gint virt_viewer_window_get_minimal_zoom_level(VirtViewerWindow *self); +static void virt_viewer_window_show_preferences(VirtViewerWindow *self, GtkWidget *parent); G_DEFINE_TYPE (VirtViewerWindow, virt_viewer_window, G_TYPE_OBJECT) @@ -97,6 +98,8 @@ struct _VirtViewerWindowPrivate { GtkAccelGroup *accel_group; VirtViewerNotebook *notebook; VirtViewerDisplay *display; + GtkWidget *preferences; + GtkFileChooser *preferences_shared_folder; gboolean accel_enabled; GValue accel_setting; @@ -171,6 +174,10 @@ virt_viewer_window_dispose (GObject *object) VirtViewerWindowPrivate *priv = VIRT_VIEWER_WINDOW(object)->priv; GSList *it; + if (priv->preferences) + gtk_widget_destroy(priv->preferences); + priv->preferences = NULL; + if (priv->display) { g_object_unref(priv->display); priv->display = NULL; @@ -1030,7 +1037,7 @@ 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)); + virt_viewer_window_show_preferences(self, GTK_WIDGET(self->priv->window)); } G_MODULE_EXPORT void @@ -1582,6 +1589,89 @@ virt_viewer_window_get_minimal_zoom_level(VirtViewerWindow *self) return CLAMP(zoom * ZOOM_STEP, MIN_ZOOM_LEVEL, NORMAL_ZOOM_LEVEL); } +static void +share_folder_changed(VirtViewerWindow *self) +{ + gchar *folder; + + folder = gtk_file_chooser_get_filename(self->priv->preferences_shared_folder); + + g_object_set(virt_viewer_app_get_session(self->priv->app), + "shared-folder", folder, NULL); + + g_free(folder); +} + +static GtkWidget * +virt_viewer_window_get_preferences(VirtViewerWindow *self) +{ + VirtViewerSession *session = virt_viewer_app_get_session(self->priv->app); + GtkBuilder *builder = virt_viewer_util_load_ui("virt-viewer-preferences.xml"); + gboolean can_share_folder = virt_viewer_session_can_share_folder(session); + GtkWidget *preferences = self->priv->preferences; + gchar *path; + + if (preferences) + goto end; + + gtk_builder_connect_signals(builder, self); + + preferences = GTK_WIDGET(gtk_builder_get_object(builder, "preferences")); + self->priv->preferences = preferences; + + g_object_set (gtk_builder_get_object(builder, "cbsharefolder"), + "sensitive", can_share_folder, NULL); + g_object_set (gtk_builder_get_object(builder, "cbsharefolderro"), + "sensitive", can_share_folder, NULL); + g_object_set (gtk_builder_get_object(builder, "fcsharefolder"), + "sensitive", can_share_folder, NULL); + + if (!can_share_folder) + goto end; + + g_object_bind_property(virt_viewer_app_get_session(self->priv->app), + "share-folder", + gtk_builder_get_object(builder, "cbsharefolder"), + "active", + G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); + + g_object_bind_property(virt_viewer_app_get_session(self->priv->app), + "share-folder-ro", + gtk_builder_get_object(builder, "cbsharefolderro"), + "active", + G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); + + self->priv->preferences_shared_folder = + GTK_FILE_CHOOSER(gtk_builder_get_object(builder, "fcsharefolder")); + + g_object_get(virt_viewer_app_get_session(self->priv->app), + "shared-folder", &path, NULL); + + gtk_file_chooser_set_filename(self->priv->preferences_shared_folder, path); + g_free(path); + + virt_viewer_signal_connect_object(self->priv->preferences_shared_folder, + "file-set", + G_CALLBACK(share_folder_changed), self, + G_CONNECT_SWAPPED); + +end: + g_object_unref(builder); + + return preferences; +} + +void +virt_viewer_window_show_preferences(VirtViewerWindow *self, GtkWidget *parent) +{ + GtkWidget *preferences = virt_viewer_window_get_preferences(self); + + gtk_window_set_transient_for(GTK_WINDOW(preferences), + GTK_WINDOW(parent)); + + gtk_window_present(GTK_WINDOW(preferences)); +} + /* * Local variables: * c-indent-level: 4 -- 2.4.0 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list