[virt-tools-list] [PATCH virt-viewer] window: Factor out common code for toolbar items

Pavel Grunt pgrunt at redhat.com
Wed Jun 29 08:37:18 UTC 2016


On Tue, 2016-06-28 at 16:30 -0300, Eduardo Lima (Etrunko) wrote:
> On 06/28/2016 12:16 PM, Fabiano Fidêncio wrote:
> > 
> > On Tue, Jun 28, 2016 at 5:10 PM, Pavel Grunt <pgrunt at redhat.com> wrote:
> > > 
> > > Create toolbar widget in the loop
> > 
> > NACK from my side.
> > There is any gain on re-factoring a code that will be removed as soon
> > as we do the release.
> > Actually, it just makes my life harder in order to rebase Sagar's
> > patches on top of this change.
> 
> Agreed, only a small comment below.

I didn't want to make life of anyone harder by sending the patch, I just noticed
that part of the code because of the crash...
> 
> > 
> > 
> > > 
> > > ---
> > >  src/virt-viewer-window.c | 121 ++++++++++++++++++++++++++++++++--------
> > > -------
> > >  1 file changed, 83 insertions(+), 38 deletions(-)
> > > 
> > > diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
> > > index 1ebb423..b276ae8 100644
> > > --- a/src/virt-viewer-window.c
> > > +++ b/src/virt-viewer-window.c
> > > @@ -1062,56 +1062,101 @@ virt_viewer_window_menu_help_about(GtkWidget
> > > *menu G_GNUC_UNUSED,
> > >      g_object_unref(G_OBJECT(about));
> > >  }
> > > 
> > > +typedef struct {
> > > +    GtkWidget *icon;
> > > +    const gchar *icon_name;
> > > +    const gchar *label;
> > > +    const gchar *tooltip;
> > > +    const gboolean sensitive;
> > > +    const gboolean show_label;
> > > +    const GCallback callback;
> > > +} VirtViewerToolbarButton;
> > > +
> > > +static void
> > > +virt_viewer_window_toolbar_add_button(VirtViewerWindow *self,
> > > +                                      const VirtViewerToolbarButton
> > > *tb_button,
> > > +                                      GtkWidget **dest_widget)
> > > +{
> > > +    VirtViewerWindowPrivate *priv = self->priv;
> > > +    GtkToolItem *button = gtk_tool_button_new(tb_button->icon, tb_button-
> > > >label);
> > > +
> > > +    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(button), tb_button-
> > > >icon_name);
> > > +    gtk_tool_item_set_tooltip_text(button, tb_button->tooltip);
> > > +    gtk_tool_item_set_is_important(button, tb_button->show_label);
> > > +    gtk_widget_set_sensitive(GTK_WIDGET(button), tb_button->sensitive);
> > > +    gtk_widget_show_all(GTK_WIDGET(button));
> > > +    gtk_toolbar_insert(GTK_TOOLBAR(priv->toolbar), button, 0);
> > > +    g_signal_connect(button, "clicked", tb_button->callback, self);
> > > +
> > > +    if (dest_widget != NULL)
> > > +        *dest_widget = GTK_WIDGET(button);
> > > +}
> > > 
> > >  static void
> > >  virt_viewer_window_toolbar_setup(VirtViewerWindow *self)
> > >  {
> > > -    GtkWidget *button;
> > >      GtkWidget *overlay;
> > >      VirtViewerWindowPrivate *priv = self->priv;
> > > +    guint i;
> > > +
> > > +    const struct {
> > > +        const VirtViewerToolbarButton tb_button;
> > > +        GtkWidget **dest_widget;
> > > +    } toolbar_buttons[] = {
> > > +        {   /* Close connection */
> > > +            {
> > > +                NULL,
> > > +                "window-close",
> > > +                NULL,
> > > +                _("Disconnect"),
> > > +                TRUE,
> > > +                FALSE,
> > > +                G_CALLBACK(virt_viewer_window_menu_file_quit),
> > > +            },
> > > +            NULL,
> > > +        },{ /* USB Device selection */
> > > +            {
> > > +                gtk_image_new_from_resource(VIRT_VIEWER_RESOURCE_PREFIX"/
> > > icons/24x24/virt-viewer-usb.png"),
> > > +                NULL,
> > > +                _("USB device selection"),
> > > +                _("USB device selection"),
> > > +                TRUE,
> > > +                FALSE,
> > > +                G_CALLBACK(virt_viewer_window_menu_file_usb_device_select
> > > ion),
> > > +            },
> > > +            &priv->toolbar_usb_device_selection,
> > > +        },{ /* Send key */
> > > +            {
> > > +                NULL,
> > > +                "preferences-desktop-keyboard-shortcuts",
> > > +                NULL,
> > > +                _("Send key combination"),
> > > +                FALSE,
> > > +                FALSE,
> > > +                G_CALLBACK(virt_viewer_window_toolbar_send_key),
> > > +            },
> > > +            &priv->toolbar_send_key,
> > > +        },{ /* Leave fullscreen */
> > > +            {
> > > +                NULL,
> > > +                "view-restore",
> > > +                _("Leave fullscreen"),
> > > +                _("Leave fullscreen"),
> > > +                TRUE,
> > > +                TRUE,
> > > +                G_CALLBACK(virt_viewer_window_toolbar_leave_fullscreen),
> > > +            },
> > > +            NULL,
> > > +        },
> > > +    };
> 
> In the case we did not have patches in the queue that makes this
> obsolete,
Last time I saw the "redesign patches" they were using the current toolbar.
Probably there is something new...
>  it would be a good idea to have explicit field initializers
> for the items in the list. Besides being easier to read, you could save
> some lines of code for the NULL and FALSE ones.

I agree, it is a nice feature of C99

Thanks,
Pavel
> 
> Regards, Eduardo.
> 




More information about the virt-tools-list mailing list