TODO List for integrating MGED features into Archer

---- ALPHA ISSUES ---
capability & features
=====================

Intended as a "list of work to be done" for porting MGED features to Archer.  The absence of a feature
does not necessarily mean it is intended that this feature be added, particularly for "minor" features
or features that are currently not working well in MGED to start with - these are primarily discussion
points.

* "Walkthrough" of the MGED menu features:

     MGED Feature                   |         Archer Status of Feature or Alternative to Feature
------------------------------------------------------------------------------------------------------
Render View options                 |                    UNKNOWN - NEED TO TEST - saveview, not sure about plot and postscript output
Preferences->Fonts                  |                    INCOMPLETE, lower priority
Create/Update .mgedrc               |                    INCOMPLETE - .archerrc exists, needs to be expanded as more preferences are implemented in Archer - ONGOING
Matrix Selection                    |                    UNKNOWN - NEED TO TEST
				    |    Ensure working command line level functionality for direct matrix
				    |    manipulation if needed.  For items without a matrix show the tab with
				    |    either no values specified or the identity matrix as the starting
				    |    template.  Full functionality here will require "limited xpush"
				    |    abilities - xpushing only to a specified depth, and possibly some
				    |    awareness of full path targets vs. toplevel targets.
Attribute Editor                    |                     DONE (can be done with attr command)
                                    |    This is a more general case of what is currently the General tab in
				    |    Archer for objects - make this into a CAD widget with the layout of
				    |    the General tab and the functionality of the Attribute editor -
				    |    General tab will become Attribute tab.  Will need to be able to
				    |    customize the standard attribute/value display to support things like
				    |    the color picker for rgb attribute
Keypoints			    |                     UNKNOWN - NEED TO TEST
				    |    Reports of keypoint (primitive implicit or possibly specified) being ignored in
				    |    rotation, relative edit, and possibly unknown other commands.
Sweep Zoom Rectangle                |                     INCOMPLETE - Need to see if this can be integrated as an option to the scale mode
Settings -> Constraint Coords.      |                     INCOMPLETE - This is worth preserving, but needs some though on how to integrate it.
Settings -> Rotate About            |                     INCOMPLETE - Save ability to rotate around view and maybe a specified keypoint to allow for flexibility
Settings -> Query Ray Effects       |                     INCOMPLETE - Will be handled elsewhere - nirt/query ray settings panel
Modes -> Display Manager            |                     INCOMPLETE - Archer is ogl only at the moment need to support other display managers and conditionalize the features that rely on OpenGL to only be active when ogl is.
Modes -> Rate Knobs                 |                     INCOMPLETE - Low priority
Tools -> ADC Control Panel          |                     INCOMPLETE - see if ADC gives us anything not provided by the measurement tool
Tools -> AnimMate                   |                     INCOMPLETE? - talk with Keith to see how he animated in Archer
Tools -> Query Ray                  |                     INCOMPLETE - convert to preferences tab or tool
Tools -> Build Pattern Tool         |                     INCOMPLETE - convert to Archer wizard
Tools -> Overlap Tool               |                     INCOMPLETE - expose in Archer as a tool
Tools -> Upgrade Database...        |                     INCOMPLETE - need dbupgrade on the command line?
Help -> Apropos                     |                     INCOMPLETE, not working well in MGED either?

* add an export menu to Archer that connects to auto-detected
  available exporters (g-* tools).

* numerous core commands missing that have not gone through
  deprecation (e, d, ...) -- suggest we first release with at least
  all current commands included (at least those documented in
  tutorials, quick ref card, html docs), but marked as deprecated
  then.

* user should fully own ~/.archerrc and be able to specify settings
  and overrides there (current says do not edit)

* user-manageable scripts and settings (similar to ~/.subversion)

* About Archer is out-of-date, references brlcad.com, survice logo,
  wrong BRL-CAD logo image, says archer is trademarked,
  acknowledgements is out of date (should remove or just put AUTHORS
  file).

* dm command is currently mged specific - need to migrate to libged
  and rework to allow usage by arbitrary GUIs.

---- BETA ISSUES ----
stability & usability
=====================

* fix traceback error (from tk::panedwindow, $w identify) when moving
  mouse before window is fully created, when opened with a .g file

* need a manual page

* raytrace button won't abort correctly due to using rtwizard rather
  than rt directly - will probably need fixes to rtwizard and archer

* need proper "raytrace control" panel for easy access to raytracing
  options

* fix archer/libdm labels/axes to not use pointer printing

* "archer -h" causes archer to halt with a Tk_Init error.  should
  display usage/help.

* reports "ArcherCore::getTreeMembers: faulty tree - " on some .g
  files, valid ones

* numerous warnings on exit on Mac OS X (10.6):
   <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
   <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to \
     catch errors as they are logged.
   <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0x492c
   ...

* diversion from mged philosophy, prompts whether to save file on exit
  (file not always in a saved state).  to prevent data loss on crash,
  data should at least always be written out to the main file, a
  secondary file, recorded as saved transactions, or some other
  mechanism.

* some usability-related icon issues (only a few of the more egregious)
  - torus tree-view icon has major aliasing/truncation
  - framebuffer image buttons need replacement (nuclear, mode?)
  - halfspace icon needs darkening
  - no part icon (needs one otherwise misleading label)

* Create menu should list primitive name, not our shorthand

* major GUI components (tree-view, command window, and graphics
  window) should be dockable and have their layout/docking preference
  be saved across sessions (so they can restore and retain similar mged
  appearance if they so choose)

* mouse behavior changed, rotates around view origin instead of model
  origin.  should provide for mouse behavior settings so classic mged
  defaults are available.

* double-clicking the tree view show-list to display/undisplay.
  toggling visibility should ideally be moved to an adjacent icon,
  with double-clicking reserved to expanding or hiding the subtree.

* make sure archer behaves properly with relative paths to dbopen.
  Windows in particular is doing something different in
  src/librt/db_open.c that should be a problem as it only records the
  file name (so gui will work, but dbopen + cd + rt will not).

* make it move comb members to other combs via drag and drop
  (currently copy and paste are options in the right-click menu).

* path names dragged from the tree view should drop into the command
  window as a path name. Currently the selected object's path is
  available in the command window's right-click menu.

* improve tab completion to cycle between matches Windows-style, and
  change listed results as you change the input, rather than just
  dumping all matches.

* should remove edit modes, or at least make them easily escapable

* visual indication (e.g. wireframe highlight) for currently selected
  object

* have a mechanism (e.g. right-click menu entry) to select nothing

* B command should select the object in the tree (might be true for
  other commands as well)

* support precise movement of selected bot faces

* interactive rotate/zoom needs to be linked to the canvas size. For
  example, a rotation drag from edge to edge should always result in
  a 360 degree rotations regardless of how fast you drag.

* "Apply" and "Reset" edit panel buttons should be in a fixed location.

* add option to hide the button toolbar for the benefit of advanced users.

* decide whether/how to support mouse bindings for interactive
  editing; currently only work for view edits

* shouldn't be able to edit things that aren't drawn

* horizontal scrollbar in the tree view needs to be made functional;
  it currently just spans the width of the widget.

* component select is slow for some models (particularly breps). Could
  be reworked to generate an ordered list based on projection of vlist
  convex hulls instead of ray intersection.

* an rm affecting a member of a large comb that's draw hangs a while,
  possibly because of repeated redraws from a chain of triggered
  commands.

* large bots can't be interactively edited without "Always Allow Edit"
  enable. This enables a table which is currently required by the
  implementation for storing selections, but is slow to load.

* support deleting triangles from bots. It's unknown what users want
  this for (model simplification, removing degenerate triangles,
  fitting models together, etc.).

* for bots, support joining faces in the same plane. It's unknown what
  users want this for.
