ElementBox: working draft of ElementBoxWidget, establishing ctor framework
The flexible custom styling yet needs to be definied. Just adding a stock icon and a standard sized label field for now. Widget can be constructed and successfully attached to a track.
This commit is contained in:
parent
ed7e3b4b32
commit
38b6228fac
8 changed files with 281 additions and 18 deletions
|
|
@ -152,7 +152,7 @@ namespace dialog {
|
|||
* A complex, tabbed-notebook-style non-modal dialog window,
|
||||
* dedicated to development, diagnostics and experimentation.
|
||||
* The TestControl can be launched from Lumiera's "Help" menu,
|
||||
* offers an (passive, up-link) [UI-Bus connection](\ref ui-bus.hpp)
|
||||
* offers a (passive, up-link) [UI-Bus connection](\ref ui-bus.hpp)
|
||||
* and simplifies adding pages for occasional experiments and diagnostics.
|
||||
*/
|
||||
class TestControl
|
||||
|
|
|
|||
|
|
@ -63,7 +63,8 @@ namespace timeline {
|
|||
|
||||
|
||||
MarkerWidget::MarkerWidget (ID identity, ctrl::BusTerm& nexus)
|
||||
: Widget{identity, nexus}
|
||||
: model::Widget{identity, nexus}
|
||||
, ElementBoxWidget(widget::MARK, widget::Type::LABEL)
|
||||
, kind_{MARK}
|
||||
, name_{identity.getSym()} // ID symbol as name fallback
|
||||
{
|
||||
|
|
|
|||
|
|
@ -105,6 +105,11 @@ namespace timeline {
|
|||
{
|
||||
this->fork_->injectDebugTrackLabels();
|
||||
}
|
||||
else
|
||||
if (mark.idi.getSym() == "box" && this->fork_)
|
||||
{
|
||||
this->fork_->attachElementBox();
|
||||
}
|
||||
else // forward to default handler
|
||||
model::Controller::doMark (mark);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -216,6 +216,7 @@ namespace timeline {
|
|||
virtual void buildMutator (lib::diff::TreeMutator::Handle) override;
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1201 : test/code... remove this
|
||||
void injectDebugTrackLabels();
|
||||
void attachElementBox();
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1201 : test/code... remove this
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1201 : test/code... remove this
|
||||
uString TODO_trackName_;
|
||||
|
|
@ -257,6 +258,18 @@ namespace timeline {
|
|||
for (auto& subTrack : subFork_)
|
||||
subTrack->injectDebugTrackLabels();
|
||||
}
|
||||
inline void
|
||||
TrackPresenter::attachElementBox()
|
||||
{
|
||||
uint x = rand() % 200;
|
||||
uint y = 0;
|
||||
widget::ElementBoxWidget* box = Gtk::manage (
|
||||
new model::CanvasHooked<widget::ElementBoxWidget, Gtk::Widget>{display_.hookedAt(x,y)
|
||||
, widget::Kind::MARK
|
||||
, widget::Type::LABEL
|
||||
, widget::name("Ω")
|
||||
});
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1201 : test/code... remove this
|
||||
/**
|
||||
* @note we distinguish between the contents of our four nested child collections
|
||||
|
|
|
|||
|
|
@ -59,15 +59,32 @@ namespace widget {
|
|||
|
||||
|
||||
|
||||
ElementBoxWidget::ElementBoxWidget ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
ElementBoxWidget::~ElementBoxWidget()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
ElementBoxWidget::Strategy::configure()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
ElementBoxWidget::ElementBoxWidget (Strategy strategy)
|
||||
: Frame{}
|
||||
, label_{Gtk::ORIENTATION_HORIZONTAL}
|
||||
, icon_{Gtk::StockID{"track_enabled"}, Gtk::ICON_SIZE_MENU} ////////////////TODO: use of stockIDs is deprecated; care for a more modern icon naming scheme
|
||||
{
|
||||
strategy.configure();
|
||||
set_label_widget(label_);
|
||||
label_.add(icon_);
|
||||
label_.add(name_);
|
||||
name_.set_text(strategy.getName());
|
||||
name_.set_hexpand(true);
|
||||
|
||||
this->show_all();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
** notion of _"type"._
|
||||
**
|
||||
** @todo WIP-WIP-WIP as of 11/2018 ///////////////////////////////////////////////////////////////////////TICKET #1185
|
||||
** @todo WIP-WIP-WIP as of 9/2022 ///////////////////////////////////////////////////////////////////////TICKET #1219
|
||||
**
|
||||
*/
|
||||
|
||||
|
|
@ -41,31 +42,145 @@
|
|||
#define STAGE_WIDGET_ELEMENT_BOX_WIDGET_H
|
||||
|
||||
#include "stage/gtk-base.hpp"
|
||||
#include "stage/model/expander-revealer.hpp"
|
||||
#include "lib/builder-qualifier-support.hpp"
|
||||
|
||||
//#include "lib/util.hpp"
|
||||
#include "lib/format-string.hpp"
|
||||
|
||||
//#include <memory>
|
||||
//#include <vector>
|
||||
#include <string> //////TODO debugging
|
||||
|
||||
|
||||
|
||||
namespace stage {
|
||||
namespace widget {
|
||||
|
||||
using std::string; /////TODO
|
||||
using util::_Fmt; /////TODO debugging?
|
||||
|
||||
/** the presentation intent for the ElementBoxWidget */
|
||||
enum Kind { MARK ///< Widget is a pin or marks a position
|
||||
, SPAN ///< Widget spans a time range
|
||||
, ITEM ///< Widget represents an entity within a collection (Bin)
|
||||
, CONTENT ///< Widget serves to represent a piece of content (Clip)
|
||||
};
|
||||
|
||||
/** the type of content object to derive suitable styling */
|
||||
enum Type { VIDEO ///< represents moving (or still) image data
|
||||
, AUDIO ///< represents sound data
|
||||
, TEXT ///< represents text content
|
||||
, AUTO ///< represents automation
|
||||
, EVENT ///< represents event streams or live connections
|
||||
, EFFECT ///< represents a processor or transformer
|
||||
, LABEL ///< represents a label or descriptor
|
||||
, RULER ///< represents an overview ruler or TOC
|
||||
, GROUP ///< represents a container to group other entities
|
||||
, META ///< represents some meta entity
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @todo WIP-WIP as of 12/2016
|
||||
* A basic building block of the Lumiera UI.
|
||||
* Representation of an entity, with a marker icon, a menu, descriptive label and
|
||||
* possibly a content renderer (e.g. for a video clip). Depending on the presentation intent,
|
||||
* the widget can extend to a defined time range horizontally. Pre-defined styling and bindings
|
||||
* to expand the display and to invoke a menu are provided
|
||||
*/
|
||||
class ElementBoxWidget
|
||||
: public Gtk::Frame
|
||||
{
|
||||
Gtk::Box label_;
|
||||
Gtk::Image icon_;
|
||||
Gtk::Label name_;
|
||||
|
||||
public:
|
||||
ElementBoxWidget ();
|
||||
class Strategy;
|
||||
|
||||
template<class... QS>
|
||||
ElementBoxWidget (Kind kind, Type type, QS ...qualifiers);
|
||||
|
||||
ElementBoxWidget (Strategy);
|
||||
~ElementBoxWidget();
|
||||
|
||||
// default copy acceptable
|
||||
|
||||
private:/* ===== Internals ===== */
|
||||
|
||||
};
|
||||
|
||||
class ElementBoxWidget::Strategy
|
||||
: lib::BuilderQualifierSupport<Strategy>
|
||||
{
|
||||
Type type_;
|
||||
uString nameID_{"∅"};
|
||||
string logTODO_{nameID_};
|
||||
|
||||
friend Qualifier kind(Kind);
|
||||
friend Qualifier name(string id);
|
||||
friend Qualifier expander(model::Expander&);
|
||||
|
||||
public:
|
||||
template<class... QS>
|
||||
Strategy(Type type, Qualifier qual, QS... qs)
|
||||
: type_{type}
|
||||
{
|
||||
qualify(*this, qual, qs...);
|
||||
}
|
||||
|
||||
/** decide upon the presentation strategy */
|
||||
void configure();
|
||||
|
||||
cuString
|
||||
getName() const
|
||||
{
|
||||
return nameID_;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
inline ElementBoxWidget::Strategy::Qualifier
|
||||
kind(Kind kind)
|
||||
{
|
||||
return ElementBoxWidget::Strategy::Qualifier{
|
||||
[=](ElementBoxWidget::Strategy& strategy)
|
||||
{
|
||||
strategy.logTODO_ += util::_Fmt{"+kind(%s)"} % kind;
|
||||
}};
|
||||
}
|
||||
|
||||
inline ElementBoxWidget::Strategy::Qualifier
|
||||
name(string id)
|
||||
{
|
||||
return ElementBoxWidget::Strategy::Qualifier{
|
||||
[=](ElementBoxWidget::Strategy& strategy)
|
||||
{
|
||||
strategy.nameID_ = id;
|
||||
}};
|
||||
}
|
||||
|
||||
inline ElementBoxWidget::Strategy::Qualifier
|
||||
expander(model::Expander& expander)
|
||||
{
|
||||
return ElementBoxWidget::Strategy::Qualifier{
|
||||
[&](ElementBoxWidget::Strategy& strategy)
|
||||
{
|
||||
strategy.logTODO_ += util::_Fmt{"+expander(%s)"} % &expander;
|
||||
}};
|
||||
}
|
||||
|
||||
|
||||
/** setup an ElementBoxWidget with suitable presentation style.
|
||||
* @param widgetKind the basic presentation intent
|
||||
* @param type qualify the type of data represented by this object
|
||||
* @param qualifiers pass further qualifiers to fine-tune the presentation
|
||||
*/
|
||||
template<class... QS>
|
||||
inline ElementBoxWidget::ElementBoxWidget (Kind widgetKind, Type type, QS ...qualifiers)
|
||||
: ElementBoxWidget{Strategy(type, kind(widgetKind), qualifiers...)}
|
||||
{ }
|
||||
|
||||
|
||||
}}// namespace stage::widget
|
||||
#endif /*STAGE_WIDGET_ELEMENT_BOX_WIDGET_H*/
|
||||
|
|
|
|||
|
|
@ -3217,7 +3217,7 @@ In accordance with this structure, we introduce a central component, the {{{Pane
|
|||
|
||||
</pre>
|
||||
</div>
|
||||
<div title="GuiElementBoxWidget" creator="Ichthyostega" modifier="Ichthyostega" created="201811011919" modified="201811011920" tags="GuiPattern spec draft" changecount="4">
|
||||
<div title="GuiElementBoxWidget" creator="Ichthyostega" modifier="Ichthyostega" created="201811011919" modified="202209011727" tags="GuiPattern spec draft" changecount="6">
|
||||
<pre>//A building block used pervasively throughout the Lumiera UI to represent a named entity.//
|
||||
This widget presents a horizontally extended body, which holds a characteristic ''Head-Triplet'' of visual Elements:
|
||||
* an //Icon// to create the visual anchor point. In many cases, this will be ''the Placment Icon'' (a hallmark of Lumiera's UI)
|
||||
|
|
@ -3251,6 +3251,31 @@ We offer pre-arranged options for standard wiring of interaction response
|
|||
* the ''Expander'' (which is part of the UI-Element protocol) is pre-wired with the arrow on the menu button, to yield a visible clue for the expand/collapse state
|
||||
* each of the bindings can be easily replaced by a [[pop-up menu|GuiPopupMenu]]
|
||||
|
||||
!!!usage and setup
|
||||
The class {{{widget::ElementBoxWidget}}} uses a flexible declarative constructor style, defining the //intended use// while delegating the details of styling to CSS classes. On construction, it is mandatory to define
|
||||
;presentation intent
|
||||
:what we want to achieve with this widget instance
|
||||
:*{{{MARK}}} : Widget is a pin or marks a position
|
||||
:*{{{SPAN}}} : Widget spans a time range
|
||||
:*{{{ITEM}}} : Widget represents an entity within a collection (Bin)
|
||||
:*{{{CONTENT}}} : Widget serves to represent a piece of content (Clip)
|
||||
;object type
|
||||
:the type of data to be represented by this widget
|
||||
:*{{{VIDEO}}} : represents moving (or still) image data
|
||||
:*{{{AUDIO}}} : represents sound data
|
||||
:*{{{TEXT}}} : represents text content, e.g. Subtitles, Credits
|
||||
:*{{{AUTO}}} : represents automation
|
||||
:*{{{EVENT}}} : represents event streams or live connections, like e.g. MIDI data
|
||||
:*{{{EFFECT}}} : represents a processor or transformer
|
||||
:*{{{LABEL}}} : represents a label or descriptor
|
||||
:*{{{RULER}}} : represents an overview ruler or TOC
|
||||
:*{{{GROUP}}} : represents a [[Fork]], Bin or similar container to group other entities
|
||||
:*{{{META}}} : represents some meta entity
|
||||
In addition to these mandatory arguments, a sequence of //qualifiers// can be supplied to tweak the details of the presentation
|
||||
*{{{name(string)}}} : define the name or ID to be shown in the label field
|
||||
*{{{expander(ref)}}} : use a expand/collapse button, wired with the given »expander« functor (part of the standard UI-Element protocol)
|
||||
|
||||
|
||||
!!!proportional Head placement
|
||||
This behaviour pattern (see [[#1186|https://issues.lumiera.org/ticket/1186]]) is a distinguishing trait of the Lumiera timeline display. It indicates elements with a temporal extension surpassing the current display window. Such elements are typically represented by an {{{ElementBoxWidget}}} with an large horizontal extension. Yet when scrolling, the head-triplet shall always remain within the visible area, but it will slowly glide from one side to the other, thereby indicating the our relative position. This pattern of behaviour matters, since, together with the scolled content display, it creates the dominant movement when scrolling an extended timeline
|
||||
|
||||
|
|
|
|||
|
|
@ -5261,7 +5261,25 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1477784829157" ID="ID_1998357180" MODIFIED="1557498707217" TEXT="Icon-Laden modernisieren"/>
|
||||
<node CREATED="1477784829157" ID="ID_1998357180" MODIFIED="1662053420334" TEXT="Icon-Laden modernisieren">
|
||||
<linktarget COLOR="#b73b74" DESTINATION="ID_1998357180" ENDARROW="Default" ENDINCLINATION="-1444;146;" ID="Arrow_ID_373354654" SOURCE="ID_264004203" STARTARROW="None" STARTINCLINATION="-586;-482;"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1662052083304" ID="ID_1536704401" MODIFIED="1662052109690">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Stock-IDs sind <font color="#e94312" face="Monospaced">@deprecated</font>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1662052322319" ID="ID_1280255371" MODIFIED="1662052382908" TEXT="Implementierung: im UiManager">
|
||||
<arrowlink COLOR="#864e7a" DESTINATION="ID_297910960" ENDARROW="Default" ENDINCLINATION="-843;-48;" ID="Arrow_ID_154615679" STARTARROW="None" STARTINCLINATION="695;60;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1477784821925" ID="ID_1871474250" MODIFIED="1557498707217" TEXT="Styling aufräumen">
|
||||
<node CREATED="1477784846162" ID="ID_1164942946" MODIFIED="1557498707217" TEXT="siehe Info zum CssProvider">
|
||||
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1810760662" ENDARROW="Default" ENDINCLINATION="1600;-25;" ID="Arrow_ID_1610122569" STARTARROW="None" STARTINCLINATION="-840;95;"/>
|
||||
|
|
@ -6338,6 +6356,10 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1662052275502" ID="ID_297910960" MODIFIED="1662052382908" TEXT="Icons verwalten / Ressourcen bereitstellen">
|
||||
<linktarget COLOR="#864e7a" DESTINATION="ID_297910960" ENDARROW="Default" ENDINCLINATION="-843;-48;" ID="Arrow_ID_154615679" SOURCE="ID_1280255371" STARTARROW="None" STARTINCLINATION="695;60;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1489460861250" HGAP="91" ID="ID_771159819" MODIFIED="1557498707220" TEXT="globaler Kontext" VSHIFT="-26">
|
||||
|
|
@ -18163,6 +18185,7 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625075337795" ID="ID_873107891" MODIFIED="1625075355499" TEXT="Analyse">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625075422300" ID="ID_1618347962" MODIFIED="1625075428886" TEXT="was ist flexibel?">
|
||||
<arrowlink COLOR="#758d9c" DESTINATION="ID_1956334148" ENDARROW="Default" ENDINCLINATION="-821;-507;" ID="Arrow_ID_1964102997" STARTARROW="None" STARTINCLINATION="48;358;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1625075536956" ID="ID_1129688450" MODIFIED="1625075544135" TEXT="expanded vs collapsed"/>
|
||||
<node CREATED="1625075675850" ID="ID_1669027675" MODIFIED="1625075700208" TEXT="Status-Anzeige-Elemente">
|
||||
|
|
@ -18339,7 +18362,7 @@
|
|||
<node CREATED="1654448145019" ID="ID_1438778701" MODIFIED="1654448147368" TEXT="AUDIO"/>
|
||||
<node CREATED="1654448148172" ID="ID_619152561" MODIFIED="1654448153007" TEXT="EFFECT"/>
|
||||
<node CREATED="1654448154480" ID="ID_1428501909" MODIFIED="1654448287941" TEXT="LABEL">
|
||||
<node CREATED="1654448495868" ID="ID_278262506" MODIFIED="1654448527144" TEXT="oder MARKER">
|
||||
<node CREATED="1654448495868" ID="ID_278262506" MODIFIED="1662037668001" TEXT="oder MARKER?">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -18351,9 +18374,18 @@
|
|||
<p>
|
||||
...was hab ich bei den Kind-Elementen vom Track gemacht?
|
||||
</p>
|
||||
<p>
|
||||
⟹ die heißen auch »Marker«
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1661896412054" ID="ID_1438729609" MODIFIED="1662037625910" TEXT=""Marker" drückt den Intent besser aus">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node CREATED="1662037631505" ID="ID_242913609" MODIFIED="1662037676913" TEXT="Aber das Objekt ist besser als »Label« beschrieben">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1654448789732" ID="ID_816398160" MODIFIED="1654450396327" TEXT="RULER">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
|
|
@ -18427,17 +18459,44 @@
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661721385054" ID="ID_229098374" MODIFIED="1661721388942" TEXT="Framework anlegen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661721522872" ID="ID_1721632208" MODIFIED="1661721527187" TEXT="ENUMs">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1661721522872" ID="ID_1721632208" MODIFIED="1662051074564" TEXT="ENUMs">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661721389797" ID="ID_96735997" MODIFIED="1661721400786" TEXT="Qualifier">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1661721389797" ID="ID_96735997" MODIFIED="1662051077177" TEXT="Qualifier">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661721393893" ID="ID_293134573" MODIFIED="1661721423931" TEXT="Validierungs-Funktion">
|
||||
<linktarget COLOR="#c63166" DESTINATION="ID_293134573" ENDARROW="Default" ENDINCLINATION="64;-83;" ID="Arrow_ID_543159170" SOURCE="ID_1192772963" STARTARROW="None" STARTINCLINATION="-313;15;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1662051084085" ID="ID_906734828" MODIFIED="1662051103543" TEXT="Strategy::configure()"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1661896735138" ID="ID_1956334148" MODIFIED="1662037245996" TEXT="Darstellungs-Varianten">
|
||||
<linktarget COLOR="#758d9c" DESTINATION="ID_1956334148" ENDARROW="Default" ENDINCLINATION="-821;-507;" ID="Arrow_ID_1964102997" SOURCE="ID_1618347962" STARTARROW="None" STARTINCLINATION="48;358;"/>
|
||||
<node CREATED="1661897283192" ID="ID_981716930" MODIFIED="1661897305658" TEXT="natural-size vs. time-extension">
|
||||
<node CREATED="1661897836550" ID="ID_855148084" MODIFIED="1661897851456" TEXT="Standard-Breite + Platz gemäß Label"/>
|
||||
<node CREATED="1661897852332" ID="ID_1972489184" MODIFIED="1661897874317" TEXT="nimmt eine bestimmte, geeichte Länge ein"/>
|
||||
</node>
|
||||
<node CREATED="1661897434780" ID="ID_527434032" MODIFIED="1661897445710" TEXT="ruler vs. content">
|
||||
<node CREATED="1661897884248" ID="ID_123509205" MODIFIED="1661897894398" TEXT="nur ein Balken, auf dem das Label platziert ist"/>
|
||||
<node CREATED="1661897895098" ID="ID_730907328" MODIFIED="1661897906945" TEXT="oder ein Container mit Inhalts-Darstellung"/>
|
||||
</node>
|
||||
<node CREATED="1661897677379" ID="ID_1139847619" MODIFIED="1661897684638" TEXT="Placement vs Type-Icon">
|
||||
<node CREATED="1661897909029" ID="ID_1339555856" MODIFIED="1661897948418" TEXT="Placement-UI; Menü per Rechts-click auf den Content"/>
|
||||
<node CREATED="1661897950823" ID="ID_307552216" MODIFIED="1661898035463" TEXT="Type-Icon öffnet Menü"/>
|
||||
</node>
|
||||
<node CREATED="1661897791060" ID="ID_745130106" MODIFIED="1661897799999" TEXT="Expander vs Details">
|
||||
<node CREATED="1661898047850" ID="ID_655139501" MODIFIED="1661898068517" TEXT="Expander auf/ab klappt Anzeige auf"/>
|
||||
<node CREATED="1661898071047" ID="ID_1263290203" MODIFIED="1661898088744" TEXT="Detail-Pfeil öffnet Property-Box"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1662051984940" ID="ID_974876977" MODIFIED="1662051988957" TEXT="Icon verwalten">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1662051990492" ID="ID_264004203" MODIFIED="1662052527424" TEXT="Verwaltung vordefinierter Icons">
|
||||
<arrowlink COLOR="#b73b74" DESTINATION="ID_1998357180" ENDARROW="Default" ENDINCLINATION="-1444;146;" ID="Arrow_ID_373354654" STARTARROW="None" STARTINCLINATION="-586;-482;"/>
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1661703437825" ID="ID_1401386216" MODIFIED="1661703453368" TEXT="proportional Head placement">
|
||||
|
|
@ -18589,8 +18648,19 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1654445564395" ID="ID_1890406032" MODIFIED="1654445592486" TEXT="testhalber in der HeaderPane unterbringen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1654445580312" ID="ID_271330163" MODIFIED="1654445592487" TEXT="testhalber an den Track-Canvas anheften">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1654445580312" ID="ID_271330163" MODIFIED="1662051966664" TEXT="testhalber an den Track-Canvas anheften">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1662051865093" ID="ID_586574609" MODIFIED="1662051953551" TEXT="Auslösen via TestControll �� mark-Message">
|
||||
<node CREATED="1662051911095" ID="ID_544118617" MODIFIED="1662051953551" TEXT=""mark""/>
|
||||
<node CREATED="1662051916686" ID="ID_1007131481" MODIFIED="1662051953551" TEXT="1.Feld: ID der Timeline"/>
|
||||
<node CREATED="1662051923037" ID="ID_863517485" MODIFIED="1662051953551" TEXT="2.Feld: magischer Name "box""/>
|
||||
<node COLOR="#338800" CREATED="1662051939243" ID="ID_1354069914" MODIFIED="1662051953551" TEXT="funzt">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1662051893903" ID="ID_783944635" MODIFIED="1662051953551" TEXT="Impl: TrackPresenter::attachElementBox()">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1654445594924" ID="ID_1266679575" MODIFIED="1654445604128" TEXT="Clip auf ElementBoxWidget umstellen">
|
||||
|
|
@ -56363,6 +56433,23 @@
|
|||
<node CREATED="1537576001423" ID="ID_707384345" MODIFIED="1557498707238" TEXT="interpretiert ein CSS-Stylesheet"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1662049423914" ID="ID_1951916067" MODIFIED="1662049426710" TEXT="Icons">
|
||||
<node CREATED="1662049427769" ID="ID_957383659" MODIFIED="1662049451890">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<font color="#bd035f" face="Monospaced">@deprecated </font>früher gab es die Stock-IDs
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1662049454454" ID="ID_1598985625" MODIFIED="1662049465776" TEXT="man soll »standard Icon-Names« verwenden">
|
||||
<node CREATED="1662049467172" ID="ID_124375371" LINK="https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html" MODIFIED="1662049489405" TEXT="icon-naming-spec FreeDesktop"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1537576031611" ID="ID_1494464724" MODIFIED="1557498707238" TEXT="Widgets">
|
||||
<node CREATED="1537576035498" ID="ID_1813123190" MODIFIED="1557498707238" TEXT="definieren jeweils die Styles, die sie verwenden">
|
||||
<node CREATED="1537577874195" ID="ID_385552696" MODIFIED="1557498707238" TEXT="style-context zum Widget beziehen"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue