62using lib::diff::collection;
63using LERR_(DIFF_STRUCTURE);
64using std::make_unique;
74 using ctrl::GlobalCtx;
76 using setting::AssetController;
77 using timeline::TimelineController;
93 : model::Controller(
session::Root::getID(), globals.uiBus_.getAccessPoint())
98 , navigator_{*spotLocator_, *viewLocator_}
100 , uiState_{new
UiState{globals.uiBus_.getStateManager(), *tracker_}}
104 Glib::signal_timeout()
107 ,Glib::PRIORITY_LOW);
122 WARN (
stage,
"%s is not yet implemented. So sorry.", todo);
134 .isApplicableIf ([&](
GenNode const& spec) ->
bool
142 .mutateAttrib(
ATTR_fork, [&](TreeMutator::Handle buff)
161 unimplemented (
"launch project setup UI");
194 unimplemented (
"launch project setup UI to create a fork of the project under new name");
213 unimplemented (
"edit global configuration");
227 unimplemented (
"open file");
245 unimplemented (
"start render");
319 and spec.
data.
get<Rec>().hasAttribute(
string{ATTR_fork})
320 and
TYPE_Fork == spec.
data.
get<Rec>().get(
string{ATTR_fork}).data.recordType()
322 throw error::State (
_Fmt{
"When populating a new Timeline, a root track must be given immediately"
323 "nested into INS message. We got the following initialisation payload: %s"}
325 ,
LERR_(DIFF_STRUCTURE));
341 ID rootTrack = verifyDiffStructure_and_extract_RootTrack (spec);
348 anchorProxy.buildTimelineWidget (this->uiBus_));
User interface for asset management.
Attachment point to the UI-Bus.
bool isNested() const
determine if payload constitutes a nested scope ("object")
object-like record of data.
Customisable intermediary to abstract mutating operations on arbitrary, hierarchical object-like data...
Hash implementation based on a lumiera unique object id (LUID) When invoking the default ctor,...
LuidH const & getHash() const
A global circle of top-level UI management facilities.
PAN & find_or_create()
lookup or allocate "the" instance of the indicated Panel(subtype).
void configureStyle(timeline::TimelineWidget const &)
Store and manage persistent interface state.
PanelLocator & locatePanel()
workspace::WorkspaceWindow & findActiveWindow()
find and retrieve a WorkspaceWindow (top-level window) marked as 'active' by GTK.
A dialog to choose render output format and name.
Helper to pick up typical focus/activity changes, for the purpose of keeping a coherent system of Wor...
void newSequence()
Establish a pristine new sequence within the session.
TimelineGui injectTimeline(GenNode const &)
static constexpr auto DELAY_AFTER_GUI_START_in_ms
void newTrack()
Establish a empty new track close to the current scope.
void render()
Start a render process.
ctrl::GlobalCtx & globalCtx_
void populateContent_afterStart()
ask Session to push up structures for presentation
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.
InteractionDirector(ctrl::GlobalCtx &)
Setup and initialise all representations of "global-ness".
void editSetup()
Edit global configuration and setup.
void openFile()
Select and open a file to perform a suitable operation.
void newProject()
setup a new editing project, possibly close the current one.
workspace::WorkspaceWindow & getWorkspaceWindow()
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
Control and navigate the global centre of activity.
Access or allocate a UI component view.
void invoke(Symbol cmdID, ARGS &&...)
Dockable panel to hold timeline widget(s).
Top level controller for the asset management section in the UI.
smart-Handle as anchor point for "the UI representation" of a timeline.
The main Lumiera workspace window.
A front-end for using printf-style formatting.
Common ID definitions for Steam-Layer commands.
Helper to track focus/activation changes to move the activity "Spot" automatically.
Organisational grouping device within the Session model ("Track" / "Media Bin").
Sub-Service of the InteractionDirector: Hold and maintain InteractionState.
Dependency context to hold all the global UI top-level entities.
A set of basic GTK includes for the UI.
The top-level controller to connect model and user interaction state.
LumieraError< LERR_(STATE)> State
ID verifyDiffStructure_and_extract_RootTrack(GenNode const &spec)
The timeline is actually a front-end for a binding to some root track.
void unimplemented(Literal todo)
Lumiera GTK UI implementation root.
lib::idi::BareEntryID const & ID
CommandSetup session_newSequence
CommandSetup sequence_newTrack
CommandSetup test_meta_activateContentDiff
CommandSetup session_saveSnapshot
Namespace of Session and user visible high-level objects.
std::string toString(TY const &val) noexcept
get some string representation of any object, reliably.
Global interface navigation control.
Dialog to manage application preferences.
Front-end for simplified access to the current wall clock time.
Dialog to set up a renter process and define output name and format.
MObject within the session to represent "the session itself".
Structural building block of the session: a sequence of clips.
Navigating a centre of user activity globally.
generic data element node within a tree
typed symbolic and hash ID for asset-like position accounting.
A dockable container to hold a notebook of timeline displays.
Customisable intermediary to abstract generic tree mutation operations.
Under construction: the top level UI controller.
Evaluation of UI coordinates against a concrete window topology.
Hard wired key constants and basic definitions for communication with the GUI.
Establish and handle persistent interface state.
Access and allocation of UI component views.
This file contains the definition of the main workspace window parent, which is the toplevel parent o...