[virt-tools-list] [PATCH virt-viewer 08/11] Introduce ISO List dialog
Eduardo Lima (Etrunko)
etrunko at redhat.com
Tue Jul 19 17:51:23 UTC 2016
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 at redhat.com>
>> ---
>> 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 at redhat.com
More information about the virt-tools-list
mailing list