UI-top-level: install presentation state recording service (#1081)
This commit is contained in:
parent
60adaa5639
commit
198ccff396
8 changed files with 102 additions and 15 deletions
|
|
@ -85,6 +85,7 @@
|
|||
#include "lib/idi/entry-id.hpp"
|
||||
#include "include/session-command-facade.h"
|
||||
#include "gui/notification-service.hpp"
|
||||
#include "gui/ctrl/state-recorder.hpp"
|
||||
#include "gui/ctrl/command-handler.hpp"
|
||||
#include "gui/ctrl/bus-term.hpp"
|
||||
#include "gui/ctrl/nexus.hpp"
|
||||
|
|
@ -109,6 +110,7 @@ namespace ctrl{
|
|||
{
|
||||
|
||||
Nexus uiBusBackbone_;
|
||||
StateRecorder stateRecorder_;
|
||||
NotificationService activateNotificationService_;
|
||||
|
||||
|
||||
|
|
@ -121,9 +123,9 @@ namespace ctrl{
|
|||
|
||||
|
||||
virtual void
|
||||
note (ID subject, GenNode const& mark) override
|
||||
note (ID subject, GenNode const& stateMark) override
|
||||
{
|
||||
UNIMPLEMENTED ("receive and handle presentation state note messages.");
|
||||
stateRecorder_.recordState (subject, stateMark);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -132,12 +134,20 @@ namespace ctrl{
|
|||
CoreService (ID identity =lib::idi::EntryID<CoreService>())
|
||||
: BusTerm(identity, uiBusBackbone_)
|
||||
, uiBusBackbone_{*this}
|
||||
, stateRecorder_{*this}
|
||||
, activateNotificationService_(uiBusBackbone_) // opens the GuiNotificationService instance
|
||||
{
|
||||
INFO (gui, "UI-Backbone operative.");
|
||||
}
|
||||
|
||||
~CoreService();
|
||||
|
||||
|
||||
StateManager&
|
||||
getStateManager()
|
||||
{
|
||||
return stateRecorder_;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@
|
|||
*/
|
||||
|
||||
|
||||
#ifndef GUI_INTERACT_STATE_MAP_GROUPING_STORAGE_H
|
||||
#define GUI_INTERACT_STATE_MAP_GROUPING_STORAGE_H
|
||||
#ifndef GUI_CTRL_STATE_MAP_GROUPING_STORAGE_H
|
||||
#define GUI_CTRL_STATE_MAP_GROUPING_STORAGE_H
|
||||
|
||||
|
||||
#include "lib/error.hpp"
|
||||
|
|
@ -54,7 +54,7 @@ namespace ctrl {
|
|||
using lib::idi::BareEntryID;
|
||||
using lib::diff::GenNode;
|
||||
using lib::diff::Ref;
|
||||
using util::unConst;
|
||||
using ::util::unConst;
|
||||
using std::string;
|
||||
|
||||
|
||||
|
|
@ -223,4 +223,4 @@ namespace ctrl {
|
|||
|
||||
|
||||
}} // namespace gui::ctrl
|
||||
#endif /*GUI_INTERACT_STATE_MAP_GROUPING_STORAGE_H*/
|
||||
#endif /*GUI_CTRL_STATE_MAP_GROUPING_STORAGE_H*/
|
||||
|
|
|
|||
|
|
@ -57,8 +57,9 @@ namespace ctrl {
|
|||
* Initialise storage for global interface state
|
||||
* @see ctrl::CoreService
|
||||
*/
|
||||
UiState::UiState (FocusTracker& focusTracker)
|
||||
: tracker_{focusTracker}
|
||||
UiState::UiState (StateManager& stateManager, FocusTracker& focusTracker)
|
||||
: stateManager_{stateManager}
|
||||
, tracker_{focusTracker}
|
||||
{ }
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ namespace ctrl {
|
|||
// using std::string;
|
||||
|
||||
// class GlobalCtx;
|
||||
class StateManager;
|
||||
|
||||
|
||||
|
||||
|
|
@ -83,10 +84,11 @@ namespace ctrl {
|
|||
class UiState
|
||||
: boost::noncopyable
|
||||
{
|
||||
StateManager& stateManager_;
|
||||
interact::FocusTracker& tracker_;
|
||||
|
||||
public:
|
||||
UiState (interact::FocusTracker&);
|
||||
UiState (StateManager&, interact::FocusTracker&);
|
||||
~UiState();
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ namespace interact {
|
|||
, spotLocator_{new SpotLocator}
|
||||
, navigator_{new Navigator{*spotLocator_}}
|
||||
, tracker_{new FocusTracker{*navigator_}}
|
||||
, uiState_{new UiState{*tracker_}}
|
||||
, uiState_{new UiState{globals.uiBus_.getStateManager(), *tracker_}}
|
||||
, assets_{new AssetController{session::Root::getAssetID(), this->uiBus_}}
|
||||
, timelines_{}
|
||||
{
|
||||
|
|
|
|||
|
|
@ -74,7 +74,14 @@ namespace controller {
|
|||
{
|
||||
return *coreService_;
|
||||
}
|
||||
|
||||
|
||||
ctrl::StateManager&
|
||||
UiBus::getStateManager()
|
||||
{
|
||||
return coreService_->getStateManager();
|
||||
}
|
||||
|
||||
|
||||
|
||||
namespace ctrl {
|
||||
|
||||
|
|
|
|||
|
|
@ -163,7 +163,8 @@ namespace gui {
|
|||
UiBus();
|
||||
~UiBus();
|
||||
|
||||
ctrl::BusTerm& getAccessPoint();
|
||||
ctrl::BusTerm& getAccessPoint();
|
||||
ctrl::StateManager& getStateManager();
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2178,9 +2178,75 @@
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1487313454220" ID="ID_640048374" MODIFIED="1487313460055" TEXT="Abgriff in CoreServices">
|
||||
<node CREATED="1487313462963" ID="ID_342355040" MODIFIED="1487313471974" TEXT="injizieren"/>
|
||||
<node CREATED="1487313475593" ID="ID_951423078" MODIFIED="1487313479932" TEXT="über Lifecycle nachdenken"/>
|
||||
<node CREATED="1487313454220" ID="ID_640048374" MODIFIED="1487475809793" TEXT="Abgriff in CoreServices">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1487313462963" ID="ID_342355040" MODIFIED="1487475672626" TEXT="injizieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1487313475593" ID="ID_951423078" MODIFIED="1487475676372" TEXT="über Lifecycle nachdenken">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1487472682881" ID="ID_1575753680" MODIFIED="1487472687124" TEXT="UI-Bus zuerst"/>
|
||||
<node CREATED="1487472687641" ID="ID_731426548" MODIFIED="1487472699179" TEXT="dann Ui-Manager -> InteractionDirector -> Ui-State"/>
|
||||
<node CREATED="1487472711453" ID="ID_759583421" MODIFIED="1487472719128" TEXT="beim Zerstören von GtkLumiera">
|
||||
<node CREATED="1487472720476" ID="ID_1676214656" MODIFIED="1487472730102" TEXT="sollte die Event-Loop bereits beendet sein"/>
|
||||
<node CREATED="1487472730667" ID="ID_1826692985" MODIFIED="1487472740645" TEXT="können aber noch Fenster existieren"/>
|
||||
<node CREATED="1487472757439" ID="ID_977443666" MODIFIED="1487475766036">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
wird der Link zwischen CoreService und UI-State <i>dangling</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<linktarget COLOR="#659ba4" DESTINATION="ID_977443666" ENDARROW="None" ENDINCLINATION="552;26;" ID="Arrow_ID_1335141107" SOURCE="ID_1261936534" STARTARROW="Default" STARTINCLINATION="462;0;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1487472781532" ID="ID_957134114" MODIFIED="1487472800205" TEXT="kurz darauf wird auch CoreService + Nexus zerstört"/>
|
||||
</node>
|
||||
<node CREATED="1487472971330" ID="ID_81364279" MODIFIED="1487472986931" TEXT="grundsätzliches Shutdown-Problem">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1487472987984" ID="ID_1443542622" MODIFIED="1487473080769" TEXT="aber harmlos">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1487472993439" ID="ID_310404379" MODIFIED="1487473004097" TEXT="unter der Annahme, daß das UI wirklich single-threaded läuft"/>
|
||||
<node CREATED="1487473004949" ID="ID_1092623141" MODIFIED="1487473018151" TEXT="wenn wir die Garantie haben, daß die Event-Loop nichts mehr macht"/>
|
||||
<node CREATED="1487473038377" ID="ID_393673106" MODIFIED="1487473076368" TEXT="Policy: kein Tangible darf im dtor mit dem UI-Bus reden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...mit der Ausnahme des Automatismus,
|
||||
</p>
|
||||
<p>
|
||||
der es selbst vom Bus abkoppelt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1487475679257" ID="ID_1700311138" MODIFIED="1487475708423" TEXT="wir injizieren anders herum">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1487475695910" ID="ID_1341876014" MODIFIED="1487475704865" TEXT="StateManager als sub-Service"/>
|
||||
<node CREATED="1487475711092" ID="ID_838045301" MODIFIED="1487475719743" TEXT="gehört CoreService"/>
|
||||
<node CREATED="1487475720363" ID="ID_693101732" MODIFIED="1487475723182" TEXT="läuft immer"/>
|
||||
<node CREATED="1487475723771" ID="ID_959927308" MODIFIED="1487475737732" TEXT="wird in UiState injiziert"/>
|
||||
<node CREATED="1487475738369" ID="ID_1261936534" MODIFIED="1487475782408" TEXT="harmloses Problem beseitigt">
|
||||
<arrowlink COLOR="#659ba4" DESTINATION="ID_977443666" ENDARROW="None" ENDINCLINATION="552;26;" ID="Arrow_ID_1335141107" STARTARROW="Default" STARTINCLINATION="462;0;"/>
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1487475796409" ID="ID_49608905" MODIFIED="1487475804801" TEXT="StateRecorder nun angeschlossen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1487313659680" ID="ID_1420397002" MODIFIED="1487313667475" TEXT="FocusTap">
|
||||
<node CREATED="1487313668423" ID="ID_1248049801" MODIFIED="1487313679321" TEXT="Signal in model::Tangible"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue