Lumiera  0.pre.03
»edit your freedom«
id-scheme.hpp File Reference

Go to the source code of this file.

Description

Hard wired definitions for the object identification system used within the UI.

Identities and element addressing

Within the UI-Layer, all components of global relevance are connected to the UI-Bus and can thus be reached just by knowing their ID. This allows to address such UI components as generic UI-Element, relying on a generic element manipulation protocol. Beyond this rather unspecific manipulation scheme, the UI relies on direct ownership relations. Typically, some element is created as result of another action and managed as child of some maintaining entity; generally speaking, UI elements live free floating and are mostly interconnected by signals to react on user interaction. There is a rather limited global UI-Context of directly interconnected backbone services, which allow to achieve activities cross-cutting the ownership relationship.

Element IDs are always formed as EntryID, typed to the corresponding type in the Session model. Thus, starting from a given model element, it is always possible to "cast" some message towards the corresponding UI view element, without actually knowing much about that element's implementation.

Note
This header provides the basic definitions for easily accessing relevant UI elements.

The View-Spec DSL

The goal for the Lumiera UI is not to totally hard-wire the overall structure. Rather, it shall be possible to "allocate" a view based of rules where to place it within the existing UI structure. This is especially important, since we expect much editing work to be done in a multi-monitor setup, where the UI has to span several top-level windows, and allow for location of views in accordance to the individual editor's habits.

In the current state (2017/2021) the foundation for such a rule based view allocation was worked out, but all the possibly quite elaborated details of hooking into the actual widget tree was postponed, until we have a more mature implementation of actual presentation widgets in place.

Todo:
as of 2017 .. 2021, this is a half-finished draft and postponed in favour of building the actually visible timeline display first
See also
interaction-director.hpp
ui-bus.hpp
tangible.hpp
bus-term.hpp
entry-id.hpp

Definition in file id-scheme.hpp.

Classes

struct  Descriptor< ErrorLogView >
 Descriptor for error log display within the UI. More...
 
struct  Descriptor< TimelineView >
 Descriptor for the Timeline UI. More...
 

Typedefs

using ErrorLogView = widget::ErrorLogDisplay
 
using ID = lib::idi::BareEntryID const &
 
using TimelineView = timeline::TimelineController
 

Namespaces

 stage
 Lumiera GTK UI implementation root.
 
 stage::idi
 generic definitions for element ID and access.
 
 stage::timeline
 The timeline display and editing operations.
 
 stage::widget
 Lumiera custom widgets.
 
 steam
 Steam-Layer implementation namespace root.
 
 steam::asset
 The asset subsystem of the Steam-Layer.
 

Class Documentation

◆ stage::idi::Descriptor< ErrorLogView >

struct stage::idi::Descriptor< ErrorLogView >
Class Members
typedef ErrorLog Model
+ Collaboration diagram for Descriptor< ErrorLogView >:

◆ stage::idi::Descriptor< TimelineView >

struct stage::idi::Descriptor< TimelineView >
Class Members
typedef Timeline Model
+ Collaboration diagram for Descriptor< TimelineView >: