Lumiera
0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
core-service.hpp
Go to the documentation of this file.
1
/*
2
CORE-SERVICE.hpp - service to address the application core from the UI
3
4
Copyright (C)
5
2015, Hermann Vosseler <Ichthyostega@web.de>
6
7
**Lumiera** is free software; you can redistribute it and/or modify it
8
under the terms of the GNU General Public License as published by the
9
Free Software Foundation; either version 2 of the License, or (at your
10
option) any later version. See the file COPYING for further details.
11
12
*/
13
14
75
#ifndef STAGE_CTRL_CORE_SERVICE_H
76
#define STAGE_CTRL_CORE_SERVICE_H
77
78
79
#include "
lib/error.hpp
"
80
#include "
lib/nocopy.hpp
"
81
#include "
lib/idi/entry-id.hpp
"
82
#include "
lib/diff/gen-node.hpp
"
83
#include "
include/session-command-facade.h
"
84
#include "
stage/ctrl/state-recorder.hpp
"
85
#include "
stage/ctrl/bus-term.hpp
"
86
#include "
stage/ctrl/nexus.hpp
"
87
88
89
namespace
stage
{
90
namespace
ctrl{
91
92
using
steam::control::SessionCommand
;
93
using
lib::diff::Rec
;
94
95
105
class
CoreService
106
:
public
BusTerm
107
,
util::NonCopyable
108
{
109
110
Nexus
uiBusBackbone_
;
111
StateRecorder
stateRecorder_
;
112
113
114
virtual
void
115
act
(
GenNode
const
& command)
override
116
{
117
SessionCommand::facade
().trigger (command.
idi
.
getSym
(), command.
data
.
get
<Rec>());
118
}
119
120
121
virtual
void
122
note
(
ID
subject,
GenNode
const
& stateMark)
override
123
{
124
stateRecorder_
.
recordState
(subject, stateMark);
125
}
126
127
128
public
:
129
explicit
130
CoreService
(
ID
identity =
lib::idi::EntryID<CoreService>
())
131
:
BusTerm
(identity,
uiBusBackbone_
)
132
,
uiBusBackbone_
{*this}
133
,
stateRecorder_
{*this}
134
{
135
INFO (
stage
,
"UI-Backbone operative."
);
136
}
137
138
~CoreService
();
139
140
141
StateManager
&
142
getStateManager
()
143
{
144
return
stateRecorder_
;
145
}
146
};
147
148
149
150
}}
// namespace stage::ctrl
151
#endif
/*STAGE_CTRL_CORE_SERVICE_H*/
bus-term.hpp
Attachment point to the UI-Bus.
lib::diff::DataCap::get
X & get()
Definition
gen-node.hpp:694
lib::diff::Record
object-like record of data.
Definition
record.hpp:142
lib::idi::BareEntryID::getSym
string const & getSym() const
Definition
entry-id.hpp:169
stage::ctrl::BusTerm
connection point at the UI-Bus.
Definition
bus-term.hpp:98
stage::ctrl::BusTerm::ID
EntryID const & ID
Definition
bus-term.hpp:107
stage::ctrl::CoreService
Attachment point to »central services« within the UI-Bus.
Definition
core-service.hpp:108
stage::ctrl::CoreService::CoreService
CoreService(ID identity=lib::idi::EntryID< CoreService >())
Definition
core-service.hpp:130
stage::ctrl::CoreService::~CoreService
~CoreService()
Definition
ui-bus.cpp:62
stage::ctrl::CoreService::act
virtual void act(GenNode const &command) override
prepare or trigger invocation of a command.
Definition
core-service.hpp:115
stage::ctrl::CoreService::note
virtual void note(ID subject, GenNode const &stateMark) override
capture and record a "state mark" for later replay for restoring UI state.
Definition
core-service.hpp:122
stage::ctrl::CoreService::stateRecorder_
StateRecorder stateRecorder_
Definition
core-service.hpp:111
stage::ctrl::CoreService::uiBusBackbone_
Nexus uiBusBackbone_
Definition
core-service.hpp:110
stage::ctrl::CoreService::getStateManager
StateManager & getStateManager()
Definition
core-service.hpp:142
stage::ctrl::Nexus
Central hub of the UI-Bus.
Definition
nexus.hpp:70
stage::ctrl::StateManager
Interface: handling of persistent interface state.
Definition
state-manager.hpp:72
stage::ctrl::StateRecorder
Simple map based implementation of the PresentationStateManager interface.
Definition
state-recorder.hpp:85
stage::ctrl::StateRecorder::recordState
void recordState(ID uiElm, StateMark stateMark)
Interface for the operating facility (CoreService) to feed state mark messages to be remembered.
Definition
state-recorder.hpp:167
steam::control::SessionCommand
Global access point to invoke commands and cause edit operations within the Session.
Definition
session-command-facade.h:88
steam::control::SessionCommand::facade
static lib::Depend< SessionCommand > facade
static storage for the facade access front-end
Definition
session-command-facade.h:90
util::NonCopyable
Any copy and copy construction prohibited.
Definition
nocopy.hpp:38
entry-id.hpp
Bare symbolic and hash ID used for accounting of asset like entries.
error.hpp
Lumiera error handling (C++ interface).
gen-node.hpp
Generic building block for tree shaped (meta)data structures.
stage
Lumiera GTK UI implementation root.
Definition
guifacade.cpp:37
nexus.hpp
Core hub and routing table of the UI-Bus.
nocopy.hpp
Mix-Ins to allow or prohibit various degrees of copying and cloning.
session-command-facade.h
Major public Interface to the Session subsystem of Lumiera GUI.
state-recorder.hpp
Implementation of the PresentationStateManager interface through associative (key-value) store.
lib::diff::GenNode
generic data element node within a tree
Definition
gen-node.hpp:224
lib::diff::GenNode::idi
ID idi
Definition
gen-node.hpp:257
lib::diff::GenNode::data
DataCap data
Definition
gen-node.hpp:258
lib::idi::EntryID
typed symbolic and hash ID for asset-like position accounting.
Definition
entry-id.hpp:219
stage
ctrl
core-service.hpp
Generated on Fri Nov 7 2025 for Lumiera by
1.9.8