[flud-devel] GUI help

Alen Peacock alenlpeacock at gmail.com
Sun Jul 30 22:09:12 PDT 2006


On 7/30/06, George Papdoukis <georgepapdoukis at yahoo.com> wrote:
> I noticed flud needs some user interface help.  Where should I look first to
> contribute?


Hey George,

I thought that I had something on the wiki about what the GUI should
look like, but it appears that I don't.  So here's a brief
description.

FludLocalClient demonstrates how to interface with a FludNode via a
local socket connection.  GUI clients should do the same.  They can
use any widget API or language that they want.

Initially, we've chose wxWidgets to get us to the point where we have
cross-platform GUI (Unix, Windows, OSX), but that may need some
rethinking as we progress.  I've focused most of my thoughts on the
Linux client initially, but Windows should be a high priority.

The current release includes DirCheckboxGUI.py, which provides a file
hierarchy view of the filesystem with small icons and 3-state
checkboxes (which is really 7 states internally).  You can monkey with
that to see where I'm at with file/directory selection.  It certainly
may need some tweaks.

Here's where I was going with that: the DirCheckbox should live on the
left side of the flud window, allowing the user to navigate through
the directory hierarchy and select files to include/exclude.  On the
right side should be a search panel, where the user can find groups or
types of files.  The search panel should search the entire filesystem
for files that match the user-provided criteria.  If the user has
selected a directory (or mutliple directories) in the left pane, the
search should be limited to that(those) directory(ies), and the search
panel should make it clear that this is happening.  Search criteria,
at least initially, should be entered into a single text box where the
user can type a query (such as 'mp3' or '*.doc').  Below the searchbox
should be a results pane.  At the head of the results pane should be a
'select all/exclude all' option.  If the user selects this, a 'rule'
is produced (such as "*.doc in /home/user/docs") that can be used to
find all such files whenever a backup operation is selected.  If the
user instead manually selects just a few of the search results, these
are added to the list of files to backup just as if the user had found
them by navigating in the left pane.

Another panel (perhaps accessible via a tab) should show meaningful
status information from the flud.log -- initially, perhaps,
completed/failed backup operations with a timestamp.  The user should
be able to 'drill down' on these to see which files were backed up
during a particular backup session, etc.

The GUI should also provide live status of backup operations.
Something as simple as a progress bar should be sufficient initially.
Perhaps at some future point we should show a panel with information
about upload/download rate, amount of data stored/storing, etc.

The whole thing should live in the system tray, even when the user
clicks to close the window.  Right click on the system tray icon
should allow the user to 'quit the client for real' (this doesn't kill
the FludNode.py service process, which runs separately).

When the user runs for the first time, the client should select
reasonable defaults.  Under Linux, this probably means that the user's
home directory should be selected for backup, with certain directories
(like web browser cache) excluded.

Under Windows, reasonable defaults probably look quite different, as
well as under MacOSX.  But I'm hoping that the general description of
the GUI sounds about right across all platforms.

If you'd like to work on this, fabulous.  If you have other ideas as
for how the GUI should look, or if you want to write in something
other than wxWidgets, that's fabulous too.  FludLocalClient.py should
give you a pretty good idea of how to communicate (including initial
authentication to FludNode).  Any contribution you can make would be
thankfully received.

I'll try to get some of this in the wiki soon.  Let me know if you run
into difficulties, and welcome to flud!

Alen



More information about the flud-devel mailing list