120#ifndef STAGE_MODEL_TANGIBLE_H
121#define STAGE_MODEL_TANGIBLE_H
132#include <sigc++/trackable.h>
157 :
public sigc::trackable
175 :
uiBus_{nexus.attach(identity, *this)}
183 operator string()
const;
192 template<
typename...ARGS>
228 friend constexpr size_t
240 template<
typename...ARGS>
246 using GenNodeIL = std::initializer_list<GenNode>;
250 Rec(Rec::TYPE_NIL_SYM
252 ,GenNodeIL {std::forward<ARGS> (args)...}));
257 template<
typename...ARGS>
276 expand_ =
Expander{move (detectCurrExpansionState), move (howto_expand_collapse)};
Attachment point to the UI-Bus.
A handle to allow for safe »remote implantation« of an unknown subclass into a given opaque InPlaceBu...
Token or Atom with distinct identity.
Marker or capability interface: an otherwise not further disclosed data structure,...
object-like record of data.
Hash implementation based on a lumiera unique object id (LUID) When invoking the default ctor,...
connection point at the UI-Bus.
virtual void act(GenNode const &command)
prepare or trigger invocation of a command.
Functor component to support the default implementation of expanding/collapsing.
std::function< bool(void)> ProbeFun
std::function< void(bool)> ChangeFun
Functor component to support the default implementation of revealing an UI-Element.
std::function< void()> RevealeItFun
Interface common to all UI elements of relevance for the Lumiera application.
friend constexpr size_t treeMutatorSize(const Tangible *)
override default size traits for diff application.
virtual bool doClearErr()=0
void clearErr()
invoke the hook to clear error markers
Tangible(ID identity, ctrl::BusTerm &nexus)
virtual void doMark(GenNode const &)=0
default implementation and catch-all handler for receiving »state mark« messages.
void installExpander(Expander::ProbeFun, Expander::ChangeFun)
Configure the (optional) functionality to expand or collapse the UI-Element.
virtual bool doMsg(string)=0
virtual bool doErr(string)=0
void markFlash()
highlight the element visually to catch the user's attention
void slotReveal()
Cause the element to be brought into sight.
void clearMsg()
invoke the hook to clear notification messages
void invoke(Symbol cmdID, ARGS &&...)
void slotCollapse()
Collapse or minimise this element and remember the collapsed state.
void markErr(string error)
push an error state tag to the element
void installRevealer(Revealer::RevealeItFun)
Configure the (optional) functionality to bring the UI-Element into sight.
void markMsg(string message)
push a notification (or warning) message to the element.
virtual bool doClearMsg()=0
virtual void buildMutator(lib::diff::TreeMutator::Handle)=0
build a custom implementation of the TreeMutator interface, suitably wired to cause appropriate chang...
void mark(GenNode const &)
generic handler for all incoming "state mark" messages
virtual bool doExpand(bool yes)
generic default implementation of the expand/collapse functionality.
virtual void doReveal()
generic default implementation of the "reveal" functionality.
void reset()
invoke the generic reset hook
void slotExpand()
Expand this element and remember the expanded state.
virtual ~Tangible()
this is an interface
Any copy and copy construction prohibited.
Abstraction or descriptor interface for a data structure exposing the ability for mutation by receivi...
Bare symbolic and hash ID used for accounting of asset like entries.
Lumiera error handling (C++ interface).
Helper components to implement some standard UI-element actions by installing a functor.
lib::diff::GenNode commandMessage(Symbol cmdID, ARGS &&... args)
convenience shortcut to build a message suitable for command invocation
Lumiera GTK UI implementation root.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
generic data element node within a tree
Marker types to indicate a literal string and a Symbol.