File Browser: Difference between revisions
Line 39: | Line 39: | ||
== Proposals == | == Proposals == | ||
=== Integrate Server Selection and File Browsing === | |||
Currently, some users have expressed confusion when they perform a ''File > Open'' operation and are immediately confronted with the [[Server Startup]] dialog. Server startup is necessary in this case because we need a server connection before we can display information for the user to browse, however we would like to look at ways to make this process more intuitive. One suggestion is to integrate server selection and file browsing into a single dialog: | |||
[[Image:Uber file browser.png|'''Proposed file browser with server connection functionality''']] | |||
In this case the upper-left-hand pane can be used to select servers, and the lower-left-hand and right-hand panes display favorites and file information for the selected server. The dialog would default to the "builtin" (local) server the first time it is used, so that it would display local filesystem information without having to make a server connection. Double-clicking a server in the upper-left-hand pane would initiate a connection to that server, and the dialog would display the connected server's filesystem. If the user opens a file with a server already connected, the dialog would default to displaying that server's filesystem. There are still some outstanding problems with this approach - "casual" server browsing is not supported. At the moment, choosing a server in the uppoer-left-hand pane means dropping any existing server connection and connecting to the new server before browsing can begin. We would need to protect against unintentional data loss in this case (in the future, support for multiple server connections per-client could make this a non-issue). | |||
=== Odds-and-Ends === | === Odds-and-Ends === | ||
Line 66: | Line 74: | ||
* Read - takes an absolute path, a file offset, and a buffer length as input and reads the given range of data from a file (client-side preview) | * Read - takes an absolute path, a file offset, and a buffer length as input and reads the given range of data from a file (client-side preview) | ||
* GetPreview - takes an absolute path, width, and height as input, and returns a bitmap image with given dimensions (server-side preview) | * GetPreview - takes an absolute path, width, and height as input, and returns a bitmap image with given dimensions (server-side preview) | ||
Revision as of 12:00, 28 September 2006
Overview
This page discusses current and future design issues for the ParaView file browser.
Requirements
- Grouping of animation files to improve responsiveness of the UI
- Store / retrieve user favorites
- Local and remote file browsing
- Enter paths manually
- Display a list of parents to the current directory
- Provide quick access to "special" folders, e.g. "Home", "Desktop", "My Favorites", etc.
- Multiselect related files, e.g. separate geometry and attribute files
- Display additional file attributes, e.g. size, create date, modify date, etc
Optional Requirements
- Provide create directory / delete / rename functionality?
- File previewing?
Current Design
The ParaQ client defines an abstract interface for file-browsing back-ends, class pqFileDialogModel. The two implementations of pqFileDialogModel are pqLocalFileDialogModel and pqServerFileDialogModel, which implement the required functionality for browsing the local host and a connected PVS server, respectively.
pqFileDialog is the Qt user interface component that is the "front end" for pqFileDialogModel, providing a common graphical user interface for both local and remote file browsing:
- The left-hand pane provides a server-specific list of "special" folders (e.g. Windows drives, "Home", "Desktop", "My Favorites", etc).
- The right-hand pane displays the contents of the currently-visible directory.
- The "Look in" combo-box lists the parent directories of the currently-visible directory, allowing rapid navigation "upwards" in the filesystem.
- Users may use the "File name" line entry to select files through manual entry. The user may enter absolute or relative paths. Relative paths are interpreted relative to the currently visible directory.
- Incomplete: related files (e.g. numbered animation files) can be grouped and expanded/collapsed to decrease clutter and make the UI more responsive.
- Proposed: users could drag-and-drop files and directories from the right-hand pane to the left-hand pane, where they will be retained as "favorites".
The following vtkPVServerFileListing APIs are used for remote file browsing:
- GetCurrentWorkingDirectory - like it says.
- GetSpecial - returns a list of "special" directories / files, including Windows drive letters, "home", "desktop", "my documents", and other platform-specific special files. Returns an absolute path and label for each directory / file.
- ActiveFileName
- ActiveFileIsDirectory
- GetDirectoryListing
Proposals
Integrate Server Selection and File Browsing
Currently, some users have expressed confusion when they perform a File > Open operation and are immediately confronted with the Server Startup dialog. Server startup is necessary in this case because we need a server connection before we can display information for the user to browse, however we would like to look at ways to make this process more intuitive. One suggestion is to integrate server selection and file browsing into a single dialog:
In this case the upper-left-hand pane can be used to select servers, and the lower-left-hand and right-hand panes display favorites and file information for the selected server. The dialog would default to the "builtin" (local) server the first time it is used, so that it would display local filesystem information without having to make a server connection. Double-clicking a server in the upper-left-hand pane would initiate a connection to that server, and the dialog would display the connected server's filesystem. If the user opens a file with a server already connected, the dialog would default to displaying that server's filesystem. There are still some outstanding problems with this approach - "casual" server browsing is not supported. At the moment, choosing a server in the uppoer-left-hand pane means dropping any existing server connection and connecting to the new server before browsing can begin. We would need to protect against unintentional data loss in this case (in the future, support for multiple server connections per-client could make this a non-issue).
Odds-and-Ends
- Single click on right panel should select it and update the UI. Currently, this is a double click.
- This isn't consistent with the Windows or Gnome dialogs? Tshead 11:51, 28 Sep 2006 (EDT)
- Division between left and right panel should be a draggable separator, defaulted to a standard, small size. If the user drags this division, that state should be saved as a setting that is applied every time the app comes up.
- Remove the '.' and '..' entry.
- Alphabetizing the items should follow windows standards - should not take into account capitalization (currently it does)
- Filename field must be 'sortable'
- Support multiple information fields in the UI - common file info fields. Sorting, on/off and movement of the fields must be supported. Movement of the fields must be saved in state. Sorting needn't be.
- Currently, the local file browser does support additional fields. The remote file browser does not (need to add support for additional fields in the the server manager API).
- The list on the right shouldn't have the tree decoration. This can be fixed in designer.
- The right hand pane is a tree because it can expand/collapse groups of files. This feature is currently implemented but underutilized. Tshead 11:51, 28 Sep 2006 (EDT)
Remote Server API
The following operations will need to be implemented by the vtkPVServerFileListing API to support optional requirements:
- GetFileGroups - returns a list of directories and a list of "file groups". A file group may contain one-to-many files and is represented by a label and a file count. Note that this means that grouping of related files is performed on the server-side, to reduce network traffic.
- GetFileGroup - returns the list of files (one-to-many) contained within a given group. Returns filename, file size, and last modification date for each file.
- AddFavorite - stores a label & absolute path on the server in per-user storage as a user "favorite". The label acts as a unique key.
- DeleteFavorite - deletes a favorite path from server per-user storage. A label is supplied as a unique key.
- CreateDirectory - takes an absolute path as input and creates a new directory on the server.
- Remove - takes an absolute path as input and deletes a directory / file on the server.
- Move - takes two absolute paths as input and renames the given directory / file on the server.
- Read - takes an absolute path, a file offset, and a buffer length as input and reads the given range of data from a file (client-side preview)
- GetPreview - takes an absolute path, width, and height as input, and returns a bitmap image with given dimensions (server-side preview)