-
Notifications
You must be signed in to change notification settings - Fork 47
/
MainFrame.h
109 lines (79 loc) · 2.83 KB
/
MainFrame.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#pragma once
#include <sigc++/connection.h>
#include "icommandsystem.h"
#include "ui/imainframe.h"
#include "wxutil/WindowPosition.h"
namespace ui
{
class TopLevelFrame;
class AuiLayout;
class MainFrame :
public IMainFrame
{
private:
TopLevelFrame* _topLevelWindow;
bool _screenUpdatesEnabled;
bool _defLoadingBlocksUpdates;
bool _mapLoadingBlocksUpdates;
wxutil::WindowPosition _windowPosition;
// The current layout object
std::shared_ptr<AuiLayout> _layout;
sigc::connection _mapNameChangedConn;
sigc::connection _mapModifiedChangedConn;
sigc::signal<void> _sigMainFrameConstructed;
sigc::signal<void> _sigMainFrameReady;
sigc::signal<void> _sigMainFrameShuttingDown;
sigc::connection _defsLoadingSignal;
sigc::connection _defsLoadedSignal;
sigc::connection _mapEventSignal;
private:
void construct();
void keyChanged();
void preDestructionCleanup();
void updateTitle();
void onTopLevelFrameClose(wxCloseEvent& ev);
public:
MainFrame();
// IMainFrame implementation
bool screenUpdatesEnabled() override;
void enableScreenUpdates() override;
void disableScreenUpdates() override;
wxFrame* getWxTopLevelWindow() override;
bool isActiveApp() override;
wxBoxSizer* getWxMainContainer() override;
wxToolBar* getToolbar(Toolbar type) override;
void updateAllWindows(bool force = false) override;
IScopedScreenUpdateBlockerPtr getScopedScreenUpdateBlocker(const std::string& title,
const std::string& message, bool forceDisplay = false) override;
void addControl(const std::string& controlName, const ControlSettings& defaultSettings) override;
sigc::signal<void>& signal_MainFrameConstructed() override;
sigc::signal<void>& signal_MainFrameReady() override;
sigc::signal<void>& signal_MainFrameShuttingDown() override;
// Command to toggle the current layout's camera fullscreen mode
void toggleFullscreenCameraView(const cmd::ArgumentList& args);
// RegisterableModule implementation
const std::string& getName() const override;
const StringSet& getDependencies() const override;
void initialiseModule(const IApplicationContext& ctx) override;
void shutdownModule() override;
private:
void create();
void exitCmd(const cmd::ArgumentList& args);
void focusControl(const cmd::ArgumentList& args);
void createControl(const cmd::ArgumentList& args);
void toggleControl(const cmd::ArgumentList& args);
void toggleMainControl(const cmd::ArgumentList& args);
void removeLayout();
// Save/Restore the window position as saved to the registry
void saveWindowPosition();
void restoreWindowPosition();
// Creates the topmost application window
void createTopLevelWindow();
// Constructs the MainFrame and shows the Window
void postModuleInitialisation();
#ifdef WIN32
// Enables or disabled desktop composition, Windows-specific
void setDesktopCompositionEnabled(bool enabled);
#endif
};
} // namespace ui