[virt-tools-list] [PATCH v2] Code related to vm_choose_dialog moved into separate files

Christophe Fergeau cfergeau at redhat.com
Thu Oct 9 12:01:52 UTC 2014


Hey,

I believe this can be squashed into the ovirt commit as this hasn't been
committed yet? If this makes sense to you, I'll do the change myself
before pushing.

You also need to update po/POTFILES.in when you add new files with
translations. cd po/; intltool-update -m; will tell you about the
missing files. I've fixed that locally so no need to send another
iteration of the patches.

Regarding the commit logs, I'd tend to use
"Show VM chooser dialog when oVirt VM name is missing"
and
"Show VM chooser dialog when starting virt-viewer with no arg" (even
though it's a bit long)
When looking at the git short log (git log --oneline), it's more
explicit what these commits are about this way.
Do you mind if I change them?

Thanks,

Christophe

On Mon, Oct 06, 2014 at 10:31:16AM +0200, Pavel Grunt wrote:
> ---
> v2:
>  Fix of wrong indentation
> 
>  src/Makefile.am                   |   1 +
>  src/remote-viewer.c               |  85 ++++++------------------------
>  src/virt-viewer-vm-connection.c   | 105 ++++++++++++++++++++++++++++++++++++++
>  src/virt-viewer-vm-connection.h   |  36 +++++++++++++
>  src/virt-viewer-vm-connection.xml |  20 --------
>  5 files changed, 159 insertions(+), 88 deletions(-)
>  create mode 100644 src/virt-viewer-vm-connection.c
>  create mode 100644 src/virt-viewer-vm-connection.h
> 
> diff --git a/src/Makefile.am b/src/Makefile.am
> index a33417c..e76da2c 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -47,6 +47,7 @@ COMMON_SOURCES =					\
>  	virt-viewer-display.h virt-viewer-display.c	\
>  	virt-viewer-notebook.h virt-viewer-notebook.c	\
>  	virt-viewer-window.h virt-viewer-window.c	\
> +	virt-viewer-vm-connection.h virt-viewer-vm-connection.c	\
>  	view/autoDrawer.c				\
>  	view/autoDrawer.h				\
>  	view/drawer.c					\
> diff --git a/src/remote-viewer.c b/src/remote-viewer.c
> index 3b44269..485baf2 100644
> --- a/src/remote-viewer.c
> +++ b/src/remote-viewer.c
> @@ -31,6 +31,7 @@
>  #ifdef HAVE_OVIRT
>  #include <govirt/govirt.h>
>  #include "ovirt-foreign-menu.h"
> +#include "virt-viewer-vm-connection.h"
>  #endif
>  
>  #ifdef HAVE_SPICE_GTK
> @@ -75,7 +76,7 @@ enum {
>  };
>  
>  #ifdef HAVE_OVIRT
> -static OvirtVm * choose_vm_dialog(char **vm_name, OvirtCollection *vms, GError **error);
> +static OvirtVm * choose_vm(char **vm_name, OvirtCollection *vms, GError **error);
>  #endif
>  
>  static gboolean remote_viewer_start(VirtViewerApp *self);
> @@ -861,7 +862,7 @@ create_ovirt_session(VirtViewerApp *app, const char *uri, GError **err)
>      }
>      if (vm_name == NULL ||
>          (vm = OVIRT_VM(ovirt_collection_lookup_resource(vms, vm_name))) == NULL) {
> -        vm = choose_vm_dialog(&vm_name, vms, &error);
> +        vm = choose_vm(&vm_name, vms, &error);
>          if (vm == NULL) {
>              goto error;
>          }
> @@ -1133,91 +1134,39 @@ connect_dialog(gchar **uri)
>  
>  
>  #ifdef HAVE_OVIRT
> -static void
> -treeview_row_activated_cb(GtkTreeView *treeview G_GNUC_UNUSED,
> -                          GtkTreePath *path G_GNUC_UNUSED,
> -                          GtkTreeViewColumn *col G_GNUC_UNUSED,
> -                          gpointer userdata)
> -{
> -    gtk_widget_activate(GTK_WIDGET(userdata));
> -}
> -
> -static void
> -treeselection_changed_cb(GtkTreeSelection *selection, gpointer userdata)
> -{
> -    gtk_widget_set_sensitive(GTK_WIDGET(userdata),
> -                             gtk_tree_selection_count_selected_rows(selection) == 1);
> -}
> -
> -
>  static OvirtVm *
> -choose_vm_dialog(char **vm_name, OvirtCollection *vms_collection, GError **error)
> +choose_vm(char **vm_name, OvirtCollection *vms_collection, GError **error)
>  {
> -    GtkBuilder *vm_connection;
> -    GtkWidget *dialog;
> -    GtkButton *button_connect;
> -    GtkTreeView *treeview;
> -    GtkTreeModel *store;
> -    GtkTreeSelection *select;
> +    GtkListStore *model;
>      GtkTreeIter iter;
>      GHashTable *vms;
>      GHashTableIter vms_iter;
> -    OvirtVm *vm;
>      OvirtVmState state;
> -    int response;
> -    gboolean any_vm_running = FALSE;
> +    OvirtVm *vm;
>  
>      g_return_val_if_fail(vm_name != NULL, NULL);
>      if (*vm_name != NULL) {
>          free(*vm_name);
>      }
>  
> -    vms = ovirt_collection_get_resources(vms_collection);
> -
> -    vm_connection = virt_viewer_util_load_ui("virt-viewer-vm-connection.xml");
> -    dialog = GTK_WIDGET(gtk_builder_get_object(vm_connection, "vm-connection-dialog"));
> -    button_connect = GTK_BUTTON(gtk_builder_get_object(vm_connection, "button-connect"));
> -    treeview = GTK_TREE_VIEW(gtk_builder_get_object(vm_connection, "treeview"));
> -    select = GTK_TREE_SELECTION(gtk_builder_get_object(vm_connection, "treeview-selection"));
> -    store = GTK_TREE_MODEL(gtk_builder_get_object(vm_connection, "store"));
> -
> -    g_signal_connect(treeview, "row-activated",
> -        G_CALLBACK(treeview_row_activated_cb), button_connect);
> -    g_signal_connect(select, "changed",
> -        G_CALLBACK(treeselection_changed_cb), button_connect);
> +    model = gtk_list_store_new(1, G_TYPE_STRING);
>  
> +    vms = ovirt_collection_get_resources(vms_collection);
>      g_hash_table_iter_init(&vms_iter, vms);
>      while (g_hash_table_iter_next(&vms_iter, (gpointer *) vm_name, (gpointer *) &vm)) {
>          g_object_get(G_OBJECT(vm), "state", &state, NULL);
>          if (state == OVIRT_VM_STATE_UP) {
> -            gtk_list_store_append(GTK_LIST_STORE(store), &iter);
> -            gtk_list_store_set(GTK_LIST_STORE(store), &iter, 0, *vm_name, -1);
> -            any_vm_running = TRUE;
> +            gtk_list_store_append(model, &iter);
> +            gtk_list_store_set(model, &iter, 0, *vm_name, -1);
>         }
>      }
> -    *vm_name = NULL;
> -    if (any_vm_running) {
> -        gtk_widget_show_all(dialog);
> -        response = gtk_dialog_run(GTK_DIALOG(dialog));
> -        gtk_widget_hide(dialog);
> -        if (response == GTK_RESPONSE_ACCEPT &&
> -            gtk_tree_selection_get_selected(select, &store, &iter)) {
> -            gtk_tree_model_get(store, &iter, 0, vm_name, -1);
> -            vm = OVIRT_VM(ovirt_collection_lookup_resource(vms_collection, *vm_name));
> -        } else {
> -            g_set_error_literal(error,
> -                                VIRT_VIEWER_ERROR, VIRT_VIEWER_VM_CHOOSE_DIALOG_CANCELLED,
> -                                _("No virtual machine was chosen"));
> -            vm = NULL;
> -        }
> -    } else {
> -        g_set_error_literal(error,
> -                            VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_FAILED,
> -                            _("No running virtual machines found"));
> -        vm = NULL;
> -    }
> -    gtk_widget_destroy(dialog);
> -    g_object_unref(G_OBJECT(vm_connection));
> +
> +    *vm_name = virt_viewer_vm_connection_choose_name_dialog(GTK_TREE_MODEL(model), error);
> +    g_object_unref(model);
> +    if (*vm_name == NULL)
> +        return NULL;
> +
> +    vm = OVIRT_VM(ovirt_collection_lookup_resource(vms_collection, *vm_name));
>  
>      return vm;
>  }
> diff --git a/src/virt-viewer-vm-connection.c b/src/virt-viewer-vm-connection.c
> new file mode 100644
> index 0000000..f6fcd03
> --- /dev/null
> +++ b/src/virt-viewer-vm-connection.c
> @@ -0,0 +1,105 @@
> +/*
> + * Virt Viewer: A virtual machine console viewer
> + *
> + * Copyright (C) 2014 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.h>
> +#include <glib/gi18n.h>
> +
> +#include "virt-viewer-vm-connection.h"
> +#include "virt-viewer-util.h"
> +
> +static void
> +treeview_row_activated_cb(GtkTreeView *treeview G_GNUC_UNUSED,
> +                          GtkTreePath *path G_GNUC_UNUSED,
> +                          GtkTreeViewColumn *col G_GNUC_UNUSED,
> +                          gpointer userdata)
> +{
> +    gtk_widget_activate(GTK_WIDGET(userdata));
> +}
> +
> +static void
> +treeselection_changed_cb(GtkTreeSelection *selection, gpointer userdata)
> +{
> +    gtk_widget_set_sensitive(GTK_WIDGET(userdata),
> +                             gtk_tree_selection_count_selected_rows(selection) == 1);
> +}
> +
> +gchar*
> +virt_viewer_vm_connection_choose_name_dialog(GtkTreeModel *model, GError **error)
> +{
> +    GtkBuilder *vm_connection;
> +    GtkWidget *dialog;
> +    GtkButton *button_connect;
> +    GtkTreeView *treeview;
> +    GtkTreeSelection *select;
> +    GtkTreeIter iter;
> +    int dialog_response;
> +    gchar *vm_name = NULL;
> +
> +    g_return_val_if_fail(model != NULL, NULL);
> +
> +    if (!gtk_tree_model_get_iter_first(model, &iter)) {
> +        g_set_error_literal(error,
> +                            VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_FAILED,
> +                            _("No virtual machine found"));
> +        return NULL;
> +    }
> +
> +    vm_connection = virt_viewer_util_load_ui("virt-viewer-vm-connection.xml");
> +    g_return_val_if_fail(vm_connection != NULL, NULL);
> +
> +    dialog = GTK_WIDGET(gtk_builder_get_object(vm_connection, "vm-connection-dialog"));
> +    button_connect = GTK_BUTTON(gtk_builder_get_object(vm_connection, "button-connect"));
> +    treeview = GTK_TREE_VIEW(gtk_builder_get_object(vm_connection, "treeview"));
> +    select = GTK_TREE_SELECTION(gtk_builder_get_object(vm_connection, "treeview-selection"));
> +    gtk_tree_view_set_model(treeview, model);
> +
> +    g_signal_connect(treeview, "row-activated",
> +                     G_CALLBACK(treeview_row_activated_cb), button_connect);
> +    g_signal_connect(select, "changed",
> +                     G_CALLBACK(treeselection_changed_cb), button_connect);
> +
> +    gtk_widget_show_all(dialog);
> +    dialog_response = gtk_dialog_run(GTK_DIALOG(dialog));
> +    gtk_widget_hide(dialog);
> +
> +    if (dialog_response == GTK_RESPONSE_ACCEPT &&
> +        gtk_tree_selection_get_selected(select, &model, &iter)) {
> +        gtk_tree_model_get(model, &iter, 0, &vm_name, -1);
> +    } else {
> +        g_set_error_literal(error,
> +                            VIRT_VIEWER_ERROR, VIRT_VIEWER_VM_CHOOSE_DIALOG_CANCELLED,
> +                            _("No virtual machine was chosen"));
> +    }
> +
> +    gtk_widget_destroy(dialog);
> +    g_object_unref(G_OBJECT(vm_connection));
> +
> +    return vm_name;
> +}
> +
> +/*
> + * Local variables:
> + *  c-indent-level: 4
> + *  c-basic-offset: 4
> + *  indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/src/virt-viewer-vm-connection.h b/src/virt-viewer-vm-connection.h
> new file mode 100644
> index 0000000..d198c89
> --- /dev/null
> +++ b/src/virt-viewer-vm-connection.h
> @@ -0,0 +1,36 @@
> +/*
> + * Virt Viewer: A virtual machine console viewer
> + *
> + * Copyright (C) 2014 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
> + */
> +
> +#ifndef VIRT_VIEWER_VM_CONNECTION_H
> +#define VIRT_VIEWER_VM_CONNECTION_H
> +
> +#include <glib.h>
> +#include <gtk/gtk.h>
> +
> +gchar* virt_viewer_vm_connection_choose_name_dialog(GtkTreeModel *model, GError **error);
> +
> +#endif
> +/*
> + * Local variables:
> + *  c-indent-level: 4
> + *  c-basic-offset: 4
> + *  indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/src/virt-viewer-vm-connection.xml b/src/virt-viewer-vm-connection.xml
> index 147dc92..04797fa 100644
> --- a/src/virt-viewer-vm-connection.xml
> +++ b/src/virt-viewer-vm-connection.xml
> @@ -1,14 +1,6 @@
>  <?xml version="1.0" encoding="UTF-8"?>
>  <!-- Generated with glade 3.16.1 -->
>  <interface>
> -  <object class="GtkListStore" id="store">
> -    <columns>
> -      <!-- column-name name -->
> -      <column type="gchararray"/>
> -      <!-- column-name state -->
> -      <column type="gchararray"/>
> -    </columns>
> -  </object>
>    <object class="GtkDialog" id="vm-connection-dialog">
>      <property name="can_focus">False</property>
>      <property name="border_width">5</property>
> @@ -71,7 +63,6 @@
>            <object class="GtkTreeView" id="treeview">
>              <property name="visible">True</property>
>              <property name="can_focus">True</property>
> -            <property name="model">store</property>
>              <property name="headers_visible">False</property>
>              <property name="search_column">0</property>
>              <property name="enable_grid_lines">horizontal</property>
> @@ -89,17 +80,6 @@
>                  </child>
>                </object>
>              </child>
> -            <child>
> -              <object class="GtkTreeViewColumn" id="treeviewcolumn2">
> -                <property name="title" translatable="yes">State</property>
> -                <child>
> -                  <object class="GtkCellRendererText" id="cellrenderertext2"/>
> -                  <attributes>
> -                    <attribute name="text">1</attribute>
> -                  </attributes>
> -                </child>
> -              </object>
> -            </child>
>            </object>
>            <packing>
>              <property name="expand">True</property>
> -- 
> 1.9.3
> 
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20141009/02853c70/attachment.sig>


More information about the virt-tools-list mailing list