[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