3 * Main frame header file
5 * Nicolas Boichat, July 2004
10 Copyright (C) 2004-2006 Kern Sibbald
12 This program is free software; you can redistribute it and/or
13 modify it under the terms of the GNU General Public License
14 version 2 as amended with additional clauses defined in the
15 file LICENSE in the main source directory.
17 This program is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 the file LICENSE for additional details.
24 #ifndef WXBMAINFRAME_H
25 #define WXBMAINFRAME_H
27 #include "wx/wxprec.h"
33 // for all others, include the necessary headers (this file is usually all you
34 // need because it includes almost all "standard" wxWindows headers)
39 #include <wx/textctrl.h>
40 #include <wx/tokenzr.h>
41 #include <wx/notebook.h>
43 #include <wx/dynarray.h>
45 #include "console_thread.h"
49 #include "wxbhistorytextctrl.h"
51 WX_DEFINE_ARRAY(wxbDataParser*, wxbDataParsers);
53 // ----------------------------------------------------------------------------
54 // wxbPrintObject - Used by wxbThreadEvent to contain data sent by director
55 // ----------------------------------------------------------------------------
57 class wxbPrintObject: public wxObject {
61 wxbPrintObject(wxString str, int status): wxObject() {
63 this->status = status;
66 wxbPrintObject(const wxbPrintObject& pe) {
68 this->status = pe.status;
72 // ----------------------------------------------------------------------------
73 // wxbThreadEvent - Event used by wxbTHREAD_EVENT
74 // ----------------------------------------------------------------------------
76 DECLARE_LOCAL_EVENT_TYPE(wxbTHREAD_EVENT, -1)
78 class wxbThreadEvent: public wxEvent {
80 wxbThreadEvent(int id);
82 wxbThreadEvent(const wxbThreadEvent& te);
83 virtual wxEvent *Clone() const;
84 wxbPrintObject* GetEventPrintObject();
85 void SetEventPrintObject(wxbPrintObject* object);
88 // Define a new frame type: this is going to be our main frame
89 class wxbMainFrame : public wxFrame
92 /* this class is a singleton */
93 static wxbMainFrame* CreateInstance(const wxString& title, const wxPoint& pos, const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
94 static wxbMainFrame* GetInstance();
96 /* event handlers (these functions should _not_ be virtual) */
97 void OnQuit(wxCommandEvent& event);
98 void OnAbout(wxCommandEvent& event);
99 void OnChangeConfig(wxCommandEvent& event);
100 void OnEditConfig(wxCommandEvent& event);
101 void OnConnect(wxCommandEvent& event);
102 void OnDisconnect(wxCommandEvent& event);
103 void OnEnter(wxCommandEvent& event);
104 void OnPrint(wxbThreadEvent& event);
106 /* Enable and disable panels */
108 void DisablePanels(void* except = NULL);
110 void EnableConsole(bool enable = true);
113 * Prints data received from director to the console,
114 * and forwards it to the panels
116 void Print(wxString str, int status);
118 /* Sends data to the director */
119 void Send(wxString str);
122 * Starts the thread interacting with the director
123 * If config is not empty, uses this config file.
125 void StartConsoleThread(const wxString& config);
127 /* Register a new wxbDataParser */
128 void Register(wxbDataParser* dp);
130 /* Unregister a wxbDataParser */
131 void Unregister(wxbDataParser* dp);
133 console_thread* ct; /* thread interacting with the director */
136 /* private constructor, singleton */
137 wxbMainFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style);
140 static wxbMainFrame *frame; /* this */
144 wxNotebook *notebook; /* main notebook */
145 wxTextCtrl *consoleCtrl; /* wxTextCtrl containing graphical console */
146 wxStaticText *helpCtrl; /* wxStaticText showing help messages */
147 wxbHistoryTextCtrl *typeCtrl; /* wxbHistoryTextCtrl for console user input */
148 wxButton *sendButton; /* wxButton used to send data */
150 wxbPanel **panels; /* panels array, contained in the notebook */
151 wxbDataParsers parsers; /* Data parsers, which need to receive director informations */
153 wxbPromptParser* promptparser; /* prompt parser catching uncatched questions */
155 bool lockedbyconsole; /* true if the panels have been locked by something typed in the console */
157 wxString configfile; /* configfile used */
159 wxString consoleBuffer; /* Buffer used to print in the console line by line */
161 // any class wishing to process wxWindows events must use this macro
162 DECLARE_EVENT_TABLE()
165 #endif // WXBMAINFRAME_H