![]() |
Lumiera 0.pre.04
»edit your freedom«
|
#include "stage/interact/interaction-director.hpp"
Top-level controller to establish a link between the model and transient user interaction state (focus, current window)
Definition at line 97 of file interaction-director.hpp.
Public Member Functions | |
| InteractionDirector (ctrl::GlobalCtx &) | |
| Setup and initialise all representations of "global-ness". | |
| ~InteractionDirector () | |
| void | newProject () |
| setup a new editing project, possibly close the current one. | |
| void | saveSnapshot () |
| Save a snapshot of the current project's contents and the UI state. | |
| void | forkProject () |
| Continue evolution of the currently active project under a new identity. | |
| void | editSetup () |
| Edit global configuration and setup. | |
| void | openFile () |
| Select and open a file to perform a suitable operation. | |
| void | render () |
| Start a render process. | |
| void | newSequence () |
| Establish a pristine new sequence within the session. | |
| void | newTrack () |
| Establish a empty new track close to the current scope. | |
Public Member Functions inherited from Controller | |
| Tangible (ID identity, ctrl::BusTerm &nexus) | |
Public Member Functions inherited from Tangible | |
| virtual | ~Tangible () |
| this is an interface | |
| operator string () const | |
| diagnostic representation. | |
| operator LuidH () const | |
| ID | getID () const |
| void | reset () |
| invoke the generic reset hook | |
| void | clearMsg () |
| invoke the hook to clear notification messages | |
| void | clearErr () |
| invoke the hook to clear error markers | |
| template<typename... ARGS> | |
| void | invoke (Symbol cmdID, ARGS &&...) |
| void | invoke (Symbol cmdID, Rec &&arguments) |
| Perform a command or action, once the execution context has been established. | |
| void | slotExpand () |
| Expand this element and remember the expanded state. | |
| void | slotCollapse () |
| Collapse or minimise this element and remember the collapsed state. | |
| void | slotReveal () |
| Cause the element to be brought into sight. | |
| void | markFlash () |
| highlight the element visually to catch the user's attention | |
| void | markMsg (string message) |
| push a notification (or warning) message to the element. | |
| void | markErr (string error) |
| push an error state tag to the element | |
| void | mark (GenNode const &) |
| generic handler for all incoming "state mark" messages | |
| void | installExpander (Expander::ProbeFun, Expander::ChangeFun) |
| Configure the (optional) functionality to expand or collapse the UI-Element. | |
| void | installRevealer (Revealer::RevealeItFun) |
| Configure the (optional) functionality to bring the UI-Element into sight. | |
| template<typename... ARGS> | |
| void | invoke (Symbol cmdID, ARGS &&... args) |
| convenience shortcut to issue a command with several arguments | |
Public Member Functions inherited from DiffMutable | |
| virtual | ~DiffMutable () |
| this is an interface | |
Private Types | |
| using | Service_LocationQuery = lib::DependInject< LocationQuery >::ServiceInstance< Navigator > |
| using | Service_GestureState = lib::DependInject< GestureState >::ServiceInstance<> |
| using | Timelines = std::vector< TimelineGui > |
| using | Assets = unique_ptr< setting::AssetController > |
| using | State = unique_ptr< ctrl::UiState > |
Private Member Functions | |
| void | buildMutator (lib::diff::TreeMutator::Handle) override |
| set up a binding to allow some top-level UI state to be treated as part of the session model | |
| void | populateContent_afterStart () |
| ask Session to push up structures for presentation | |
| workspace::WorkspaceWindow & | getWorkspaceWindow () |
| TimelineGui | injectTimeline (GenNode const &) |
Private Attributes | |
| ctrl::GlobalCtx & | globalCtx_ |
| Service_GestureState | gestureState_ |
| unique_ptr< ViewLocator > | viewLocator_ |
| unique_ptr< SpotLocator > | spotLocator_ |
| Service_LocationQuery | navigator_ |
| unique_ptr< FocusTracker > | tracker_ |
| State | uiState_ |
| Assets | assets_ |
| Timelines | timelines_ |
Static Private Attributes | |
| static constexpr auto | DELAY_AFTER_GUI_START_in_ms = 100 |
Additional Inherited Members | |
Public Types inherited from Tangible | |
| using | ID = ctrl::BusTerm::ID |
| using | LuidH = lib::hash::LuidH |
Protected Types inherited from Tangible | |
| using | Rec = lib::diff::Rec |
| using | GenNode = lib::diff::GenNode |
Protected Member Functions inherited from Controller | |
| virtual void | doMark (GenNode const &mark) override |
| default handler for all generic mark messages. | |
Protected Member Functions inherited from Tangible | |
| Tangible (ID identity, ctrl::BusTerm &nexus) | |
| virtual bool | doExpand (bool yes) |
| generic default implementation of the expand/collapse functionality. | |
| virtual void | doReveal () |
| generic default implementation of the "reveal" functionality. | |
Protected Attributes inherited from Tangible | |
| ctrl::BusTerm | uiBus_ |
| Expander | expand_ |
| Revealer | reveal_ |
| InteractionDirector | ( | ctrl::GlobalCtx & | globals | ) |
Setup and initialise all representations of "global-ness".
| globals | wiring to the circle of top-level UI managers (including ourselves) |
Definition at line 92 of file interaction-director.cpp.
References InteractionDirector::DELAY_AFTER_GUI_START_in_ms, and InteractionDirector::populateContent_afterStart().
Here is the call graph for this function:| ~InteractionDirector | ( | ) |
Definition at line 81 of file interaction-director.cpp.
|
private |
Definition at line 103 of file interaction-director.hpp.
|
private |
Definition at line 104 of file interaction-director.hpp.
|
private |
Definition at line 115 of file interaction-director.hpp.
|
private |
Definition at line 116 of file interaction-director.hpp.
|
private |
Definition at line 117 of file interaction-director.hpp.
|
overrideprivatevirtual |
set up a binding to allow some top-level UI state to be treated as part of the session model
Implements Tangible.
Definition at line 129 of file interaction-director.cpp.
References InteractionDirector::assets_, stage::ATTR_fork, GenNode::data, InteractionDirector::injectTimeline(), DataCap::isNested(), and InteractionDirector::timelines_.
Here is the call graph for this function:
|
private |
ask Session to push up structures for presentation
Definition at line 112 of file interaction-director.cpp.
References Tangible::invoke(), and steam::cmd::test_meta_activateContentDiff.
Referenced by InteractionDirector::InteractionDirector().
Here is the call graph for this function:
Here is the caller graph for this function:| void newProject | ( | ) |
setup a new editing project, possibly close the current one.
This action launches the project setup UI, for the user to define the storage location and further parameters of the new project. A currently opened project will be deactivated asynchronously, without saving a snapshot, while retaining the last actions in the project's command log.
Definition at line 159 of file interaction-director.cpp.
Referenced by Actions::populateMainActions().
Here is the caller graph for this function:| void saveSnapshot | ( | ) |
Save a snapshot of the current project's contents and the UI state.
Definition at line 172 of file interaction-director.cpp.
References Tangible::invoke(), RealClock::now(), and steam::cmd::session_saveSnapshot.
Referenced by Actions::populateMainActions().
Here is the call graph for this function:
Here is the caller graph for this function:| void forkProject | ( | ) |
Continue evolution of the currently active project under a new identity.
From a user's point of view, this is the "save as..." action, but due to the nature of Lumiera's projects, it is in fact more complicated. Thus this action launches the project setup UI and preselects the "fork" option there. Optionally this allows to copy the project's history into the forked new project, or alternatively just to start with a snapshot. Another option there is to set up a new storage location, or to replace the existing project under a new name.
Definition at line 192 of file interaction-director.cpp.
Referenced by Actions::populateMainActions().
Here is the caller graph for this function:| void editSetup | ( | ) |
Edit global configuration and setup.
This action will launch the project setup UI, which allows to adjust configuration
Definition at line 208 of file interaction-director.cpp.
References InteractionDirector::getWorkspaceWindow().
Referenced by Actions::populateMainActions().
Here is the call graph for this function:
Here is the caller graph for this function:| void openFile | ( | ) |
Select and open a file to perform a suitable operation.
This action will launch the fileOpen UI. Depending on the selected file's meaning, the actual operation will be either to integrate the data somehow into the current session, or to deactivate the current session and replace it with an other session persisted on storage.
Definition at line 225 of file interaction-director.cpp.
Referenced by Actions::populateMainActions().
Here is the caller graph for this function:| void render | ( | ) |
Start a render process.
This action will launch the render setup UI. Depending on the current Spot, a suitable object to render will be preselected, typically the current timeline.
Definition at line 240 of file interaction-director.cpp.
References InteractionDirector::getWorkspaceWindow().
Referenced by Actions::populateMainActions().
Here is the call graph for this function:
Here is the caller graph for this function:| void newSequence | ( | ) |
Establish a pristine new sequence within the session.
The goal is to create a new playground for the user to add content. Actually, not only a new sequence is created, but also a new fork (track tree) and a new timeline to hold that sequence. And finally, this new timeline is opened for editing. This action invokes a command into the session, which in turn is responsible for figuring out all the contextual details sensibly.
Definition at line 260 of file interaction-director.cpp.
References BareEntryID::getHash(), Tangible::invoke(), and steam::cmd::session_newSequence.
Referenced by Actions::populateMainActions().
Here is the call graph for this function:
Here is the caller graph for this function:| void newTrack | ( | ) |
Establish a empty new track close to the current scope.
Like for newSequence, the goal is to create a new empty workspace. But since a track can be attached anywhere within the fork (track tree), the currently active element is used to establish a current scope, which in turn is used as anchor to attach the new track in a sensible way, with a preference to add the new track as a sibling to the current scope. The actual details of this decision are delegated to the session, but the command invoked by this action does need a current element as argument, and this current element thus needs to be figured out from the context of invocation (current focus and possibly selection)
as of 3/2017 this is an initial draft: It is not clear yet, if this lookup of context will always be treated implicitly, or if it is better to have a public content discovery operation on InteractionDirector and pass the current element explicitly as argument
4/2017 using the session-root (=this) as anchor for the moment, but should actually figure out the current context dynamically... //////////////////////////////TICKET #1082 : actually access the interaction state to get "current scope"
Definition at line 284 of file interaction-director.cpp.
References BareEntryID::getHash(), Tangible::invoke(), and steam::cmd::sequence_newTrack.
Referenced by Actions::populateMainActions().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Definition at line 293 of file interaction-director.cpp.
References WindowLocator::findActiveWindow(), InteractionDirector::globalCtx_, and GlobalCtx::windowLoc_.
Referenced by InteractionDirector::editSetup(), and InteractionDirector::render().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
allocate a new TimelineWidget and attach it as child.
Definition at line 339 of file interaction-director.cpp.
References UiManager::configureStyle(), PanelLocator::find_or_create(), InteractionDirector::globalCtx_, GenNode::idi, WindowLocator::locatePanel(), GlobalCtx::uiManager_, and GlobalCtx::windowLoc_.
Referenced by InteractionDirector::buildMutator().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Definition at line 100 of file interaction-director.hpp.
Referenced by InteractionDirector::getWorkspaceWindow(), and InteractionDirector::injectTimeline().
|
private |
Definition at line 108 of file interaction-director.hpp.
|
private |
Definition at line 109 of file interaction-director.hpp.
|
private |
Definition at line 110 of file interaction-director.hpp.
|
private |
Definition at line 111 of file interaction-director.hpp.
|
private |
Definition at line 112 of file interaction-director.hpp.
|
private |
Definition at line 119 of file interaction-director.hpp.
|
private |
Definition at line 120 of file interaction-director.hpp.
Referenced by InteractionDirector::buildMutator().
|
private |
Definition at line 121 of file interaction-director.hpp.
Referenced by InteractionDirector::buildMutator().
|
staticconstexprprivate |
Definition at line 133 of file interaction-director.hpp.
Referenced by InteractionDirector::InteractionDirector().
Inheritance diagram for InteractionDirector:
Collaboration diagram for InteractionDirector: