[virt-tools-list] [PATCH 1/2] Code related to vm_choose_dialog moved into separate files

Jonathon Jongsma jjongsma at redhat.com
Fri Oct 3 21:03:28 UTC 2014


ACK if a couple of indentation issues below are fixed


On Fri, 2014-10-03 at 17:02 +0200, Pavel Grunt wrote:
> ---
>  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..fb0c2b0
> --- /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;
> +	}

indentation issue here ^

> +
> +    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;

Indentation issue here ^

> +}
> +
> +/*
> + * 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>





More information about the virt-tools-list mailing list