/
WidgetToggle.h
48 lines (33 loc) · 988 Bytes
/
WidgetToggle.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
#pragma once
#include "ieventmanager.h"
#include "Toggle.h"
#include <sigc++/connection.h>
#include <map>
namespace ui
{
/* greebo: A WidgetToggle can be connected to one or more toplevelwindows and shows/hides them
* upon toggle (e.g. like the Camera Window).
*/
class WidgetToggle :
public Toggle
{
typedef std::set<wxTopLevelWindow*> Widgets;
// The list of all the connected widgets
Widgets _widgets;
public:
// Constructor
WidgetToggle();
// Add a TopLevelWindow to the show/hide list
virtual void connectTopLevelWindow(wxTopLevelWindow* widget);
virtual void disconnectTopLevelWindow(wxTopLevelWindow* widget);
virtual void updateWidgets();
private:
bool doNothing(bool) { return true; }
// Show/hide all the connected widgets
void showWidgets();
void hideWidgets();
void readToggleStateFromWidgets();
void visibilityChanged();
void onVisibilityChange(wxShowEvent& ev);
}; // class WidgetToggle
}