Splitting and tabbing interface
From Buzztrax
The ideas is to have a flexible multiview user interface.
Contents |
Idea
Right now we have a fixed tab-based layout. This especialy works well on small window sizes or small screens. Ideally we'd like to have different layouts and maybee even multiple views (or same pages). Next we would like to allow the user to split the GUI into arbitratry segments vertically and horizontally. Each segment will contain a notebook widget with views.
It would be useful to have a way to make snapshots of layouts.
Layouts
An easy approach would be to only allow one view for each page and offer layout variants:
- tabbed: this is what we have
- multiview: a table
The table based multiview could be e.g.:
| sequence | machines | info |
| patterns | waves |
Maybe the user could even select different views for windowed/fullscreen mode.
Implementation
Idea 1
Programatically each notebook headline will have a menu-widget. This has actions like:
- split horizontally
- split vertically
- add new tab with ...
- machine view
- pattern view
- and so on
- close current tab
Idea 2
Have a component toolbar with one icon for each view and split/unsplit icons. After splitting new views are empty. Dragging an icon to an empty view puts such a view in there. Dragging to a non-empty view adds a tab with the new view. Holding Shift while dragging replaces the existing view.
Problems
jumping between views
right now one can press enter in the pattern view to go to the sequence view.
- we need to check if the view we would jump to is already shown.
- if it is shown twice we need to jump to the one that has been used last.
- if it is not show we could replace the sequence view with the pattern view
jump to a new view
- what do we do if the view we want to jump to isn't open yet. (e.g. one presses F1 to get help and there is no help view yet).
open a new window
- we can't the move it back into a tab
One idea for the above problems is to have a (hierachical) menu on the tabs to select an open view to show. Whenever a new view is opened it gets added to the menu. The menu first shows view types (machine view, pattern view) and then the view types. Selecting a view will show this one in the current tab.



