]> Creatis software - bbtk.git/blob - kernel/src/bbtkWxConsole.h
Create Black Box bbs + .bat + Bug interface Windows
[bbtk.git] / kernel / src / bbtkWxConsole.h
1 /*=========================================================================
2                                                                                 
3   Program:   bbtk
4   Module:    $RCSfile: bbtkWxConsole.h,v $
5   Language:  C++
6   Date:      $Date: 2008/03/17 07:04:08 $
7   Version:   $Revision: 1.8 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                                 
17 =========================================================================*//**
18  * \brief Short description in one line
19  * 
20  * Long description which 
21  * can span multiple lines
22  */
23 /**
24  * \file 
25  * \brief 
26  */
27 /**
28  * \class bbtk::
29  * \brief 
30  */
31
32
33 #ifdef _USE_WXWIDGETS_
34
35         
36 #ifndef __bbtkWxConsole_h__
37 #define __bbtkWxConsole_h__
38
39 #include <wx/aui/aui.h>
40 #include "bbtkWx.h"
41 #include <wx/notebook.h>
42 #include <wx/html/htmlwin.h>
43
44
45 #include "bbtkInterpreter.h"
46 #include "bbtkWxBrowser.h"
47
48 namespace bbtk
49 {
50
51   class WxTextCtrlStreamRedirector;
52
53   /// A console in which user can enter commands
54   class BBTK_EXPORT WxConsole : public wxFrame
55   {
56   public:
57     WxConsole( wxWindow *parent, wxString title, wxSize size);
58     ~WxConsole();
59
60     //    static WxConsole* GetInstance() { return mInstance; }
61     
62     /// Returns the Interpreter used 
63     /// ONLY ONE FOR THE MOMENT BUT IN THE FUTURE CAN BE DIFFERENT 
64     /// (DIFFERENT WORKSPACES)
65     Interpreter* GetInterpreter() { return mInterpreter; }
66     /// Returns the Interpreter used (const)
67     const Interpreter* GetInterpreter() const { return mInterpreter; }
68
69     /// Sets the inputs of the workspace : 
70     /// the map is passed as is to the Executer
71     void SetInputs(const std::map<std::string,std::string>& m)
72     { mInterpreter->SetInputs(m); }
73     
74     /// Puts the executer in "no exec" mode, 
75     /// which creates but does not execute pipelines.
76     void SetNoExecMode(bool b) { mInterpreter->SetNoExecMode(b); }
77
78     void SetDialogMode(Interpreter::DialogModeType t) 
79     { mInterpreter->SetDialogMode(t); }
80     
81     /// Runs the interpretation of a file
82     void InterpretFile( const std::string& filename) 
83     { mInterpreter->InterpretFile(filename); }
84
85     void OnMenuQuit(wxCommandEvent& event);
86     void OnMenuAbout(wxCommandEvent& event);
87     void OnMenuEditConfig(wxCommandEvent& WXUNUSED(event));
88     void OnMenuCreatePackage(wxCommandEvent& WXUNUSED(event));
89     void OnMenuCreateBlackBox(wxCommandEvent& WXUNUSED(event));
90     void OnMenuShowImageGraph(wxCommandEvent& WXUNUSED(event));
91     void OnMenuCreateIndex(wxCommandEvent& WXUNUSED(event));
92    
93     void OnBtnGo(wxCommandEvent& event);
94     void OnCommandEnter(wxCommandEvent& event);
95     void OnCommandChar(wxCommandEvent& event);
96
97     void OnBtnInclude(wxCommandEvent& event);
98     void OnBtnReset(wxCommandEvent& event);
99     void OnBtnConfig(wxCommandEvent& event);
100     void OnBtnGraphS(wxCommandEvent& event);
101     void OnBtnGraphD(wxCommandEvent& event);
102     void OnBtnHelp(wxCommandEvent& event);
103     
104     
105     void ShowHtmlPage(std::string&);
106
107   private:
108         wxAuiManager m_mgr;
109     Interpreter* mInterpreter;
110     wxTextCtrl* mwxTextHistory;
111 //EED    wxTextCtrl* mwxTextCommand;
112     wxComboBox* mwxTextCommand;
113     wxTextAttr* mwxTextHistoryAttr;
114     wxTextAttr* mwxTextCommandAttr;
115 //EED    wxNotebook* mwxNotebook;
116    wxAuiNotebook* mwxNotebook;
117     wxPanel *mwxPageCommand, *mwxPageHelp;
118     WxTextCtrlStreamRedirector* mRedirect_cout;
119     WxTextCtrlStreamRedirector* mRedirect_cerr;
120     WxBrowser* mwxHtmlWindow;
121     // static WxConsole* mInstance;
122     
123     wxPanel*    CreateBtnsCtrlPanel(wxWindow *parent);
124     void                CommandString(wxString line );
125   public:
126           
127      enum
128     {
129       ID_Menu_Quit = 1,
130       ID_Menu_About,
131       ID_Menu_EditConfig,
132       ID_Menu_CreatePackage,
133       ID_Menu_CreateBlackBox,
134       ID_Menu_ShowImageGraph,
135       ID_Menu_CreateIndex,
136       ID_Text_Command,
137       ID_Text_History,
138
139     };
140     
141     DECLARE_EVENT_TABLE()
142         
143   };
144
145   
146 } // namespace bbtk
147
148
149 #endif // __bbtkWxConsole_h__
150
151 #endif //_USE_WXWIDGETS_