Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
ui-manager.hpp
Go to the documentation of this file.
1/*
2 UI-MANAGER.hpp - Global UI Manager
3
4 Copyright (C)
5 2008, Joel Holdsworth <joel@airwebreathe.org.uk>
6 2017, Hermann Vosseler <Ichthyostega@web.de>
7
8  **Lumiera** is free software; you can redistribute it and/or modify it
9  under the terms of the GNU General Public License as published by the
10  Free Software Foundation; either version 2 of the License, or (at your
11  option) any later version. See the file COPYING for further details.
12
13*/
14
15
39#ifndef STAGE_CTRL_UI_MANAGER_H
40#define STAGE_CTRL_UI_MANAGER_H
41
42#include "stage/gtk-base.hpp"
43#include "lib/nocopy.hpp"
44
45#include <functional>
46#include <memory>
47#include <string>
48
49
50namespace stage {
51
52 class UiBus;
53
54namespace workspace { class UiStyle; }
55namespace timeline { class TimelineWidget; }
56namespace ctrl {
57
58 using std::unique_ptr;
59 using std::string;
60
61 class GlobalCtx;
62 class Actions;
63 class Facade;
64
65
66
70 {
71 protected:
74 };
75
76
89 : public ApplicationBase
90 , public Gtk::UIManager
91 {
93
94 unique_ptr<GlobalCtx> globals_;
95 unique_ptr<UiStyle> uiStyle_;
96 unique_ptr<Actions> actions_;
97 unique_ptr<Facade> facade_;
98
99
100 public:
107 UiManager (UiBus& bus);
108 ~UiManager ();
109
115
120 void performMainLoop();
121
125 void terminateUI();
126
127
128 using Operation = std::function<void(void)>;
132 void schedule (Operation&& task);
133
134
139
140 void allowCloseWindow (bool yes);
141
143
144 private:
145
146 };
147
148
149
150}}// namespace stage::ctrl
151#endif /*STAGE_CTRL_UI_MANAGER_H*/
Backbone of the Lumiera GTK GUI.
Definition ui-bus.hpp:124
Framework initialisation base.
ApplicationBase()
Initialise the GTK framework libraries.
The Lumiera UI framework and backbone object.
unique_ptr< Facade > facade_
unique_ptr< Actions > actions_
unique_ptr< UiStyle > uiStyle_
void updateWindowFocusRelatedActions()
std::function< void(void)> Operation
void configureStyle(timeline::TimelineWidget const &)
void performMainLoop()
start the GTK Main loop and thus activate the UI.
void allowCloseWindow(bool yes)
void terminateUI()
Cause the main event loop to terminate, so the application as a whole unwinds.
void createApplicationWindow()
Set up the first top-level application window.
unique_ptr< GlobalCtx > globals_
void schedule(Operation &&task)
perform an action within the UI event loop (GTK loop).
Core timeline display (custom widget).
Manage global concerns regarding a coherent user interface.
Definition ui-style.hpp:66
Any copy and copy construction prohibited.
Definition nocopy.hpp:38
A set of basic GTK includes for the UI.
Lumiera GTK UI implementation root.
Definition guifacade.cpp:37
Mix-Ins to allow or prohibit various degrees of copying and cloning.