On 07/19/2016 01:13 PM, Christophe Fergeau wrote: > On Sun, Jul 17, 2016 at 11:13:08PM -0300, Eduardo Lima (Etrunko) wrote: >> Signed-off-by: Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> >> --- >> src/Makefile.am | 3 + >> src/remote-viewer-iso-list-dialog.c | 115 +++++++++++++++++++ >> src/remote-viewer-iso-list-dialog.h | 58 ++++++++++ >> src/resources/ui/remote-viewer-iso-list.ui | 174 +++++++++++++++++++++++++++++ >> src/resources/virt-viewer.gresource.xml | 1 + >> 5 files changed, 351 insertions(+) >> create mode 100644 src/remote-viewer-iso-list-dialog.c >> create mode 100644 src/remote-viewer-iso-list-dialog.h >> create mode 100644 src/resources/ui/remote-viewer-iso-list.ui >> >> diff --git a/src/Makefile.am b/src/Makefile.am >> index 0c48e40..66a73f8 100644 >> --- a/src/Makefile.am >> +++ b/src/Makefile.am >> @@ -13,6 +13,7 @@ noinst_DATA = \ >> resources/ui/virt-viewer-vm-connection.ui \ >> resources/ui/virt-viewer-preferences.ui \ >> resources/ui/remote-viewer-connect.ui \ >> + resources/ui/remote-viewer-iso-list.ui \ >> $(NULL) >> >> EXTRA_DIST = \ >> @@ -96,6 +97,8 @@ if HAVE_OVIRT >> libvirt_viewer_la_SOURCES += \ >> ovirt-foreign-menu.h \ >> ovirt-foreign-menu.c \ >> + remote-viewer-iso-list-dialog.c \ >> + remote-viewer-iso-list-dialog.h \ >> $(NULL) >> endif >> >> diff --git a/src/remote-viewer-iso-list-dialog.c b/src/remote-viewer-iso-list-dialog.c >> new file mode 100644 >> index 0000000..b3972ac >> --- /dev/null >> +++ b/src/remote-viewer-iso-list-dialog.c >> @@ -0,0 +1,115 @@ >> +/* >> + * Virt Viewer: A virtual machine console viewer >> + * >> + * Copyright (C) 2016 Red Hat, Inc. >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License as published by >> + * the Free Software Foundation; either version 2 of the License, or >> + * (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License >> + * along with this program; if not, write to the Free Software >> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA >> + */ >> + >> +#include <config.h> >> + >> +#include <glib/gi18n.h> >> + >> +#include "remote-viewer-iso-list-dialog.h" >> +#include "virt-viewer-util.h" >> + >> +G_DEFINE_TYPE(RemoteViewerISOListDialog, remote_viewer_iso_list_dialog, GTK_TYPE_DIALOG) >> + >> +#define DIALOG_PRIVATE(o) \ >> + (G_TYPE_INSTANCE_GET_PRIVATE((o), REMOTE_VIEWER_TYPE_ISO_LIST_DIALOG, RemoteViewerISOListDialogPrivate)) >> + >> +struct _RemoteViewerISOListDialogPrivate >> +{ >> + GtkBuilder *builder; >> + GtkWidget *notebook; >> +}; >> + >> +enum RemoteViewerIsoListDialogPages >> +{ >> + STATUS_PAGE = 0, >> + ISO_LIST_PAGE, >> +}; >> + >> +static void >> +remote_viewer_iso_list_dialog_dispose(GObject *object) >> +{ >> + RemoteViewerISOListDialog *self = REMOTE_VIEWER_ISO_LIST_DIALOG(object); >> + RemoteViewerISOListDialogPrivate *priv = self->priv; >> + >> + g_clear_object(&priv->builder); >> + >> + G_OBJECT_CLASS(remote_viewer_iso_list_dialog_parent_class)->dispose(object); >> +} >> + >> +static void >> +remote_viewer_iso_list_dialog_class_init(RemoteViewerISOListDialogClass *klass) >> +{ >> + GObjectClass *object_class = G_OBJECT_CLASS(klass); >> + >> + g_type_class_add_private(klass, sizeof(RemoteViewerISOListDialogPrivate)); >> + >> + object_class->dispose = remote_viewer_iso_list_dialog_dispose; >> +} >> + >> +static void >> +remote_viewer_iso_list_dialog_response(GtkDialog *dialog, >> + gint response_id, >> + gpointer user_data G_GNUC_UNUSED) >> +{ >> + RemoteViewerISOListDialog *self = REMOTE_VIEWER_ISO_LIST_DIALOG(dialog); >> + RemoteViewerISOListDialogPrivate *priv = self->priv; >> + >> + if (response_id != GTK_RESPONSE_NONE) >> + return; >> + >> + gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->notebook), STATUS_PAGE); >> + gtk_dialog_set_response_sensitive(GTK_DIALOG(self), GTK_RESPONSE_NONE, FALSE); >> + gtk_dialog_set_response_sensitive(GTK_DIALOG(self), GTK_RESPONSE_CLOSE, FALSE); >> +} >> + >> +static void >> +remote_viewer_iso_list_dialog_init(RemoteViewerISOListDialog *self) >> +{ >> + GtkWidget *content = gtk_dialog_get_content_area(GTK_DIALOG(self)); >> + RemoteViewerISOListDialogPrivate *priv = self->priv = DIALOG_PRIVATE(self); >> + >> + gtk_widget_set_size_request(GTK_WIDGET(self), 400, 300); >> + gtk_box_set_spacing(GTK_BOX(content), 6); >> + >> + priv->builder = virt_viewer_util_load_ui("remote-viewer-iso-list.ui"); >> + gtk_builder_connect_signals(priv->builder, self); >> + >> + priv->notebook = GTK_WIDGET(gtk_builder_get_object(priv->builder, "notebook")); >> + gtk_box_pack_start(GTK_BOX(content), priv->notebook, TRUE, TRUE, 0); >> + >> + gtk_dialog_add_buttons(GTK_DIALOG(self), >> + _("Refresh"), GTK_RESPONSE_NONE, >> + _("Close"), GTK_RESPONSE_CLOSE, >> + NULL); >> + >> + gtk_dialog_set_default_response(GTK_DIALOG(self), GTK_RESPONSE_CLOSE); >> + gtk_dialog_set_response_sensitive(GTK_DIALOG(self), GTK_RESPONSE_NONE, FALSE); >> + gtk_dialog_set_response_sensitive(GTK_DIALOG(self), GTK_RESPONSE_CLOSE, FALSE); >> + g_signal_connect(self, "response", G_CALLBACK(remote_viewer_iso_list_dialog_response), NULL); > > Can't most of this be done in glade as well? I think it is not possible to derive a widget from glade direcly, as I did here, deriving this class from GtkDialog. So we deal with dialog bits here, while the internals (notebook, treeview, etc) are done in glade. -- Eduardo de Barros Lima (Etrunko) Software Engineer - RedHat etrunko@xxxxxxxxxx _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list