BOR LC 7: LC Usability / Windowing
Phil Weinstein, CADSWES, 4-24-2017, initial writing in progress.
Investigate some type of improved window docking structure within RiverWare for better control of
We may also want such a capability to be extendable to Plot Viewer and Editor dialogs.
Any windowing management features need to both well support particular repeated workflows, and be general enough to accommodate a broader set of unknown workflows.
We need to define particular specific use cases these features are intended to support. A few specific use cases would be good, representing both ad-hoc window instance layouts and persistent window instance layouts. Questions that the use case descriptions should answer include:
(1) QMainWindow / QDockWidgets
The QMainWindow class (of which many can simultaneously be shown -- the application is not limited to a single main window) provides a panel docking capability. Dockable panels need to be deployed as a QDockWidget instance, and don't support their own menubar. Like QMainWindow toolbars, dock windows can be dragged and snapped to any of the four sides of a QMainWindow, or can be torn out as their own window. Multiple QDockWidgets can be added to a single QDockArea, in which case tabs are automatically created in that area to switch between the different QDockWidgets. (Those possibilities can be limited by the application, e.g. it might be reasonable to dock a particular panel on the right or left side, but not the top or bottom). RiverWare makes use of QMainWindow QDockWidgets in only a few areas, the most promininant being a very simple use (single QDockWidget) for the Simulation Object List in the Workspace.
(2) Direct Control of Window Positions
With Qt on Windows we can precisely position and resize individual windows. (This was more difficult with the X Windows System on Unix/Linux platforms). Also we can receive window move events for any window. With these capabilities we can implement our own window management capabilities, e.g. for tiling and cascading windows.