Lumiera  0.pre.03
»edit your freedom«
state-manager.hpp File Reference

Go to the source code of this file.

Description

Interface: a component to maintain persistent interface state.

Here, "presentation state" is understood as state not rooted within the model and without effect on the final rendered result. Most of this state is transitory and arises from the normal working from the UI (and toolkit set). Yet part of this state is relevant to the way to work with the tooling, so we typically expect these choices and traces of usage to remain sticky, persistent across editing sessions.

Implementation technique

In Lumiera, handling of persistent presentation state relies on the UI backbone structure known as UI-Bus. Any element of more than local relevance, as attached to this backbone, will emit state mark notification messages, whenever some transition of presentation state is deemed relevant. The PresentationStateManager operates as one of the core services and receives, groups and remembers those messages, always retaining the latest state information observed for any property of any tangible interface element encountered thus far.

Todo:
as of 2/2016 this is still preliminary. In the end, we want to capture and restore presentation state in dependency to the current perspective and work site
See also
BusTerm_test::captureStateMark() usage example
BusTerm_test::replayStateMark() usage example

Definition in file state-manager.hpp.

#include "lib/idi/entry-id.hpp"
#include "lib/diff/gen-node.hpp"
#include "lib/nocopy.hpp"
#include <string>

Classes

class  StateManager
 Interface: handling of persistent interface state. More...
 

Namespaces

 stage
 Lumiera GTK UI implementation root.
 
 stage::ctrl
 Backbone of the Lumiera GTK UI.