Lumiera  0.pre.03
»edit your freedom«
Session Class Referenceabstract

#include "steam/mobject/session.hpp"

Description

The (current) Session holds all the user visible content to be edited and manipulated within the Lumiera Application.

From a users perspective, it is a collection of Media Objects (–> MObject) placed (–> Placement) onto virtual Tracks.

Opening a Session has effectively global consequences, because the Session defines the available Assets, and some kinds of Assets define default behaviour. Thus, access to the Session is similar to a Singleton, through Session::current Besides the SessionManager, several sub-interfaces are exposed as embedded components: DefaultsManger, timelines and sequences.

Note
Any client should be aware that the Session can be closed, replaced and loaded. The only way to access the Session is via a "PImpl" smart pointer session::PSess (which indeed is a reference to the SessManager and is accessible as the static field Session::current). Clients shouldn't try to get a direct pointer or reference to the Session object.

Definition at line 109 of file session.hpp.

Public Member Functions

virtual MObjectRef attach (PMO const &placement)=0
 
virtual bool detach (PMO const &placement)=0
 
virtual fixture::PFixturegetFixture ()=0
 
virtual MObjectRef getRoot ()=0
 
virtual bool isValid ()=0
 
virtual void rebuildFixture ()=0
 

Static Public Attributes

static session::SessManagercurrent = theSessionManager()
 access point to the current Session More...
 
static bool initFlag = false
 temporary fix for init problems More...
 

Public Attributes

DefaultsAccess defaults
 manages default configured objects
 
ElementsAccess elements
 
SequenceAccess sequences
 collection of sequences
 
TimelineAccess timelines
 collection of timelines (top level)
 

Protected Types

typedef lumiera::query::DefsManagerDefaultsAccess
 
typedef session::ElementQueryElementsAccess
 
typedef lib::RefArray< asset::PSequence > & SequenceAccess
 
typedef lib::RefArray< asset::PTimeline > & TimelineAccess
 

Protected Member Functions

 Session (DefaultsAccess, ElementsAccess, TimelineAccess, SequenceAccess) noexcept
 

Additional Inherited Members

- Private Member Functions inherited from NonCopyable
 NonCopyable (NonCopyable const &)=delete
 
NonCopyableoperator= (NonCopyable const &)=delete
 

Member Data Documentation

◆ initFlag

bool initFlag = false
static

temporary fix for init problems

Todo:
really solve the basic init of session manager TICKET #518

Definition at line 127 of file session.hpp.

Referenced by SessionServiceFetch::isAccessible(), and SessManagerImpl::SessManagerImpl().

◆ current

SessManager & current = theSessionManager()
static

access point to the current Session

the sole access point for all client code to the system-wide "current session".

Implemented as smart pointer to singleton implementation object, where the smart pointer is actually the SessionManager (which is singleton as well...).

Consequently, if you want to talk to the session manager, you use dot-notation, while you access the session object via arrow notation (e.g. Session::current->getFixture() )

Definition at line 129 of file session.hpp.

Referenced by StreamTypeLifecycle_test::check_pristineState(), SessionManager_test::clearSession(), steam::mobject::session::test::find(), steam::mobject::session::test::anonymous_namespace{defs-manager-impl-test.cpp}::find(), SessionManager_test::getCurrentSession(), SessionServiceFetch::isAccessible(), and SessionManager_test::resetSession().

+ Inheritance diagram for Session:
+ Collaboration diagram for Session:

The documentation for this class was generated from the following files: