It seems to give more modern look to the dialog, but it requires Gtk+ 3.12, thus I will am keeping this commit separated. Signed-off-by: Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> --- configure.ac | 4 ++-- src/remote-viewer-iso-list-dialog.c | 33 ++++++++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 7c437a3..7682f42 100644 --- a/configure.ac +++ b/configure.ac @@ -17,8 +17,8 @@ GLIB2_REQUIRED="2.38" GLIB2_ENCODED_VERSION="GLIB_VERSION_2_38" # Keep these two definitions in agreement. -GTK_REQUIRED="3.10" -GTK_ENCODED_VERSION="GDK_VERSION_3_10" +GTK_REQUIRED="3.12" +GTK_ENCODED_VERSION="GDK_VERSION_3_12" LIBXML2_REQUIRED="2.6.0" LIBVIRT_REQUIRED="0.10.0" diff --git a/src/remote-viewer-iso-list-dialog.c b/src/remote-viewer-iso-list-dialog.c index 7fe032b..c6fb5d8 100644 --- a/src/remote-viewer-iso-list-dialog.c +++ b/src/remote-viewer-iso-list-dialog.c @@ -34,6 +34,7 @@ G_DEFINE_TYPE(RemoteViewerISOListDialog, remote_viewer_iso_list_dialog, GTK_TYPE struct _RemoteViewerISOListDialogPrivate { + GtkHeaderBar *header_bar; GtkListStore *list_store; GtkWidget *stack; GtkWidget *treeview; @@ -88,6 +89,19 @@ remote_viewer_iso_list_dialog_show_files(RemoteViewerISOListDialog *self) } static void +remote_viewer_iso_list_dialog_set_subtitle(RemoteViewerISOListDialog *self, const char *iso_name) +{ + RemoteViewerISOListDialogPrivate *priv = self->priv; + gchar *subtitle = NULL; + + if (iso_name && strlen(iso_name) != 0) + subtitle = g_strdup_printf(_("Current: %s"), iso_name); + + gtk_header_bar_set_subtitle(priv->header_bar, subtitle); + g_free(subtitle); +} + +static void remote_viewer_iso_list_dialog_foreach(char *name, RemoteViewerISOListDialog *self) { RemoteViewerISOListDialogPrivate *priv = self->priv; @@ -102,6 +116,9 @@ remote_viewer_iso_list_dialog_foreach(char *name, RemoteViewerISOListDialog *sel ISO_NAME, name, FONT_WEIGHT, weight, -1); + if (active) + remote_viewer_iso_list_dialog_set_subtitle(self, current_iso); + free(current_iso); } @@ -134,6 +151,7 @@ remote_viewer_iso_list_dialog_response(GtkDialog *dialog, if (response_id != GTK_RESPONSE_NONE) return; + remote_viewer_iso_list_dialog_set_subtitle(self, NULL); gtk_stack_set_visible_child_full(GTK_STACK(priv->stack), "status", GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT); gtk_dialog_set_response_sensitive(GTK_DIALOG(self), GTK_RESPONSE_NONE, FALSE); @@ -171,9 +189,13 @@ remote_viewer_iso_list_dialog_init(RemoteViewerISOListDialog *self) RemoteViewerISOListDialogPrivate *priv = self->priv = DIALOG_PRIVATE(self); GtkBuilder *builder = virt_viewer_util_load_ui("remote-viewer-iso-list.ui"); GtkCellRendererToggle *cell_renderer; + GtkWidget *button, *image; gtk_builder_connect_signals(builder, self); + priv->header_bar = GTK_HEADER_BAR(gtk_dialog_get_header_bar(GTK_DIALOG(self))); + gtk_header_bar_set_has_subtitle(priv->header_bar, TRUE); + priv->stack = GTK_WIDGET(gtk_builder_get_object(builder, "stack")); gtk_box_pack_start(GTK_BOX(content), priv->stack, TRUE, TRUE, 0); @@ -184,12 +206,11 @@ remote_viewer_iso_list_dialog_init(RemoteViewerISOListDialog *self) g_object_unref(builder); - gtk_dialog_add_buttons(GTK_DIALOG(self), - _("Refresh"), GTK_RESPONSE_NONE, - _("Close"), GTK_RESPONSE_CLOSE, - NULL); + button = gtk_dialog_add_button(GTK_DIALOG(self), "", GTK_RESPONSE_NONE); + image = gtk_image_new_from_icon_name("view-refresh-symbolic", GTK_ICON_SIZE_BUTTON); + gtk_button_set_image(GTK_BUTTON(button), image); + gtk_button_set_always_show_image(GTK_BUTTON(button), TRUE); - gtk_dialog_set_default_response(GTK_DIALOG(self), GTK_RESPONSE_CLOSE); gtk_dialog_set_response_sensitive(GTK_DIALOG(self), GTK_RESPONSE_NONE, FALSE); g_signal_connect(self, "response", G_CALLBACK(remote_viewer_iso_list_dialog_response), NULL); } @@ -229,6 +250,7 @@ ovirt_foreign_menu_notify_file(OvirtForeignMenu *foreign_menu, g_free(name); } while (gtk_tree_model_iter_next(model, &iter)); + remote_viewer_iso_list_dialog_set_subtitle(self, current_iso); gtk_dialog_set_response_sensitive(GTK_DIALOG(self), GTK_RESPONSE_NONE, TRUE); gtk_widget_set_sensitive(priv->treeview, TRUE); @@ -259,6 +281,7 @@ remote_viewer_iso_list_dialog_new(GtkWindow *parent, GObject *foreign_menu) "border-width", 18, "default-width", 400, "default-height", 300, + "use-header-bar", TRUE, NULL); self = REMOTE_VIEWER_ISO_LIST_DIALOG(dialog); -- 2.7.4 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list