Timeline: work out how Ruler tracks can be managed
This commit is contained in:
parent
d1e2ddc56e
commit
eca09e3ab5
6 changed files with 461 additions and 31 deletions
|
|
@ -32,7 +32,9 @@
|
|||
|
||||
|
||||
#include "stage/gtk-base.hpp"
|
||||
#include "include/ui-protocol.hpp"
|
||||
#include "stage/timeline/ruler-track.hpp"
|
||||
#include "stage/timeline/track-presenter.hpp"
|
||||
|
||||
//#include "stage/ui-bus.hpp"
|
||||
//#include "lib/format-string.hpp"
|
||||
|
|
@ -44,6 +46,7 @@
|
|||
//#include <vector>
|
||||
|
||||
|
||||
using lib::diff::TreeMutator;
|
||||
|
||||
//using util::_Fmt;
|
||||
using util::isnil;
|
||||
|
|
@ -70,14 +73,26 @@ namespace timeline {
|
|||
|
||||
|
||||
|
||||
RulerTrack::RulerTrack()
|
||||
: scales_{}
|
||||
RulerTrack::RulerTrack (ID id, ctrl::BusTerm& nexus, TrackPresenter& parent)
|
||||
: Controller{id, nexus}
|
||||
, track_{parent}
|
||||
, scales_ {}
|
||||
{ }
|
||||
|
||||
|
||||
RulerTrack::~RulerTrack()
|
||||
RulerTrack::~RulerTrack() { }
|
||||
|
||||
void
|
||||
RulerTrack::buildMutator (TreeMutator::Handle buffer)
|
||||
{
|
||||
TODO ("detach from parent; store a functor or backreference");
|
||||
UNIMPLEMENTED ("what can actually be manipulated on a RulerTrack by diff message?");
|
||||
|
||||
// buffer.create (
|
||||
// TreeMutator::build()
|
||||
// .change(ATTR_name, [&](string val)
|
||||
// { // »Attribute Setter« : receive a new value for the track name field
|
||||
// this->setTrackName (val);
|
||||
// }));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@
|
|||
#define STAGE_TIMELINE_RULER_TRACK_H
|
||||
|
||||
#include "stage/gtk-base.hpp"
|
||||
#include "stage/model/controller.hpp"
|
||||
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
|
|
@ -56,6 +57,8 @@
|
|||
namespace stage {
|
||||
namespace timeline {
|
||||
|
||||
class TrackPresenter;
|
||||
|
||||
////////////////////////////////////////////////////////////////////TICKET #1195 : Timecode Ruler presentation
|
||||
struct RulerScale
|
||||
{
|
||||
|
|
@ -70,18 +73,29 @@ namespace timeline {
|
|||
* @todo this is more or less preliminary/placeholder code as of 4/2019 ////////////////////////TICKET #1194 : proper handling of ruler tracks
|
||||
*/
|
||||
class RulerTrack
|
||||
: public model::Controller
|
||||
{
|
||||
using Scales = std::vector<RulerScale>;
|
||||
|
||||
TrackPresenter& track_;
|
||||
Scales scales_;
|
||||
|
||||
public:
|
||||
RulerTrack();
|
||||
~RulerTrack();
|
||||
|
||||
/**
|
||||
* @param id identity used to refer to a corresponding session::Fork
|
||||
* @param nexus a way to connect this Controller to the UI-Bus.
|
||||
* @param anchorDisplay a one-way closure to attach into the display fabric
|
||||
*/
|
||||
RulerTrack (ID id, ctrl::BusTerm& nexus, TrackPresenter& parent);
|
||||
|
||||
uint calcHeight();
|
||||
uint getGapHeight();
|
||||
|
||||
/** set up a binding to respond to mutation messages via UiBus */
|
||||
virtual void buildMutator (lib::diff::TreeMutator::Handle) override;
|
||||
|
||||
private:/* ===== Internals ===== */
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -88,6 +88,20 @@ namespace session {
|
|||
)
|
||||
.genNode(baseID);
|
||||
}
|
||||
|
||||
GenNode
|
||||
emptyTrack (string trackID)
|
||||
{
|
||||
return MakeRec()
|
||||
.type (string{stage::TYPE_Fork})
|
||||
.genNode(trackID);
|
||||
}
|
||||
|
||||
GenNode
|
||||
ruler()
|
||||
{
|
||||
UNIMPLEMENTED("send diff to constitute a new ruler track");
|
||||
}
|
||||
} //(End)Implementation details....
|
||||
|
||||
|
||||
|
|
@ -123,6 +137,31 @@ namespace session {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build another population diff message for a way more contrived timeline structure
|
||||
*/
|
||||
MutationMessage
|
||||
DummySessionConnection::fabricateSeq2 (string baseID)
|
||||
{
|
||||
const RandID forkRootID{stage::ATTR_fork};
|
||||
const GenNode timeline = emptyTimeline (baseID, forkRootID);
|
||||
const GenNode rootTrackName = GenNode{string{stage::ATTR_name}, "Fork-Root"};
|
||||
const GenNode forkRoot = MakeRec().genNode(forkRootID);
|
||||
|
||||
return MutationMessage{ ins (timeline)
|
||||
, mut (timeline)
|
||||
, mut (forkRoot)
|
||||
, set (rootTrackName)
|
||||
, ins (emptyTrack ("Track-1"))
|
||||
, ins (emptyTrack ("Track-2"))
|
||||
, ins (ruler())
|
||||
, emu (forkRoot)
|
||||
, emu (timeline)
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/** @todo build an internal "shadow data structure" and apply all diffs there as well...*/
|
||||
void
|
||||
DummySessionConnection::applyCopy (MutationMessage const& diff)
|
||||
{
|
||||
|
|
@ -192,6 +231,10 @@ COMMAND_DEFINITION (test_fake_injectSequence_2)
|
|||
{
|
||||
string message{_Fmt{"fabricate Sequence_2 (dummyID='%s')"} % dummyID};
|
||||
GuiNotification::facade().displayInfo (NOTE_INFO, message);
|
||||
auto popuDiff = DummySess::instance().fabricateSeq2 (dummyID);
|
||||
DummySess::instance().applyCopy (popuDiff);
|
||||
auto rootID = session::Root::getID();
|
||||
GuiNotification::facade().mutate (rootID, move(popuDiff));
|
||||
})
|
||||
.captureUndo ([](string dummyID) -> string
|
||||
{
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ namespace session {
|
|||
/* == forget Y == */
|
||||
|
||||
MutationMessage fabricateSeq1 (string baseID);
|
||||
MutationMessage fabricateSeq2 (string baseID);
|
||||
|
||||
void applyCopy (MutationMessage const&);
|
||||
|
||||
|
|
|
|||
|
|
@ -3562,7 +3562,7 @@ Now, since we build our UI on the notion of mapping session contents via a messa
|
|||
|
||||
In any case, this is an advanced topic, and nowhere near trivial. It seems reasonable to reject opening duplicate timeline presentations as a first step, and then address this topic way later, when we've gained sufficient knowledge regarding all the subtleties of timeline presentation and editing.</pre>
|
||||
</div>
|
||||
<div title="GuiTimelineView" creator="Ichthyostega" modifier="Ichthyostega" created="201410160100" modified="201904052201" tags="GuiPattern design decision draft img" changecount="60">
|
||||
<div title="GuiTimelineView" creator="Ichthyostega" modifier="Ichthyostega" created="201410160100" modified="201907192238" tags="GuiPattern design decision draft img" changecount="62">
|
||||
<pre>Within the Lumieara GUI, the [[Timeline]] structure(s) from the HighLevelModel are arranged and presented according to the following principles and conventions.
|
||||
Several timeline views may be present at the same time -- and there is not necessarily a relation between them, since »a Timeline« is the top-level concept within the [[Session]]. Obviously, there can also be several //views// based on the same »Timeline« model element, and in this latter case, these //coupled views// behave according to a linked common state. An entity »Timeline« as represented through the GUI, emerges from the combination of several model elements
|
||||
* a root level [[Binding|BindingMO]] acts as framework
|
||||
|
|
@ -3575,13 +3575,13 @@ Several timeline views may be present at the same time -- and there is not neces
|
|||
Session, Binding and Sequence are the mandatory ingredients.
|
||||
|
||||
!Basic layout
|
||||
[>img[Clip presentation control|draw/UI-TimelineLayout-1.png]]The representation is split into a ''Header pane'' exposing structure and configuration, and a ''Content pane'' extending in time. The ''Time ruler'' running alongside the top of the content pane represents the //position in time.// Beyond this temporal dimension, the content area is conceived as a flexible working space. This working space //can// be structured hierarchically -- when interacting with the GUI, hierarchical nesting will be created and collapsed on demand. Contrast this with conventional editing applications which are built upon the rigid notion of "Tracks": Lumiera is based on //Pipes// and //Scopes// rather than Tracks.
|
||||
[>img[Clip presentation control|draw/UI-TimelineLayout-1.png]]The representation is split into a ''Header pane'' exposing structure and configuration, and a ''Content pane'' extending in time. The ''Time ruler'' ( &rarr; [[Rulers|TrackRuler]]) running alongside the top of the content pane represents the //position in time.// Beyond this temporal dimension, the content area is conceived as a flexible working space. This working space //can// be structured hierarchically -- when interacting with the GUI, hierarchical nesting will be created and collapsed on demand. Contrast this with conventional editing applications which are built upon the rigid notion of "Tracks": Lumiera is based on //Pipes// and //Scopes// rather than Tracks.
|
||||
|
||||
In the temporal dimension, there is the usual scrolling and zooming of content, and possibly a selected time range, and after establishing a ViewerPlayConnection, there is an effective playback location featured as a "Playhead"
|
||||
The workspace dimension (vertical layout) is more like a ''Fork'', which can be expanded recursively. More specifically, each strip or layer or "track" can be featured in //collapsed// or //expanded state.//
|
||||
* the collapsed state features a condensed representation ("the tip of the iceberg"). It exposes just the topmost entity, and might show a rendered (pre)view. Elements might be stacked on top, but any element visible here //is still accessible.//
|
||||
* when expanding, the content unfolds into...
|
||||
** a ''scope ruler'' to represent the whole sub-scope. This is rendered as a small pane, extending horizontally, holding any locally attached labels and track-wide or temporally scoped effects
|
||||
** a ''scope ruler'' to represent the whole sub-scope.<br/>A [[Ruler|TrackRuler]] is rendered as a small pane, extending horizontally, to hold any locally attached labels and track-wide or temporally scoped effects
|
||||
** the content stack, comprised of [[clip widgets|GuiClipWidget]], attached effects and transitions
|
||||
** a stack of nested sub-scopes (recursive).
|
||||
|
||||
|
|
@ -9233,7 +9233,7 @@ Placements are __resolved__ resulting in an ExplicitPlacement. In most cases thi
|
|||
&rarr; [[Definition|Pipe]] and [[handling of Pipes|PipeHandling]]
|
||||
</pre>
|
||||
</div>
|
||||
<div title="TrackPresenter" creator="Ichthyostega" modifier="Ichthyostega" created="201611280207" modified="201810281454" tags="def GuiPattern" changecount="11">
|
||||
<div title="TrackPresenter" creator="Ichthyostega" modifier="Ichthyostega" created="201611280207" modified="201907192301" tags="def GuiPattern" changecount="12">
|
||||
<pre>//mediating entity used to guide and control the track-like nested working space in the timeline display of the UI.//
|
||||
|
||||
Similar to the ClipPresenter, judged from a global angle, this element fulfils a model-like role, while at the same time guiding and controlling a mostly passive view component, implemented as GTK widget. Here, the authority of the presenter over the widget must be total, since display management //needs to work automatically,// due to model updates and mutations arriving as [[diff messages|MutationMessage]]. In addition, this structure is prerequisite for (possibly) implementing UI rendering optimisations, since it allows us to leave out widgets entirely, when it is clear they won't become visible: A ''display evaluation pass'', which is effectively a //tree walk,// consecutively visits each part of the timeline structure, to negotiate its concrete display properties in collaboration with a global TimelineDisplayManager. As a result, the presenter knows where to show its corresponding view, and it knows if to show it at all, allowing to either adjust, create or destroy actual GTK widgets within its local reference frame.
|
||||
|
|
@ -9245,8 +9245,29 @@ To deal with this typical problem of recursive programming, we introduce a bindi
|
|||
* however, after constructing the {{{DisplayFrame}}}, it invokes an anchor functor, which is passed in from the recursive outer scope, and which does the actual work of installing those widgets into the apropriate parent widgets
|
||||
* but the {{{DisplayFrame}}} itself also exposes such an anchor functor, which can be passed down when (recursively) creating a TrackPresenter for a sub-Track
|
||||
* obviously, at top-level, we need to digress from that general pattern -- here it is the {{{timeline::TimelineLayout}}} responsible for the display structure of the whole timeline which exposes the necessary anchor function to attach the root track for a timeline.
|
||||
|
||||
!Organisation of track profile and rulers
|
||||
Related to the problem of building the nested track structure is the problem of proper graphical representation of this nested structure -- especially within the right pane, //the body part,// where the actual track content will be shown. Due to various limitations of typical UI frameworks, we prefer to handle this body part by [[custom drawing|GuiCustomWidget]] onto a canvas widget. Which places us into the situation to generate suitable graphical elements based on the effective nested structure of the tracks. We solve this challenge by performing an //evaluation pass// over the actual {{{TrackBody}}} structure, which is built starting from the {{{DisplayFrame}}} for each track. The {{{TrackBody}}} elements are helper objects, and serve the sole purpose of getting this drawing and display control requirements settled; basically they mirror the track structure, and the corresponding structure of GTK widgets in the header pane, and they likewise form a tree structure, which can be traversed to collect information. Which is what we, for building up a "track profile", which can then later be &rarr; [[rendered consistently onto the body canvas|GuiTimelineDraw]].
|
||||
|
||||
Another related concern are the [[track rulers|TrackRuler]]. These are overview panes running alongside the track time axis. As UI model entities, they are attached to the corresponding {{{TrackBody}}} element, while collaborating with the {{{TrackPresenter}}} to retrieve the actual content to be shown in the overview. The purpose of track rulers is to show effects or selection states; and especially in the top-level track the ''time ruler'' indicates the current time and frame position.
|
||||
</pre>
|
||||
</div>
|
||||
<div title="TrackRuler" creator="Ichthyostega" modifier="Ichthyostega" created="201907192310" modified="201907192322" tags="def spec GuiPattern" changecount="2">
|
||||
<pre>//A small overview pane running alongside a track in the timeline display.//
|
||||
The presence and specific configuration of a ruler is governed by the [[Session model|HighLevelModel]], while the actual content is derived from the context appropriately by the presentation code in the UI. Rulers can be used for various purposes
|
||||
* the ''time ruler'' at the top of the timeline display indicates the time axis position in various formats.
|
||||
* an ''overview ruler'' shows the effective content of a track in condensed form
|
||||
* location- and range markers can be shown on top of a ruler
|
||||
* selection- and processing state may likewise be visualised.
|
||||
|
||||
!Organisation of track ruler presentation
|
||||
The actual presentation of ruler elements is a fusion of parametrisation, track content and (persistent) UI state.
|
||||
* The fact that a ruler is present, and also its presentation style is controlled by the Session. {{red{7/19 not clear yet in which form they are represented in the model}}}
|
||||
* Rulers are sensitive to the expanded/collapsed state of their corresponding track; there is a distinct parametrisation for three distinct cases
|
||||
** the ruler of a //collapsed// track can either be hidden, or shown in condensed form
|
||||
** the ruler of an //expanded fork// (a track with nested child tracks) will typically give a summary of effective content, but can also be hidden, or feature other content
|
||||
** the ruler of an //expanded leaf track// (no child tracks) will typically be hidden, but can likewise be configured to show specific data</pre>
|
||||
</div>
|
||||
<div title="TransitionsHandling" modifier="Ichthyostega" created="200712080417" modified="200805300100" tags="def design">
|
||||
<pre>Transitions combine the data from at least two processing chains and do this combining in a time varying fashion. So, any transition has
|
||||
* N input connections
|
||||
|
|
|
|||
|
|
@ -4946,7 +4946,7 @@
|
|||
<node CREATED="1483921070115" ID="ID_398046799" MODIFIED="1518487921058" TEXT="Prototyp-Service"/>
|
||||
<node CREATED="1483921132114" ID="ID_1652398711" MODIFIED="1518487921058" TEXT="liefert dekorierte Command-ID"/>
|
||||
<node CREATED="1483921149368" ID="ID_1028150245" MODIFIED="1518487921058" TEXT="im GUI nur noch Command-IDs"/>
|
||||
<node CREATED="1483924872930" ID="ID_242219866" MODIFIED="1538838665321">
|
||||
<node CREATED="1483924872930" ID="ID_242219866" MODIFIED="1563145261726">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -19417,7 +19417,8 @@
|
|||
<node CREATED="1561047326773" ID="ID_455856045" MODIFIED="1561047353557" TEXT="wie wird die Reihenfolge der Tracks festgelegt?">
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561047338983" ID="ID_608382986" MODIFIED="1561047362267" TEXT="wie werden Änderungen dieser realisiert?">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561047338983" ID="ID_608382986" MODIFIED="1563466559242" TEXT="wie werden Änderungen dieser realisiert?">
|
||||
<linktarget COLOR="#b05d76" DESTINATION="ID_608382986" ENDARROW="Default" ENDINCLINATION="-409;0;" ID="Arrow_ID_114040217" SOURCE="ID_1798080753" STARTARROW="None" STARTINCLINATION="215;14;"/>
|
||||
<icon BUILTIN="help"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1561048744043" ID="ID_1401239177" MODIFIED="1561140347286" TEXT="Konzept klären">
|
||||
<linktarget COLOR="#b13064" DESTINATION="ID_1401239177" ENDARROW="Default" ENDINCLINATION="363;61;" ID="Arrow_ID_807164253" SOURCE="ID_1143074852" STARTARROW="None" STARTINCLINATION="1263;0;"/>
|
||||
|
|
@ -19425,6 +19426,13 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561048792468" ID="ID_638394722" MODIFIED="1561048797689" TEXT="#1199 handle Timeline layout changes">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node CREATED="1563466591056" ID="ID_1728979524" MODIFIED="1563467328284" TEXT="Lösungsidee: re-Konstruktion">
|
||||
<linktarget COLOR="#927aa8" DESTINATION="ID_1728979524" ENDARROW="Default" ENDINCLINATION="-421;17;" ID="Arrow_ID_445844094" SOURCE="ID_737072989" STARTARROW="None" STARTINCLINATION="410;0;"/>
|
||||
<node CREATED="1563466616693" ID="ID_316217409" MODIFIED="1563466626054" TEXT="vom root-DisplayFrame ausgehend..."/>
|
||||
<node CREATED="1563466626931" ID="ID_1475248081" MODIFIED="1563466639074" TEXT="top-down neu aufbauen">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -19481,6 +19489,10 @@
|
|||
<node CREATED="1540260106675" ID="ID_432321502" MODIFIED="1557498707226" TEXT="aus sub-Frame kann man sub-TrackPresenter bauen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563466520522" ID="ID_1798080753" MODIFIED="1563466559242" TEXT="Struktur-Änderungen sind problematisch">
|
||||
<arrowlink COLOR="#b05d76" DESTINATION="ID_608382986" ENDARROW="Default" ENDINCLINATION="-409;0;" ID="Arrow_ID_114040217" STARTARROW="None" STARTINCLINATION="215;14;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1540346398887" ID="ID_1953592630" MODIFIED="1557498707226" TEXT="DisplayFrame">
|
||||
<node CREATED="1540346412629" ID="ID_1434445651" MODIFIED="1557498707226">
|
||||
|
|
@ -19496,7 +19508,7 @@
|
|||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1540346455423" ID="ID_535248075" MODIFIED="1557498707226" TEXT="schafft die invariante Struktur im Verhältnis zu den Kindern"/>
|
||||
<node CREATED="1540505441706" HGAP="28" ID="ID_1492670388" MODIFIED="1560695026994" TEXT="Lebenszyklus" VSHIFT="20">
|
||||
<node CREATED="1540505441706" HGAP="28" ID="ID_1492670388" MODIFIED="1563466899646" TEXT="Lebenszyklus" VSHIFT="20">
|
||||
<linktarget COLOR="#ac8396" DESTINATION="ID_1492670388" ENDARROW="Default" ENDINCLINATION="-473;37;" ID="Arrow_ID_1838431568" SOURCE="ID_1349567495" STARTARROW="None" STARTINCLINATION="-428;36;"/>
|
||||
<node CREATED="1540505464975" ID="ID_195276443" MODIFIED="1557498707226" TEXT="DisplayFrame (als Member) an TrackPresenter gebunden"/>
|
||||
<node CREATED="1540505481022" ID="ID_1566437478" MODIFIED="1557498707226" TEXT="konkrete Widgets leben im DisplayFrame"/>
|
||||
|
|
@ -19663,6 +19675,112 @@
|
|||
<arrowlink COLOR="#14409c" DESTINATION="ID_1634888629" ENDARROW="Default" ENDINCLINATION="-255;27;" ID="Arrow_ID_797597310" STARTARROW="None" STARTINCLINATION="224;-18;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563467223350" ID="ID_16819001" MODIFIED="1563467230773" TEXT="Problem: neu-Anordnung">
|
||||
<node CREATED="1563467236241" ID="ID_711529393" MODIFIED="1563467248187" TEXT="wenn sich die Reihenfolge der Spuren ändert"/>
|
||||
<node CREATED="1563467263669" ID="ID_1535368629" MODIFIED="1563467269910" TEXT="wenn eine Spur wegfällt"/>
|
||||
<node CREATED="1563467279931" ID="ID_563915021" MODIFIED="1563467289047" TEXT="...dann müssen">
|
||||
<node CREATED="1563467290138" ID="ID_568668070" MODIFIED="1563467296500" TEXT="bestehende Verankerungen beseitigt werden"/>
|
||||
<node CREATED="1563467297369" ID="ID_737072989" MODIFIED="1563467493149" TEXT="alle Verankerungen neu re-Konstruiert werden">
|
||||
<arrowlink COLOR="#927aa8" DESTINATION="ID_1728979524" ENDARROW="Default" ENDINCLINATION="-421;17;" ID="Arrow_ID_445844094" STARTARROW="None" STARTINCLINATION="410;0;"/>
|
||||
<arrowlink COLOR="#d73f41" DESTINATION="ID_1414960950" ENDARROW="Default" ENDINCLINATION="203;-36;" ID="Arrow_ID_1023645457" STARTARROW="None" STARTINCLINATION="-8;6;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563467398036" ID="ID_828698459" MODIFIED="1563467403607" TEXT="Implementierung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563467405665" ID="ID_1989047133" MODIFIED="1563467413034" TEXT="Ausdehnung berechnen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1563467415158" ID="ID_29134005" MODIFIED="1563467420585" TEXT="Profil generieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563467424456" ID="ID_1723744174" MODIFIED="1563467445803" TEXT="collapsed/hidden berücksichtigen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1563467451739" ID="ID_1414960950" MODIFIED="1563468442808" TEXT="(re)Konstruieren">
|
||||
<linktarget COLOR="#d73f41" DESTINATION="ID_1414960950" ENDARROW="Default" ENDINCLINATION="203;-36;" ID="Arrow_ID_1023645457" SOURCE="ID_737072989" STARTARROW="None" STARTINCLINATION="-8;6;"/>
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node CREATED="1563467519263" ID="ID_497587608" MODIFIED="1563467555485" TEXT="anders als der initiale Aufbau">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
beim initialen Aufbau sitzen wir in einem ctor-Aufruf,
|
||||
</p>
|
||||
<p>
|
||||
und zwar der ctor-TrackPresenter
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1563467588351" ID="ID_1224899798" MODIFIED="1563467595841" TEXT="Unterscheidung root/nested">
|
||||
<node CREATED="1563467597287" ID="ID_1571128409" MODIFIED="1563467674647" TEXT="beim ctor-Aufruf implizit/automatisch">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
insofern der ctor für den root-Track (fork-root) vom TimelineController aufgerufen wird,
|
||||
</p>
|
||||
<p>
|
||||
alle anderen verschachtelten ctors aber von den TrackPresentern
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1563467604327" ID="ID_175300386" MODIFIED="1563467621867" TEXT="nur sub-Tracks werden re-Konstruiert">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563467848565" ID="ID_1150018491" MODIFIED="1563467900286" TEXT="re-Konstruieren müssen die TrackPresenter machen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
weil nur sie sowohl durch ihren Display-Frame die beiden Kind-Widgets kennen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563467916708" ID="ID_568904515" MODIFIED="1563468426983" TEXT="klären: Kind-Widget managen/entfernen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
inwiefern gibt es Beschränkungen, wenn man ein Kind-Widget von einem Container entfernt?
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1563468083453" ID="ID_988508640" MODIFIED="1563468091984" TEXT="Gtk::Container ist nur für single-Child">
|
||||
<node CREATED="1563468845867" ID="ID_1400714108" MODIFIED="1563468859195" TEXT="aber: Gtk::Container hat iterative Methoden">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563468094444" ID="ID_638941576" MODIFIED="1563468103423" TEXT="multi-Widget Container haben spezielle Methoden">
|
||||
<node CREATED="1563468293265" ID="ID_1078909584" MODIFIED="1563468329357" TEXT="bei uns: PatchbayWidget::installFork (TrackHeadWidget& rootTrackHead)">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1563468335579" ID="ID_1427740391" MODIFIED="1563468353099" TEXT="PatchbayWidget ist ein Gtk::Viewport (a scrollable pane)"/>
|
||||
<node CREATED="1563468377867" ID="ID_1246261771" MODIFIED="1563468568509" TEXT="TrackHeadWidget is a Gtk::Grid">
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
<node CREATED="1563468411262" ID="ID_738452608" MODIFIED="1563468413323" TEXT="TrackHeadWidget::injectSubFork (TrackHeadWidget& subForkHead)"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_1999928728" MODIFIED="1557498707227" TEXT="Track-Anzeige">
|
||||
|
|
@ -19702,8 +19820,26 @@
|
|||
<node CREATED="1540683900716" ID="ID_212914080" MODIFIED="1557498707227" TEXT="1.Quadrant == Controls"/>
|
||||
<node CREATED="1540683916490" ID="ID_191999039" MODIFIED="1557498707227" TEXT="3.Quadrant : leer (Fork)"/>
|
||||
<node CREATED="1540683829267" ID="ID_828415712" MODIFIED="1557498707227" TEXT="in 4.Quadrant kommt">
|
||||
<node CREATED="1540683866753" ID="ID_616355214" MODIFIED="1557498707227" TEXT="entweder content control"/>
|
||||
<node CREATED="1540683879103" ID="ID_96481889" MODIFIED="1557498707227" TEXT="oder ein nested HeaderPane"/>
|
||||
<node CREATED="1540683879103" ID="ID_96481889" MODIFIED="1563469343918" TEXT="eine nested HeaderPane"/>
|
||||
</node>
|
||||
<node CREATED="1563469351023" ID="ID_805950777" MODIFIED="1563469358660" TEXT="weitere Zeilen nach Bedarf....">
|
||||
<node CREATED="1563469368703" ID="ID_856512794" MODIFIED="1563469385040" TEXT="jeder weitere Sub-Track hängt eine Zeile an"/>
|
||||
<node CREATED="1563469415896" ID="ID_307382994" MODIFIED="1563469442614">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
aber verschachtelte sub-Tracks werden <i>in</i> dieser gehandhabt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1563469388316" ID="ID_312880827" MODIFIED="1563469409266" TEXT="beim re-Konstruieren alle platt machen und neu besetzen">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -19755,7 +19891,28 @@
|
|||
</node>
|
||||
<node CREATED="1553907064499" HGAP="11" ID="ID_1688412302" MODIFIED="1557498707227" TEXT="Fazit" VSHIFT="5">
|
||||
<node CREATED="1553907073255" ID="ID_1710444282" MODIFIED="1557498707227" TEXT="Patchbay ist ein Container für die Track Heads"/>
|
||||
<node CREATED="1553907087204" ID="ID_752287871" MODIFIED="1557498707227" TEXT="zuständig für das Einhängen und das vertikale scrolling"/>
|
||||
<node CREATED="1553907087204" ID="ID_752287871" MODIFIED="1563469756375" TEXT="zuständig für das Einhängen und das vertikale Scrolling"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563469593872" HGAP="84" ID="ID_1533093205" MODIFIED="1563469604196" TEXT="sub-Navigation" VSHIFT="1">
|
||||
<node CREATED="1563469608318" ID="ID_174979019" MODIFIED="1563469619520" TEXT="zusätzliche sub-Tracks resultieren in zusätzlichen Zeilen">
|
||||
<node CREATED="1563469770472" ID="ID_1252550324" MODIFIED="1563469775934" TEXT="einfügen"/>
|
||||
<node CREATED="1563469790905" ID="ID_1917094772" MODIFIED="1563469795921" TEXT="re-Konstruieren">
|
||||
<node CREATED="1563469797573" ID="ID_615107402" MODIFIED="1563469801027" TEXT="platt machen"/>
|
||||
<node CREATED="1563469807081" ID="ID_1454613932" MODIFIED="1563469830842" TEXT="auf erneutes Einfügen warten"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563469620357" ID="ID_530086217" MODIFIED="1563469636091" TEXT="Fork-Anzeige passend malen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563469686644" ID="ID_467394520" MODIFIED="1563469732788" TEXT="gar nicht wenn es nur einen Kind-Track gibt">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563469700651" ID="ID_478580800" MODIFIED="1563469729247" TEXT="auf die richtige Höhe zielen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563469735149" ID="ID_704791408" MODIFIED="1563469741153" TEXT="Selection-State zeigen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -19805,15 +19962,113 @@
|
|||
</node>
|
||||
</node>
|
||||
<node CREATED="1553911718090" ID="ID_612121351" MODIFIED="1557498707227" TEXT="praktische Ausgestalutng">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1553911730196" ID="ID_1967793006" MODIFIED="1557498707227" TEXT="offene Fragen">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1553911737751" ID="ID_669315030" MODIFIED="1557498707227" TEXT="ist RulerTrack ein Tangible?">
|
||||
<node CREATED="1553911730196" ID="ID_1967793006" MODIFIED="1563457386787" TEXT="grundsätzlich....">
|
||||
<node COLOR="#435e98" CREATED="1553911737751" ID="ID_669315030" MODIFIED="1563457397449" TEXT="ist RulerTrack ein Tangible?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1553911756429" ID="ID_1273721468" MODIFIED="1557498707227" TEXT="pro">
|
||||
<node CREATED="1563456133616" ID="ID_1546021764" MODIFIED="1563456136468" TEXT="Diskussion">
|
||||
<node CREATED="1553911756429" ID="ID_1273721468" MODIFIED="1563457417610" TEXT="pro">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1553911764980" ID="ID_258039981" MODIFIED="1557498707227" TEXT="Diff-Binding nach Schema-F"/>
|
||||
</node>
|
||||
<node CREATED="1553911796208" ID="ID_1254226888" MODIFIED="1557498707227" TEXT="con">
|
||||
<node CREATED="1553911796208" ID="ID_1254226888" MODIFIED="1563457414715" TEXT="con">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1553911798428" ID="ID_1946109008" MODIFIED="1557498707227" TEXT="es bietet nur teilweise die Aktionen eines Tangible"/>
|
||||
<node CREATED="1563466370058" ID="ID_863187721" MODIFIED="1563466405438" TEXT="automatisches Management könnte schwierig werden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
weil der Ruler ja in die Präsentation mit einbezogen ist
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1563456143402" ID="ID_1942744457" MODIFIED="1563456147693" TEXT="Entscheidung: ja">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1563456157904" ID="ID_1376003516" MODIFIED="1563456166179" TEXT="der Ruler hat genügend Substanz">
|
||||
<node CREATED="1563456222184" ID="ID_506318259" MODIFIED="1563456232299" TEXT="er hat eine Parametrisierung"/>
|
||||
<node CREATED="1563456234334" ID="ID_792066760" MODIFIED="1563456245693" TEXT="er ist expanded/collapsed"/>
|
||||
<node CREATED="1563456255701" ID="ID_1379712635" MODIFIED="1563456262198" TEXT="mit jeweils spezieller Ausstattung"/>
|
||||
</node>
|
||||
<node CREATED="1563456167140" ID="ID_197035076" MODIFIED="1563456180345" TEXT="der Repräsentant ist ein Controller">
|
||||
<node CREATED="1563456268098" ID="ID_1014911371" MODIFIED="1563456278940" TEXT="tatsächliche Darstellung auf dem Canvas"/>
|
||||
<node CREATED="1563456280732" ID="ID_350277942" MODIFIED="1563456296145" TEXT="muß sich ggfs. Marker / Selections "holen""/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563457330971" ID="ID_1988056497" MODIFIED="1563457395240" STYLE="fork" TEXT="hat ein RulerTrack eigenen Content?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1563457346678" ID="ID_1336854031" MODIFIED="1563457395240" TEXT="7/2019 ich denke: nein">
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
<node CREATED="1563457361836" ID="ID_32790322" MODIFIED="1563457395240" TEXT="könnte aber später noch kommen">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563466422079" ID="ID_1950304840" MODIFIED="1563466425634" TEXT="Lebenszyklus">
|
||||
<node CREATED="1563466427030" ID="ID_1041447231" MODIFIED="1563466444920" TEXT="per vector<unique_ptr<RulerTrack>>"/>
|
||||
<node CREATED="1563466447828" ID="ID_1400466075" MODIFIED="1563466455230" TEXT="erscheint weitgehend unproblematisch"/>
|
||||
</node>
|
||||
<node CREATED="1563456327642" ID="ID_216416376" MODIFIED="1563456331648" TEXT="Zustand">
|
||||
<node CREATED="1563456332965" ID="ID_1615333919" MODIFIED="1563456339250" TEXT="expanded/collapsed">
|
||||
<node CREATED="1563456339836" ID="ID_1625370236" MODIFIED="1563456343779" TEXT="persistent UI state"/>
|
||||
<node CREATED="1563456817269" ID="ID_682486820" MODIFIED="1563456831249" TEXT="reiner UI-State"/>
|
||||
<node CREATED="1563456880459" ID="ID_774164712" MODIFIED="1563456884053" TEXT="zweistufig">
|
||||
<node CREATED="1563456835400" ID="ID_939422947" MODIFIED="1563456900080" TEXT="zugehöriger Track expanded/collapsed?"/>
|
||||
<node CREATED="1563456901155" ID="ID_1889421343" MODIFIED="1563456935400" TEXT="Ruler selber expanded/collapsed?">
|
||||
<node CREATED="1563456985129" ID="ID_1822723040" MODIFIED="1563457050520" TEXT="nur wenn sein presentationStyle "extended" ist">
|
||||
<arrowlink COLOR="#5794dc" DESTINATION="ID_1218032977" ENDARROW="Default" ENDINCLINATION="23;-49;" ID="Arrow_ID_477709565" STARTARROW="None" STARTINCLINATION="-54;23;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563457226008" ID="ID_104997878" MODIFIED="1563457229476" TEXT="rulerKind"/>
|
||||
<node CREATED="1563456345999" ID="ID_411877946" MODIFIED="1563456383198" TEXT="presentationBinding">
|
||||
<node CREATED="1563456386610" ID="ID_1590625879" MODIFIED="1563456393668" TEXT="wie erscheint der Ruler">
|
||||
<node CREATED="1563456477213" ID="ID_214170046" MODIFIED="1563456480985" TEXT="sichtbar?"/>
|
||||
<node CREATED="1563456482333" ID="ID_1117291877" MODIFIED="1563456499676" TEXT="presentationStyle">
|
||||
<node CREATED="1563456501722" ID="ID_342624302" MODIFIED="1563456515812" TEXT="kompakt">
|
||||
<node CREATED="1563456569224" ID="ID_1752795491" MODIFIED="1563456573692" TEXT="alles in einem Overlay"/>
|
||||
</node>
|
||||
<node CREATED="1563456518864" ID="ID_1218032977" MODIFIED="1563457050520" TEXT="erweitert/Größe">
|
||||
<linktarget COLOR="#5794dc" DESTINATION="ID_1218032977" ENDARROW="Default" ENDINCLINATION="23;-49;" ID="Arrow_ID_477709565" SOURCE="ID_1822723040" STARTARROW="None" STARTINCLINATION="-54;23;"/>
|
||||
<node CREATED="1563456575488" ID="ID_1884743688" MODIFIED="1563456585226" TEXT="verschiedene Spuren/Skalen"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563456394449" ID="ID_1897645470" MODIFIED="1563456399763" TEXT="wenn expanded">
|
||||
<node CREATED="1563456435059" ID="ID_927353995" MODIFIED="1563456442622" TEXT="hängt von Struktur ab">
|
||||
<node CREATED="1563456443867" ID="ID_1809491279" MODIFIED="1563456449319" TEXT="Leaf or Fork?"/>
|
||||
<node CREATED="1563456450468" ID="ID_1604151454" MODIFIED="1563456461931" TEXT="generisch vorprogrammiert"/>
|
||||
<node CREATED="1563456462928" ID="ID_443423813" MODIFIED="1563456468426" TEXT="aber trotzdem dynamisches Verhalten"/>
|
||||
</node>
|
||||
<node CREATED="1563456726268" ID="ID_1768365080" MODIFIED="1563456735534" TEXT="außerdem sichtbar oder verborgen?">
|
||||
<node CREATED="1563456762562" ID="ID_968633527" MODIFIED="1563456775217" TEXT="Leaf: häufig verborgen"/>
|
||||
<node CREATED="1563456781637" ID="ID_1656158229" MODIFIED="1563456804956" TEXT="Fork: kommt darauf an....">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
....ob es was sinnvolles in einem Overview-Ruler anzuzeigen gibt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563456400751" ID="ID_508263117" MODIFIED="1563456404235" TEXT="wenn collapsed">
|
||||
<node CREATED="1563456707526" ID="ID_1191444122" MODIFIED="1563456715230" TEXT="verborgen oder kompakt?"/>
|
||||
<node CREATED="1563456694616" ID="ID_119245095" MODIFIED="1563456705916" TEXT="nur 1-dimensionale Unterscheidung"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -19926,6 +20181,13 @@
|
|||
<node CREATED="1555198558887" ID="ID_1718337163" MODIFIED="1560442514142" TEXT="Beide Canvas-Instanzen verwenden das gleiche Koordinatensystem">
|
||||
<arrowlink DESTINATION="ID_1220970686" ENDARROW="Default" ENDINCLINATION="-532;0;" ID="Arrow_ID_1730442283" STARTARROW="None" STARTINCLINATION="377;0;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563143974534" HGAP="122" ID="ID_130702763" MODIFIED="1563143992633" TEXT="TODO: wirklich?" VSHIFT="-39">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1563143996702" ID="ID_1893904282" MODIFIED="1563144019155" TEXT="im Momment (7/2019) verwende ich eine laufende (pixel)-Zeile"/>
|
||||
<node CREATED="1563144020688" ID="ID_1371868080" MODIFIED="1563144028227" TEXT="die startet jeweils bei 0"/>
|
||||
<node CREATED="1563144029219" ID="ID_738243832" MODIFIED="1563144048228" TEXT="und wird für jedes Struktur-Element mit dem Offset beaufschlagt"/>
|
||||
<node CREATED="1563144049378" ID="ID_1567458686" MODIFIED="1563144067157" TEXT="Konsequenz: jeder Canvas hat seine eigenen Koordinaten"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1555198633466" ID="ID_780787053" MODIFIED="1560442064470" TEXT="Auf Interpretieren des Struktur-Profils zurückgeführt">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -20835,8 +21097,8 @@
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560442439507" ID="ID_1072410115" MODIFIED="1560612658066" TEXT="Implementierung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1560442439507" ID="ID_1072410115" MODIFIED="1563143925265" TEXT="Implementierung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1560612664570" ID="ID_487480098" MODIFIED="1563117887785" TEXT="wo steckt diese Info?">
|
||||
<node CREATED="1560612681316" ID="ID_1320073999" MODIFIED="1560612835546" TEXT="bisher im Argument des Prelude-Verbs">
|
||||
<icon BUILTIN="info"/>
|
||||
|
|
@ -21154,7 +21416,7 @@
|
|||
</node>
|
||||
<node CREATED="1540951718734" HGAP="69" ID="ID_179159881" MODIFIED="1557498707229" TEXT="TrackBody" VSHIFT="-42">
|
||||
<node CREATED="1540951732747" ID="ID_879954288" MODIFIED="1557498707229" TEXT="kein Widget, sondern eine Hilfs-Struktur"/>
|
||||
<node CREATED="1540951833141" ID="ID_387631457" MODIFIED="1557498707229" TEXT="erledigt für den Canvas das Zeichnen für einen Track"/>
|
||||
<node CREATED="1540951833141" ID="ID_387631457" MODIFIED="1563143876501" TEXT="steuert für den Canvas das Zeichnen für einen Track"/>
|
||||
<node CREATED="1540951862399" ID="ID_708158546" MODIFIED="1557498707229" TEXT="relative Koordinaten (und sowiso nur vertikal)"/>
|
||||
<node CREATED="1540951873159" ID="ID_1843757439" MODIFIED="1557498707229" TEXT="kennt aber seine eigene Höhe"/>
|
||||
<node CREATED="1540951934151" ID="ID_1702719060" MODIFIED="1557498707229" TEXT="Bestandteile">
|
||||
|
|
@ -21205,7 +21467,7 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1544839288936" ID="ID_43593052" MODIFIED="1560686299759" TEXT="zwei Ruler-Konfigs in das systematische UI-Modell">
|
||||
<node CREATED="1544839288936" ID="ID_43593052" MODIFIED="1563143640658" TEXT="Ruler-Konfigs in das systematische UI-Modell">
|
||||
<arrowlink COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-746;-75;" ID="Arrow_ID_1167484185" STARTARROW="None" STARTINCLINATION="-981;0;"/>
|
||||
<node COLOR="#338800" CREATED="1544849869166" ID="ID_1025477379" MODIFIED="1557498707229" TEXT="Frage: wo ansiedeln?">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -21232,7 +21494,7 @@
|
|||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560173474830" ID="ID_351544133" MODIFIED="1560173496890" TEXT="sind es "zwei" oder sind es N Konfigs?">
|
||||
<node COLOR="#435e98" CREATED="1560173474830" ID="ID_351544133" MODIFIED="1563143676190" TEXT="wie viele sind es?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node COLOR="#ba568c" CREATED="1560173511341" ID="ID_637775069" MODIFIED="1560173529984" TEXT="Monate später...">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
|
|
@ -21240,6 +21502,11 @@
|
|||
<node CREATED="1560173498827" ID="ID_553759798" MODIFIED="1560173508018" TEXT="und was meint hier "Konfig"...?">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
</node>
|
||||
<node CREATED="1563143678330" ID="ID_343908242" MODIFIED="1563143681001" TEXT="Antwort">
|
||||
<node CREATED="1563143682350" ID="ID_1332243622" MODIFIED="1563143690248" TEXT="beliebig viele, und verschachtelt"/>
|
||||
<node CREATED="1563143691380" ID="ID_1703343523" MODIFIED="1563143697157" TEXT="Jeder Track kann Ruler haben"/>
|
||||
<node CREATED="1563143698199" ID="ID_1437895403" MODIFIED="1563143711781" TEXT="die Ruler des top-level-Track werden gePinnt dargestellt"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -21779,8 +22046,8 @@
|
|||
<node CREATED="1562938985427" ID="ID_1430350400" MODIFIED="1562939000802" TEXT="und das Advice-System bietet hierfür die adäquate Infrastruktur"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1562972719033" FOLDED="true" ID="ID_1528071219" MODIFIED="1563044223514" TEXT="klären: ist der Style-Pfad sinnvoll / korrekt?">
|
||||
<linktarget COLOR="#46558a" DESTINATION="ID_1528071219" ENDARROW="Default" ENDINCLINATION="-639;0;" ID="Arrow_ID_1602346272" SOURCE="ID_678877446" STARTARROW="None" STARTINCLINATION="564;0;"/>
|
||||
<node COLOR="#435e98" CREATED="1562972719033" FOLDED="true" ID="ID_1528071219" MODIFIED="1563143772159" TEXT="klären: ist der Style-Pfad sinnvoll / korrekt?">
|
||||
<linktarget COLOR="#46558a" DESTINATION="ID_1528071219" ENDARROW="Default" ENDINCLINATION="-297;0;" ID="Arrow_ID_1602346272" SOURCE="ID_678877446" STARTARROW="None" STARTINCLINATION="646;20;"/>
|
||||
<icon BUILTIN="help"/>
|
||||
<node COLOR="#435e98" CREATED="1562972764593" ID="ID_315266947" MODIFIED="1563033166705" TEXT="warum beginnt der Pfad mit dem Timeline-Widget?">
|
||||
<node CREATED="1562972783861" ID="ID_284818197" MODIFIED="1562972793575" TEXT="ist das nicht korrekt veranktert?"/>
|
||||
|
|
@ -21919,8 +22186,8 @@
|
|||
</node>
|
||||
<node CREATED="1562237138185" ID="ID_677602530" MODIFIED="1562237172328" TEXT="vermutlich eine Misch-Lösung, mit Ergänzungen nach dem ersten Ansatz"/>
|
||||
</node>
|
||||
<node CREATED="1563019888259" HGAP="51" ID="ID_678877446" MODIFIED="1563020041476" TEXT="systematischen CSS-Pfad bereitstellen" VSHIFT="12">
|
||||
<arrowlink COLOR="#46558a" DESTINATION="ID_1528071219" ENDARROW="Default" ENDINCLINATION="-639;0;" ID="Arrow_ID_1602346272" STARTARROW="None" STARTINCLINATION="564;0;"/>
|
||||
<node CREATED="1563019888259" HGAP="51" ID="ID_678877446" MODIFIED="1563143772159" TEXT="systematischen CSS-Pfad bereitstellen" VSHIFT="12">
|
||||
<arrowlink COLOR="#46558a" DESTINATION="ID_1528071219" ENDARROW="Default" ENDINCLINATION="-297;0;" ID="Arrow_ID_1602346272" STARTARROW="None" STARTINCLINATION="646;20;"/>
|
||||
<linktarget COLOR="#4b31cd" DESTINATION="ID_678877446" ENDARROW="Default" ENDINCLINATION="-711;38;" ID="Arrow_ID_643305825" SOURCE="ID_331912016" STARTARROW="Default" STARTINCLINATION="-237;18;"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -22048,6 +22315,75 @@
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563143033085" ID="ID_149529437" MODIFIED="1563143047761" TEXT="woher kommt die Info?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1563144390094" ID="ID_1352488414" MODIFIED="1563144414266" TEXT="Quelle-1: zusammen mit dem Track-Head "ausgehandelt""/>
|
||||
<node CREATED="1563144448477" ID="ID_545543746" MODIFIED="1563144464040" TEXT="Quelle-2: man kann die TrackBody-Struktur (rekursiv) fragen"/>
|
||||
<node CREATED="1563144415950" ID="ID_264748187" MODIFIED="1563144447096" TEXT="Quelle-3: wenn der Zeichen-Code fertig ist, weiß man was rauskommt">
|
||||
<node CREATED="1563144486739" ID="ID_933628775" MODIFIED="1563144505714" TEXT="die line_ wird hochgezählt"/>
|
||||
<node CREATED="1563144507398" ID="ID_231636632" MODIFIED="1563144515788" TEXT="der Renderer könnte die zurückgeben">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563144536346" ID="ID_681708047" MODIFIED="1563144548269" TEXT="wo muß sie gesetzt werden?">
|
||||
<node CREATED="1563144549497" ID="ID_1704331189" MODIFIED="1563144560069" TEXT="jeweils in jedem der beiden Canvas-Widgets">
|
||||
<node CREATED="1563144627773" ID="ID_215614628" MODIFIED="1563144635638" TEXT="siehe gtk-canvas-experiment.cpp"/>
|
||||
<node CREATED="1563144650777" ID="ID_1603192919" MODIFIED="1563144652311" TEXT="Canvas::determineExtension()"/>
|
||||
<node CREATED="1563144669172" ID="ID_1489838072" MODIFIED="1563144675523" TEXT="Gtk::Layout::set_size(w,h)"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563144591112" ID="ID_1777300285" MODIFIED="1563145103711" TEXT="muß das vor dem Zeichnen passieren?">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1563144864662" ID="ID_1195404065" MODIFIED="1563144993000" TEXT="vermutlich nicht">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
meine Einschätzung, basiert auf dem gtk-canvas-experiment.cpp
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
zeichnen kann man "irgendwie" auf dem Canvas.
|
||||
</li>
|
||||
<li>
|
||||
außerdem hat das Gtk::Layout ein hadjustment() / vadjustment()
|
||||
</li>
|
||||
<li>
|
||||
diese können (optional) an eine Scrolled-Pane angekoppelt sein
|
||||
</li>
|
||||
<li>
|
||||
die tatsächliche size-Allocation ist ein davon unabhängiges Thema
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1563145010348" ID="ID_1404407551" MODIFIED="1563145095624">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<i>rein gefühlsmäßig</i> wäre aber vorher wohl geschickter
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
denn was passiert, wenn sich durch das Setzen einer neuen Größe der sichtbare Bereich ändert? Löst das dann nicht erneut einen draw()-Aufruf aus??
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -22388,7 +22724,7 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560694757109" ID="ID_46205088" MODIFIED="1560694763764" TEXT="TODO klären">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1560694764824" ID="ID_358602712" MODIFIED="1560694782260" TEXT="inwiefern müssen Kind-Widgets aktiv entfernt werden?"/>
|
||||
<node CREATED="1560694869833" ID="ID_1349567495" MODIFIED="1560695026994" TEXT="im Besonderen der DisplayFrame">
|
||||
<node CREATED="1560694869833" ID="ID_1349567495" MODIFIED="1563466899646" TEXT="im Besonderen der DisplayFrame">
|
||||
<arrowlink COLOR="#ac8396" DESTINATION="ID_1492670388" ENDARROW="Default" ENDINCLINATION="-473;37;" ID="Arrow_ID_1838431568" STARTARROW="None" STARTINCLINATION="-428;36;"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1560695202385" ID="ID_1396137041" MODIFIED="1560695217396" TEXT="experimentell klären">
|
||||
<icon BUILTIN="yes"/>
|
||||
|
|
@ -31875,7 +32211,7 @@
|
|||
<node CREATED="1492205732389" ID="ID_1080697951" MODIFIED="1518487921090" TEXT="wir können stets gleich triggern"/>
|
||||
</node>
|
||||
<node CREATED="1492205741483" ID="ID_1132272888" MODIFIED="1518487921090" TEXT="Command wird sofort nach dem Binden getriggert"/>
|
||||
<node COLOR="#338800" CREATED="1483925280108" HGAP="30" ID="ID_1479669922" MODIFIED="1538838665321" TEXT="Protokoll-Erweiterung" VSHIFT="8">
|
||||
<node COLOR="#338800" CREATED="1483925280108" HGAP="30" ID="ID_1479669922" MODIFIED="1563145261726" TEXT="Protokoll-Erweiterung" VSHIFT="8">
|
||||
<arrowlink COLOR="#e9ba2d" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="-944;1604;" ID="Arrow_ID_1617518648" STARTARROW="None" STARTINCLINATION="3617;-1097;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1483925298713" ID="ID_347702585" MODIFIED="1518487921090" TEXT="Command-Prototyp forken"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue