Lumiera  0.pre.03
»edit your freedom«
element-access.hpp File Reference

Go to the source code of this file.

Description

Interface to discover and access raw UI elements in a cross cutting way.

We have several orthogonal identification and access schemes within the UI. A naively written UI application just attaches the core logic below some widgets and controllers – not only does this lead to a hard to maintain codebase, this approach is even outright impossible for Lumiera, since the core is able to run standalone and the UI is loaded as plug-in, which places us into the situation to connect a self contained core with a self contained UI. This is a binding, which, as a sideline, also generates a control structure of its own. And another kind of generic access happens when we navigate the topological UI structure for focus management.

This interface defines an abstract service to translate a generic element designation into a (C++ language level) access to internal structures of the UI toolkit (GTK in our case). This access to low-level structures proceeds in two stages:

  • navigate down the UI topology. Optionally, this may involve a mutation (create element)
  • evaluate the result (found, not found, element created) and access the target, possibly with conversion (which might fail)
Note
as of 4/2018 this is a first draft and WIP-WIP-WIP
Todo:
WIP ///////////////////////TICKET #1134
See also
ElementAccess_test
elem-access-dir.hpp implementation

Definition in file element-access.hpp.

#include "lib/error.hpp"
#include "lib/nocopy.hpp"
#include "lib/result.hpp"
#include "include/limits.hpp"
#include "lib/variant.hpp"
#include "lib/meta/typelist-manip.hpp"
#include "lib/access-casted.hpp"
#include "stage/interact/ui-coord.hpp"
#include <string>

Classes

class  ElementAccess
 Interface: access UI elements by navigating the UI topology. More...
 
struct  ElementAccess::TypeConverter< TAR >
 
struct  ElementAccess::TypeConverter< TAR >
 

Namespaces

 stage
 Lumiera GTK UI implementation root.
 
 stage::model
 The Lumiera GTK-GUI uses a thin proxy layer data model on top of the actual "high-level-model", which lives in the Steam-Layer below.