summaryrefslogtreecommitdiff
path: root/LiteEditor/message_pane.h
blob: 18e16d05cf2f4d521fc3f9d91f8ece3faf270b45 (plain)
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
#ifndef __message_pane__
#define __message_pane__

/**
@file
Subclass of MessagePaneBase, which is generated by wxFormBuilder.
*/

#include "messagepane_base.h"
#include <vector>

class ButtonDetails
{
public:
	wxString      buttonLabel;
	int           commandId;
	wxEvtHandler* window;
	bool          menuCommand;
	bool          isDefault;
	
public:
	ButtonDetails() : buttonLabel(wxT("")), commandId(wxNOT_FOUND), window(NULL), menuCommand(true)
	{}
	~ButtonDetails()
	{}
};

class MessageDetails
{
public:
	wxString      message;
	wxBitmap      bmp;
	ButtonDetails btn1;
	ButtonDetails btn2;
	ButtonDetails btn3;
	bool          showHideButton;
	
public:
	MessageDetails() : bmp(wxNullBitmap), showHideButton(true)
	{}
	
	~MessageDetails()
	{}
};

class MessagePaneData
{
	std::vector<MessageDetails> m_queue;
public:
	MessagePaneData() {}
	~MessagePaneData() {
		Clear();
	}

	void           PushMessage(const MessageDetails &msg);
	void           PopMessage();
	MessageDetails CurrentMessage();
	void           Clear();
	bool           IsEmpty();
};

/** Implementing MessagePaneBase */
class MessagePane : public MessagePaneBase
{
	MessagePaneData m_messages;
	
protected:
	// Handlers for MessagePaneBase events.
	void OnKeyDown( wxKeyEvent& event );
	void OnButtonClose( wxCommandEvent& event );
	void OnActionButton( wxCommandEvent& event );
	void OnActionButton1( wxCommandEvent& event );
	void OnActionButton2( wxCommandEvent& event );

	void OnEraseBG( wxEraseEvent& event );
	void OnPaint( wxPaintEvent& event );

	void DoHide();
	void DoShowNextMessage();
	void DoShowCurrentMessage();
	void DoPostEvent(ButtonDetails btn);
	
public:
	/** Constructor */
	MessagePane( wxWindow* parent );

	void ShowMessage(const wxString &message, bool showHideButton = true, const wxBitmap &bmp = wxNullBitmap, const ButtonDetails& btn1 = ButtonDetails(), const ButtonDetails& btn2 = ButtonDetails(), const ButtonDetails& btn3 = ButtonDetails());
};

#endif // __message_pane__