File Browser: Difference between revisions

From ParaQ Wiki
Jump to navigationJump to search
No edit summary
Line 39: Line 39:


== Proposals ==
== Proposals ==
=== Odds-and-Ends ===


* Single click on right panel should select it and update the UI.  Currently, this is a double click.
* Single click on right panel should select it and update the UI.  Currently, this is a double click.
Line 50: Line 52:
* The list on the right shouldn't have the tree decoration. This can be fixed in designer.
* 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. [[User:Tshead|Tshead]] 11:51, 28 Sep 2006 (EDT)
** The right hand pane is a tree because it can expand/collapse groups of files.  This feature is currently implemented but underutilized. [[User:Tshead|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:
The following operations will need to be implemented by the vtkPVServerFileListing API to support optional requirements:
Line 62: Line 66:
* 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)
=== Integrate Server Selection and File Browsing ===


[[Image:Uber file browser.png|'''Proposed file browser with server connection functionality''']]
[[Image:Uber file browser.png|'''Proposed file browser with server connection functionality''']]

Revision as of 11:53, 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".

File browser.png

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

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)

Integrate Server Selection and File Browsing

Proposed file browser with server connection functionality