[virt-tools-list] [PATCH virt-viewer 3/4] ovirt-foreign-menu: Remove GtkMenu related functions

Christophe Fergeau cfergeau at redhat.com
Tue Jan 24 11:11:39 UTC 2017


On Mon, Jan 23, 2017 at 05:28:15PM -0200, Eduardo Lima (Etrunko) wrote:
> With this commit, we finish cleaning up ovirt foreign menu code, which
> only deals with data, leaving the UI bits to be handled properly in the
> new ISO list dialog.
> 
> This patch also updates remote-viewer to reflect the change.
> 
> Signed-off-by: Eduardo Lima (Etrunko) <etrunko at redhat.com>

See comment in previous patch regarding a potential merge,

Acked-by: Christophe Fergeau <cfergeau at redhat.com>

> ---
>  src/ovirt-foreign-menu.c | 99 ------------------------------------------------
>  src/remote-viewer.c      | 87 +++---------------------------------------
>  2 files changed, 6 insertions(+), 180 deletions(-)
> 
> diff --git a/src/ovirt-foreign-menu.c b/src/ovirt-foreign-menu.c
> index ef3ddd9..2939ae5 100644
> --- a/src/ovirt-foreign-menu.c
> +++ b/src/ovirt-foreign-menu.c
> @@ -350,22 +350,6 @@ ovirt_foreign_menu_fetch_iso_names_finish(OvirtForeignMenu *foreign_menu,
>  }
>  
>  
> -static void
> -ovirt_foreign_menu_activate_item_cb(GtkMenuItem *menuitem, gpointer user_data);
> -
> -
> -static void
> -menu_item_set_active_no_signal(GtkMenuItem *menuitem,
> -                               gboolean active,
> -                               GCallback callback,
> -                               gpointer user_data)
> -{
> -    g_signal_handlers_block_by_func(menuitem, callback, user_data);
> -    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), active);
> -    g_signal_handlers_unblock_by_func(menuitem, callback, user_data);
> -}
> -
> -
>  static void iso_name_set_cb(GObject *source_object,
>                              GAsyncResult *result,
>                              gpointer user_data)
> @@ -447,88 +431,6 @@ gboolean ovirt_foreign_menu_set_current_iso_name_finish(OvirtForeignMenu *foreig
>  }
>  
>  
> -static void
> -ovirt_foreign_menu_iso_name_changed(GObject *source_object,
> -                                    GAsyncResult *result,
> -                                    gpointer user_data G_GNUC_UNUSED)
> -{
> -    OvirtForeignMenu *foreign_menu = OVIRT_FOREIGN_MENU(source_object);
> -    GError *error = NULL;
> -
> -    if (!ovirt_foreign_menu_set_current_iso_name_finish(foreign_menu, result, &error)) {
> -        g_warning(error ? error->message : "Failed to change CD");
> -        g_clear_error(&error);
> -        return;
> -    }
> -
> -    g_object_notify(G_OBJECT(foreign_menu), "file");
> -}
> -
> -
> -static void
> -ovirt_foreign_menu_activate_item_cb(GtkMenuItem *menuitem, gpointer user_data)
> -{
> -    OvirtForeignMenu *foreign_menu;
> -    const char *iso_name = NULL;
> -    gboolean checked;
> -
> -    checked = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem));
> -    foreign_menu = OVIRT_FOREIGN_MENU(user_data);
> -    g_return_if_fail(foreign_menu->priv->cdrom != NULL);
> -    g_return_if_fail(foreign_menu->priv->next_iso_name == NULL);
> -
> -    g_debug("'%s' clicked", gtk_menu_item_get_label(menuitem));
> -
> -    /* We only want to move the check mark for the currently selected ISO
> -     * when ovirt_cdrom_update_async() is successful, so for now we move
> -     * the check mark back to where it was before
> -     */
> -    menu_item_set_active_no_signal(menuitem, !checked,
> -                                   (GCallback)ovirt_foreign_menu_activate_item_cb,
> -                                   foreign_menu);
> -
> -    if (checked) {
> -        iso_name = gtk_menu_item_get_label(menuitem);
> -    }
> -    ovirt_foreign_menu_set_current_iso_name_async(foreign_menu, iso_name, NULL,
> -                                                  ovirt_foreign_menu_iso_name_changed,
> -                                                  menuitem);
> -}
> -
> -
> -GtkWidget *ovirt_foreign_menu_get_gtk_menu(OvirtForeignMenu *foreign_menu)
> -{
> -    GtkWidget *gtk_menu;
> -    GList *it;
> -    char *current_iso;
> -
> -    if (foreign_menu->priv->iso_names == NULL) {
> -        g_debug("ISO list is empty, no menu to show");
> -        return NULL;
> -    }
> -    g_debug("Creating GtkMenu for foreign menu");
> -    current_iso = ovirt_foreign_menu_get_current_iso_name(foreign_menu);
> -    gtk_menu = gtk_menu_new();
> -    for (it = foreign_menu->priv->iso_names; it != NULL; it = it->next) {
> -        GtkWidget *menuitem;
> -
> -        menuitem = gtk_check_menu_item_new_with_label((char *)it->data);
> -        if (g_strcmp0((char *)it->data, current_iso) == 0) {
> -            g_warn_if_fail(g_strcmp0(current_iso, foreign_menu->priv->current_iso_name) == 0);
> -            gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem),
> -                                           TRUE);
> -        }
> -        g_signal_connect(menuitem, "activate",
> -                         G_CALLBACK(ovirt_foreign_menu_activate_item_cb),
> -                         foreign_menu);
> -        gtk_menu_shell_append(GTK_MENU_SHELL(gtk_menu), menuitem);
> -    }
> -    g_free(current_iso);
> -
> -    return gtk_menu;
> -}
> -
> -
>  static void ovirt_foreign_menu_set_files(OvirtForeignMenu *menu,
>                                           const GList *files)
>  {
> @@ -594,7 +496,6 @@ static void cdrom_file_refreshed_cb(GObject *source_object,
>                       "file", &menu->priv->current_iso_name,
>                       NULL);
>      }
> -    g_object_notify(G_OBJECT(menu), "file");
>      if (menu->priv->cdrom != NULL) {
>          ovirt_foreign_menu_next_async_step(menu, task, STATE_CDROM_FILE);
>      } else {
> diff --git a/src/remote-viewer.c b/src/remote-viewer.c
> index 29d7db1..d04dbb5 100644
> --- a/src/remote-viewer.c
> +++ b/src/remote-viewer.c
> @@ -79,7 +79,6 @@ static OvirtVm * choose_vm(GtkWindow *main_window,
>                             char **vm_name,
>                             OvirtCollection *vms,
>                             GError **error);
> -static gboolean remote_viewer_refresh_ovirt_foreign_menu(gpointer user_data);
>  #endif
>  
>  static gboolean remote_viewer_start(VirtViewerApp *self, GError **error);
> @@ -772,33 +771,11 @@ authenticate_cb(RestProxy *proxy, G_GNUC_UNUSED RestProxyAuth *auth,
>  static void
>  ovirt_foreign_menu_update(GtkApplication *gtkapp, GtkWindow *gtkwin, G_GNUC_UNUSED gpointer data)
>  {
> -    RemoteViewer *app = REMOTE_VIEWER(gtkapp);
> +    RemoteViewer *self = REMOTE_VIEWER(gtkapp);
>      VirtViewerWindow *win = g_object_get_data(G_OBJECT(gtkwin), "virt-viewer-window");
> -    GtkWidget *menu = g_object_get_data(G_OBJECT(win), "foreign-menu");
> -    GtkWidget *submenu;
> -
> -    if (app->priv->ovirt_foreign_menu == NULL) {
> -        /* nothing to do */
> -        return;
> -    }
> -
> -    submenu = ovirt_foreign_menu_get_gtk_menu(app->priv->ovirt_foreign_menu);
> -    if (submenu == NULL) {
> -        /* No items to show, no point in showing the menu */
> -        if (menu != NULL)
> -           gtk_widget_set_visible(menu, FALSE);
> -        g_object_set_data(G_OBJECT(win), "foreign-menu", NULL);
> -        return;
> -    }
> -
> -    if (menu == NULL) {
> -        menu = GTK_WIDGET(gtk_builder_get_object(virt_viewer_window_get_builder(win), "menu-change-cd"));
> -        g_object_set_data(G_OBJECT(win), "foreign-menu", menu);
> -        gtk_widget_set_visible(menu, TRUE);
> -    }
> -
> -    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu), submenu);
> -    gtk_widget_show_all(menu);
> +    GtkBuilder *builder = virt_viewer_window_get_builder(win);
> +    GtkWidget *menu = GTK_WIDGET(gtk_builder_get_object(builder, "menu-change-cd"));
> +    gtk_widget_set_visible(menu, self->priv->ovirt_foreign_menu != NULL);
>  }
>  
>  static void
> @@ -821,52 +798,6 @@ ovirt_foreign_menu_updated(RemoteViewer *self)
>  }
>  
>  static void
> -ovirt_foreign_menu_fetch_iso_names_cb(GObject *source_object,
> -                                      GAsyncResult *result,
> -                                      gpointer user_data)
> -{
> -    OvirtForeignMenu *foreign_menu = OVIRT_FOREIGN_MENU(source_object);
> -    RemoteViewer *self = REMOTE_VIEWER(user_data);
> -    VirtViewerApp *app = VIRT_VIEWER_APP(user_data);
> -    GError *error = NULL;
> -    GList *iso_list;
> -
> -    iso_list = ovirt_foreign_menu_fetch_iso_names_finish(foreign_menu, result, &error);
> -
> -    if (!iso_list) {
> -        virt_viewer_app_simple_message_dialog(app, error ? error->message : _("Failed to fetch CD names"));
> -        g_clear_error(&error);
> -        return;
> -     }
> -
> -    ovirt_foreign_menu_updated(self);
> -    g_timeout_add_seconds(300, remote_viewer_refresh_ovirt_foreign_menu, self);
> -}
> -
> -static gboolean
> -remote_viewer_refresh_ovirt_foreign_menu(gpointer user_data)
> -{
> -    VirtViewerApp *app = VIRT_VIEWER_APP(user_data);
> -    RemoteViewer *self = REMOTE_VIEWER(user_data);
> -
> -    g_debug("Refreshing foreign menu iso list");
> -    ovirt_foreign_menu_fetch_iso_names_async(self->priv->ovirt_foreign_menu,
> -                                             NULL,
> -                                             ovirt_foreign_menu_fetch_iso_names_cb,
> -                                             app);
> -    return G_SOURCE_REMOVE;
> -}
> -
> -static void
> -ovirt_foreign_menu_changed(OvirtForeignMenu *foreign_menu G_GNUC_UNUSED,
> -                           GParamSpec *pspec G_GNUC_UNUSED,
> -                           VirtViewerApp *app)
> -{
> -    ovirt_foreign_menu_updated(REMOTE_VIEWER(app));
> -}
> -
> -
> -static void
>  virt_viewer_app_set_ovirt_foreign_menu(VirtViewerApp *app,
>                                         OvirtForeignMenu *foreign_menu)
>  {
> @@ -875,17 +806,11 @@ virt_viewer_app_set_ovirt_foreign_menu(VirtViewerApp *app,
>      g_return_if_fail(OVIRT_IS_FOREIGN_MENU(foreign_menu));
>  
>      self = REMOTE_VIEWER(app);
> -    if (self->priv->ovirt_foreign_menu != NULL) {
> -        g_object_unref(G_OBJECT(self->priv->ovirt_foreign_menu));
> -    }
> +    g_clear_object(&self->priv->ovirt_foreign_menu);
>      self->priv->ovirt_foreign_menu = foreign_menu;
> -    g_signal_connect(G_OBJECT(foreign_menu), "notify::file",
> -                     (GCallback)ovirt_foreign_menu_changed, app);
> -
>      g_signal_connect(G_OBJECT(app), "window-added",
>                       (GCallback)ovirt_foreign_menu_update, NULL);
> -
> -    remote_viewer_refresh_ovirt_foreign_menu(self);
> +    ovirt_foreign_menu_updated(self);
>  }
>  
>  static gboolean
> -- 
> 2.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: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20170124/411f7938/attachment.sig>


More information about the virt-tools-list mailing list