diff --git a/doc/technical/stage/style/Timeline.txt b/doc/technical/stage/style/Timeline.txt index ab1c27505..4f35b0395 100644 --- a/doc/technical/stage/style/Timeline.txt +++ b/doc/technical/stage/style/Timeline.txt @@ -76,6 +76,25 @@ slopes:: - class `.track-slope--deep2` for two consecutive nested steps combined. - likewise class `.track-slope--deep3` for three and class `.track-slope--deep4` for four combined slopes - finally, class `.track-slope--verydeep` is used for five and more combined upward (closing) slopes +header:: + The track header area to the left of the timeline display is built up „conventionally“, by nested widgets + + + - the container spanning the total height of the timeline display (moving with the scrollbar): `.timeline__head` + - at the top sits a small navigator control with class `.timeline__navi` + - the remaining space below is taken by a »Patchbay« container with class `.timeline__pbay` +fork head:: + Located within the PatchbayWidget resides a nested structure of fork head controls + - each such TrackHeadWidget is derived from Gtk::Grid and marked with class `.fork__head` + - the first row in the grid holds a Track Header label and menu,an ElementBoxWidget with class `.elementbox` + - the second row corresponds to the _content area_ of the track itself, + and hold the controls for this track's scope, i.e. the track _together with all nested sub-tracks._ + - in the second cell in this row resides the HeadControlArea with class `.fork__control` + - next comes a padding row to help synchronising track head and track body display + - Additional sub-Tracks are added as additional lines to the grid, and each such line + will hold a nested TrackHeadWidget in the second cell; this also implies that this + nested sub-Track head can again hold deeper nested sub-Tracks.... + - The first column to the left side, starting from the second row will be increased accordingly to indicate + the nested fork structure, rendered as a nested set of »stave brackets« with class `.fork__bracket` [red]##TODO 10/2022:## diff --git a/src/stage/lumiera-light-theme-complement.css b/src/stage/lumiera-light-theme-complement.css index 37fe31a1f..1eba6dc61 100644 --- a/src/stage/lumiera-light-theme-complement.css +++ b/src/stage/lumiera-light-theme-complement.css @@ -81,3 +81,11 @@ .track-slope--verydeep { border-width: 20px; } + +/* bracket structure to indicate track scopes + * - base width is derived from font 'em' + * - drawing is in (text) colour (TODO: selection state) + */ + .fork__bracket { + padding-left: 2px; +} diff --git a/src/stage/style-scheme.cpp b/src/stage/style-scheme.cpp index 67090f2ea..9ad2fab7f 100644 --- a/src/stage/style-scheme.cpp +++ b/src/stage/style-scheme.cpp @@ -80,6 +80,14 @@ namespace stage { cuString CLASS_slope_deep4 {"track-slope--deep4"}; cuString CLASS_slope_verydeep{"track-slope--verydeep"}; + cuString CLASS_timeline_head {"timeline__head"}; + cuString CLASS_timeline_navi {"timeline__navi"}; + cuString CLASS_timeline_pbay {"timeline__pbay"}; + + cuString CLASS_fork_head {"fork__head"}; + cuString CLASS_fork_bracket {"fork__bracket"}; + cuString CLASS_fork_control {"fork__control"}; + cuString CLASS_background {"background"}; ///< opaque backdrop diff --git a/src/stage/style-scheme.hpp b/src/stage/style-scheme.hpp index 8fede92bf..8c3c20574 100644 --- a/src/stage/style-scheme.hpp +++ b/src/stage/style-scheme.hpp @@ -90,6 +90,14 @@ namespace stage { extern cuString CLASS_slope_deep4; extern cuString CLASS_slope_verydeep; + extern cuString CLASS_timeline_head; + extern cuString CLASS_timeline_navi; + extern cuString CLASS_timeline_pbay; + + extern cuString CLASS_fork_head; + extern cuString CLASS_fork_bracket; + extern cuString CLASS_fork_control; + extern cuString CLASS_background; diff --git a/src/stage/timeline/header-pane-widget.hpp b/src/stage/timeline/header-pane-widget.hpp index eec365d52..153345284 100644 --- a/src/stage/timeline/header-pane-widget.hpp +++ b/src/stage/timeline/header-pane-widget.hpp @@ -52,11 +52,7 @@ #include "stage/gtk-base.hpp" #include "stage/timeline/navigator-widget.hpp" #include "stage/timeline/patchbay-widget.hpp" - -//#include "lib/util.hpp" - -//#include -//#include +#include "stage/style-scheme.hpp" @@ -86,6 +82,7 @@ namespace timeline { , navigator_{} , patchbay_{vScroll} { + get_style_context()->add_class (CLASS_timeline_head); this->pack_start (navigator_, Gtk::PACK_SHRINK); this->pack_start (patchbay_, Gtk::PACK_EXPAND_WIDGET); } diff --git a/src/stage/timeline/navigator-widget.cpp b/src/stage/timeline/navigator-widget.cpp index 888dd2159..197df6a81 100644 --- a/src/stage/timeline/navigator-widget.cpp +++ b/src/stage/timeline/navigator-widget.cpp @@ -31,6 +31,7 @@ #include "stage/gtk-base.hpp" +#include "stage/style-scheme.hpp" #include "stage/timeline/navigator-widget.hpp" //#include "stage/ui-bus.hpp" @@ -66,7 +67,9 @@ namespace timeline { NavigatorWidget::NavigatorWidget () : Gtk::Grid{} - { } + { + get_style_context()->add_class (CLASS_timeline_navi); + } diff --git a/src/stage/timeline/patchbay-widget.cpp b/src/stage/timeline/patchbay-widget.cpp index d1344481d..5fc62882c 100644 --- a/src/stage/timeline/patchbay-widget.cpp +++ b/src/stage/timeline/patchbay-widget.cpp @@ -31,6 +31,7 @@ #include "stage/gtk-base.hpp" +#include "stage/style-scheme.hpp" #include "stage/timeline/patchbay-widget.hpp" #include "stage/timeline/track-head-widget.hpp" //#include "stage/ui-bus.hpp" @@ -81,6 +82,7 @@ namespace timeline { PatchbayWidget::PatchbayWidget (PAdjustment const& vScroll) : Gtk::ScrolledWindow{Gtk::Adjustment::create (0,0,0,0,0,0), vScroll} { + get_style_context()->add_class (CLASS_timeline_pbay); set_shadow_type (Gtk::SHADOW_NONE); set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_EXTERNAL); // horizontal extension is fixed, using the track body vertical scrollbar property_expand() = true; // dynamically grab additional space diff --git a/src/stage/timeline/stave-bracket-widget.cpp b/src/stage/timeline/stave-bracket-widget.cpp index c56b1d154..db792cdfa 100644 --- a/src/stage/timeline/stave-bracket-widget.cpp +++ b/src/stage/timeline/stave-bracket-widget.cpp @@ -224,6 +224,7 @@ namespace timeline { StaveBracketWidget::StaveBracketWidget () : _Base{} { + get_style_context()->add_class (CLASS_fork_bracket); this->property_expand() = false; } diff --git a/src/stage/timeline/stave-bracket-widget.hpp b/src/stage/timeline/stave-bracket-widget.hpp index cc1904b3e..51594ac1e 100644 --- a/src/stage/timeline/stave-bracket-widget.hpp +++ b/src/stage/timeline/stave-bracket-widget.hpp @@ -31,6 +31,9 @@ ** of actual drawing this structure is abstracted into this custom widget — allowing the ** track head to indicate the necessary layout constraints generic and recursively. ** + ** \par styling + ** - styling is controlled via CSS, using the marker class \ref CLASS_fork_bracket + ** ** @todo WIP-WIP-WIP as of 2/2023 ** */ diff --git a/src/stage/timeline/track-head-widget.cpp b/src/stage/timeline/track-head-widget.cpp index ed9dde784..88388df4e 100644 --- a/src/stage/timeline/track-head-widget.cpp +++ b/src/stage/timeline/track-head-widget.cpp @@ -46,6 +46,7 @@ #include "stage/gtk-base.hpp" +#include "stage/style-scheme.hpp" #include "stage/timeline/track-head-widget.hpp" #include "lib/util.hpp" @@ -72,6 +73,7 @@ namespace timeline { , headCtrl_{} , childCnt_{0} { + get_style_context()->add_class (CLASS_fork_head); headCtrl_.set_valign(Gtk::Align::ALIGN_CENTER); headCtrl_.set_halign(Gtk::Align::ALIGN_FILL); this->attach (trackName_, 0,0, 2,1); @@ -87,6 +89,7 @@ namespace timeline { : Gtk::Grid{} , ctrlTODO_{"💡"} { + get_style_context()->add_class (CLASS_fork_control); ctrlTODO_.set_xalign (0.3); ctrlTODO_.set_yalign (0.5); this->attach (ctrlTODO_, 0,0, 1,1); diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 26ae31781..1206651f9 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -28832,9 +28832,9 @@ - - - + + + @@ -29240,10 +29240,9 @@ - - - - + + + @@ -29298,6 +29297,19 @@ + + + + + + +

+ Style-Klasse: .fork__bracket +

+ +
+ +