72 using LERR_(DIFF_STRUCTURE);
73 using std::make_unique;
83 using ctrl::GlobalCtx;
85 using setting::AssetController;
86 using timeline::TimelineController;
90 InteractionDirector::~InteractionDirector()
102 : model::Controller(
session::Root::getID(), globals.uiBus_.getAccessPoint())
103 , globalCtx_(globals)
107 , navigator_{*spotLocator_, *viewLocator_}
109 , uiState_{
new UiState{globals.uiBus_.getStateManager(), *tracker_}}
110 , assets_{
new AssetController{session::Root::getAssetID(), this->uiBus_}}
113 Glib::signal_timeout()
115 ,DELAY_AFTER_GUI_START_in_ms
116 ,Glib::PRIORITY_LOW);
123 invoke (cmd::test_meta_activateContentDiff);
129 unimplemented (
const char* todo)
131 WARN (
stage,
"%s is not yet implemented. So sorry.", todo);
143 .isApplicableIf ([&](
GenNode const& spec) ->
bool 151 .mutateAttrib(ATTR_fork, [&](TreeMutator::Handle buff)
154 assets_->buildMutator(buff);
170 unimplemented (
"launch project setup UI");
183 string snapshotID{
"snap-" + toString(vault::RealClock::now())};
184 invoke (cmd::session_saveSnapshot, snapshotID);
203 unimplemented (
"launch project setup UI to create a fork of the project under new name");
222 unimplemented (
"edit global configuration");
236 unimplemented (
"open file");
254 unimplemented (
"start render");
273 invoke (cmd::session_newSequence, anchor, newSeqID);
297 invoke (cmd::sequence_newTrack, anchor, newTrackID);
302 InteractionDirector::getWorkspaceWindow()
304 return globalCtx_.windowLoc_.findActiveWindow();
328 and spec.data.get<Rec>().hasAttribute(
string{ATTR_fork})
329 and TYPE_Fork == spec.data.get<Rec>().get(
string{ATTR_fork}).data.recordType()
331 throw error::State (
_Fmt{
"When populating a new Timeline, a root track must be given immediately" 332 "nested into INS message. We got the following initialisation payload: %s"}
334 , LERR_(DIFF_STRUCTURE));
336 return spec.data.get<Rec>().
get(
string{ATTR_fork}).idi;
353 globalCtx_.windowLoc_
357 anchorProxy.buildTimelineWidget (this->uiBus_));
359 globalCtx_.uiManager_.configureStyle (*anchorProxy);
void saveSnapshot()
Save a snapshot of the current project's contents and the UI state.
Access or allocate a UI component view.
smart-Handle as anchor point for "the UI representation" of a timeline.
ID verifyDiffStructure_and_extract_RootTrack(GenNode const &spec)
The timeline is actually a front-end for a binding to some root track.
Helper to pick up typical focus/activity changes, for the purpose of keeping a coherent system of Wor...
TimelineGui injectTimeline(GenNode const &)
Hard wired key constants and basic definitions for communication with the GUI.
void newSequence()
Establish a pristine new sequence within the session.
Access and allocation of UI component views.
bool isNested() const
determine if payload constitutes a nested scope ("object")
Navigating a centre of user activity globally.
Dockable panel to hold timeline widget(s).
Dependency context to hold all the global UI top-level entities.
Under construction: the top level UI controller.
void newTrack()
Establish a empty new track close to the current scope.
void newProject()
setup a new editing project, possibly close the current one.
Sub-Service of the InteractionDirector: Hold and maintain InteractionState.
Top level controller for the asset management section in the UI.
typed symbolic and hash ID for asset-like position accounting.
Store and manage persistent interface state.
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 ...
Common ID definitions for Steam-Layer commands.
Dialog to manage application preferences.
Organisational grouping device within the Session model ("Track" / "Media Bin").
A front-end for using printf-style formatting.
void forkProject()
Continue evolution of the currently active project under a new identity.
MObject within the session to represent "the session itself".
Namespace of Session and user visible high-level objects.
void populateContent_afterStart()
ask Session to push up structures for presentation
Attachment point to the UI-Bus.
Derived specific exceptions within Lumiera's exception hierarchy.
Structural building block of the session: a sequence of clips.
Dialog to set up a renter process and define output name and format.
The top-level controller to connect model and user interaction state.
Establish and handle persistent interface state.
void editSetup()
Edit global configuration and setup.
Helper to track focus/activation changes to move the activity "Spot" automatically.
Lumiera GTK UI implementation root.
Control and navigate the global centre of activity.
void render()
Start a render process.
The main Lumiera workspace window.
Hash implementation based on a lumiera unique object id (LUID) When invoking the default ctor...
InteractionDirector(ctrl::GlobalCtx &)
Setup and initialise all representations of "global-ness".
Customisable intermediary to abstract generic tree mutation operations.
Evaluation of UI coordinates against a concrete window topology.
A dialog to choose render output format and name.
A global circle of top-level UI management facilities.
Global interface navigation control.
This file contains the definition of the main workspace window parent, which is the toplevel parent o...
auto collection(COLL &coll)
Entry point to a nested DSL for setup and configuration of a collection binding.
Front-end for simplified access to the current wall clock time.
object-like record of data.
User interface for asset management.
A set of basic GTK includes for the UI.
generic data element node within a tree
void openFile()
Select and open a file to perform a suitable operation.
A dockable container to hold a notebook of timeline displays.
Customisable intermediary to abstract mutating operations on arbitrary, hierarchical object-like data...