[virt-tools-list] [PATCH virt-viewer] RFC: Simplify file transfer dialog UI

Fabiano Fidêncio fabiano at fidencio.org
Fri Aug 12 22:29:13 UTC 2016


Hey!

On Fri, Aug 12, 2016 at 9:59 PM, Jonathon Jongsma <jjongsma at redhat.com> wrote:
> When transferring a large number of files, the file transfer dialog was
> unusable because the window size would be larger than the client
> desktop. To solve this, we put the list of individual files into a
> GtkScrolledWindow. But to further simplify the dialog, these files are
> hidden by default in a GtkExpander, and there is a single overall
> progress bar that shows the status of all ongoing transfers.

We had a brief discussion on IRC about this patch.
I'd like to see virt-viewer taking the same approach taken by Nautilus
when transferring files. For instance, when selecting a bunch of files
and transferring them Nautilus shows: "Copying n files to <folder
name>" and shows just a single overall progress bar.

Also, would be really nice if some re-work/re-design happens on
spice-gtk so we can keep track of different file-transfer operations
(and then I'd love to see it implemented on virt-viewer as something
like presented in this Nautilus mockup:
https://raw.githubusercontent.com/gnome-design-team/gnome-mockups/master/nautilus/nautilus-next/ongoing-operations-wires.png

Anyways, I'm not sure how much time is worth to spend improving file
transfer. I'm just suggesting because I can see (by the mailing
list/improvements done recently) that we are already doing some
improvements on this so, why not? :-)

> ---
> This patch also requires new API from spice-gtk to calculate the overall
> progress:
>  spice_file_transfer_task_get_total_bytes()
>  spice_file_transfer_task_get_transferred_bytes()
>
> There are patches on the spice-devel list for this new API
>
>  .../ui/virt-viewer-file-transfer-dialog.ui         | 138 +++++++++++++++++++++
>  1 file changed, 138 insertions(+)
>  create mode 100644 src/resources/ui/virt-viewer-file-transfer-dialog.ui
>
> diff --git a/src/resources/ui/virt-viewer-file-transfer-dialog.ui b/src/resources/ui/virt-viewer-file-transfer-dialog.ui
> new file mode 100644
> index 0000000..a71af6d
> --- /dev/null
> +++ b/src/resources/ui/virt-viewer-file-transfer-dialog.ui
> @@ -0,0 +1,138 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<interface>
> +  <requires lib="gtk+" version="2.24"/>
> +  <!-- interface-naming-policy project-wide -->
> +  <template class="VirtViewerFileTransferDialog" parent="GtkDialog">
> +    <property name="default_width">400</property>
> +    <property name="can_focus">False</property>
> +    <property name="border_width">5</property>
> +    <property name="type_hint">dialog</property>
> +    <child internal-child="vbox">
> +      <object class="GtkVBox" id="dialog-vbox1">
> +        <property name="visible">True</property>
> +        <property name="can_focus">False</property>
> +        <property name="spacing">2</property>
> +        <property name="border-width">12</property>
> +        <child internal-child="action_area">
> +          <object class="GtkHButtonBox" id="dialog-action_area1">
> +            <property name="visible">True</property>
> +            <property name="can_focus">False</property>
> +            <property name="layout_style">end</property>
> +            <child>
> +              <placeholder/>
> +            </child>
> +            <child>
> +              <object class="GtkButton" id="button1">
> +                <property name="label">gtk-cancel</property>
> +                <property name="visible">True</property>
> +                <property name="can_focus">True</property>
> +                <property name="receives_default">True</property>
> +                <property name="use_underline">True</property>
> +                <property name="use_stock">True</property>
> +              </object>
> +              <packing>
> +                <property name="expand">False</property>
> +                <property name="fill">False</property>
> +                <property name="position">1</property>
> +              </packing>
> +            </child>
> +          </object>
> +          <packing>
> +            <property name="expand">True</property>
> +            <property name="fill">True</property>
> +            <property name="position">0</property>
> +          </packing>
> +        </child>
> +        <child>
> +          <object class="GtkVBox" id="vbox1">
> +            <property name="visible">True</property>
> +            <property name="can_focus">False</property>
> +            <property name="spacing">12</property>
> +            <child>
> +              <object class="GtkLabel" id="transfer_summary">
> +                <property name="visible">True</property>
> +                <property name="can_focus">False</property>
> +                <property name="label" translatable="yes">label</property>
> +              </object>
> +              <packing>
> +                <property name="expand">True</property>
> +                <property name="fill">True</property>
> +                <property name="position">0</property>
> +              </packing>
> +            </child>
> +            <child>
> +              <object class="GtkProgressBar" id="progressbar">
> +                <property name="visible">True</property>
> +                <property name="can_focus">False</property>
> +              </object>
> +              <packing>
> +                <property name="expand">True</property>
> +                <property name="fill">True</property>
> +                <property name="position">1</property>
> +              </packing>
> +            </child>
> +            <child>
> +              <object class="GtkExpander" id="files_expander">
> +                <property name="visible">True</property>
> +                <property name="can_focus">True</property>
> +                <child>
> +                  <object class="GtkScrolledWindow" id="scrolledwindow1">
> +                    <property name="height_request">200</property>
> +                    <property name="visible">True</property>
> +                    <property name="can_focus">True</property>
> +                    <property name="hscrollbar_policy">never</property>
> +                    <property name="vscrollbar_policy">automatic</property>
> +                    <child>
> +                      <object class="GtkViewport" id="viewport1">
> +                        <property name="visible">True</property>
> +                        <property name="can_focus">False</property>
> +                        <child>
> +                          <object class="GtkVBox" id="transfer_details">
> +                            <property name="margin-start">12</property>
> +                            <property name="spacing">12</property>
> +                            <property name="visible">True</property>
> +                            <property name="can_focus">False</property>
> +                            <child>
> +                              <placeholder/>
> +                            </child>
> +                            <child>
> +                              <placeholder/>
> +                            </child>
> +                            <child>
> +                              <placeholder/>
> +                            </child>
> +                          </object>
> +                        </child>
> +                      </object>
> +                    </child>
> +                  </object>
> +                </child>
> +                <child type="label">
> +                  <object class="GtkLabel" id="label1">
> +                    <property name="visible">True</property>
> +                    <property name="can_focus">False</property>
> +                    <property name="label" translatable="yes">Details</property>
> +                  </object>
> +                </child>
> +              </object>
> +              <packing>
> +                <property name="expand">True</property>
> +                <property name="fill">True</property>
> +                <property name="position">3</property>
> +                <property name="padding">12</property>
> +              </packing>
> +            </child>
> +          </object>
> +          <packing>
> +            <property name="expand">True</property>
> +            <property name="fill">True</property>
> +            <property name="position">1</property>
> +          </packing>
> +        </child>
> +      </object>
> +    </child>
> +    <action-widgets>
> +      <action-widget response="-6">button1</action-widget>
> +    </action-widgets>
> +  </template>
> +</interface>
> --
> 2.7.4
>
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list


Best Regards,
-- 
Fabiano Fidêncio




More information about the virt-tools-list mailing list