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

Go to the source code of this file.

Description

Establish and handle persistent interface state.

For an elaborate interface to support work like editing film, it is crucial that the user can leave a part of the application for some time, only to find it in precisely the way as it was beforehand. And, most importantly, this property needs to hold beyond the bounds of a single editing session. This requirement covers various aspects of the interface, like what elements where expanded and collapsed, what detail- or zoom level was set, how the view window was positioned, but also some more specific details regarding configuration of individual widgets, like e.g. what time code format was used on some input. All these tiny details together allow the user to return to a familiar location; they encourage to put effort into arrange matters in a way well suited to the specific working style and requirements at hand.

State persistence protocol

For the Lumiera UI, the foundation to deliver such an experience are rooted right in the backbone of the UI, which is the UI-Bus. The protocol complementing that structure defines a set of operations to emit State Mark messages, and later to play back rsp. receive such captured State Marks. The expectation regarding that operation protocol is for any UI-Element to emit such messages, whenever some change happened, which this element deemed relevant to be conserved as part of its global persistent state. Obviously, each element is likewise expected to implement a handling function to receive those State Marks later and to re-establish its presentation state to the shape as previously captured.

See also
interaction-director.hpp
ui-bus.hpp

Definition in file ui-state.hpp.

#include "stage/gtk-base.hpp"
#include "lib/nocopy.hpp"

Classes

class  UiState
 Store and manage persistent interface state. More...
 

Namespaces

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