]> Creatis software - crea.git/blob - lib/creaDevManagerLib/wxCreaDevManagerMainFrame.cxx
b48582a8607c6df6e6b3869feace48df6609a3b0
[crea.git] / lib / creaDevManagerLib / wxCreaDevManagerMainFrame.cxx
1 #include "wxCreaDevManagerMainFrame.h"
2 #include "creaDevManagerIds.h"
3
4 #include "wxCreaDevManagerTreeCtrl.h"
5
6 #include "wxCreaDevManagerDescriptionPanel.h"
7 #include "wxCreaDevManagerProjectActionsPanel.h"
8 #include "wxCreaDevManagerNewProjectDialog.h"
9 #include "ControlCreaDevManagerMain.h"
10
11 #include <wx/dirdlg.h>
12
13 #include <iostream>
14 #include <cstdio>
15 #include <iterator>
16 #include <fstream>
17 #include <string>
18 #include <algorithm>
19
20
21 BEGIN_EVENT_TABLE(wxCreaDevManagerMainFrame, wxFrame)
22   EVT_MENU(ID_MENU_NEW_PROJECT, wxCreaDevManagerMainFrame::OnMenuNewProject)
23   EVT_MENU(ID_MENU_OPEN_PROJECT, wxCreaDevManagerMainFrame::OnMenuOpenProject)
24   EVT_MENU(ID_MENU_OPEN_RECENT, wxCreaDevManagerMainFrame::OnMenuOpenRecent)
25   EVT_MENU(ID_MENU_CLOSE_PROJECT, wxCreaDevManagerMainFrame::OnMenuCloseProject)
26   EVT_MENU(ID_MENU_CLOSE_ALL_PROJECTS, wxCreaDevManagerMainFrame::OnMenuCloseAllProjects)
27   EVT_MENU(ID_MENU_EXPORT_HIERARCHY, wxCreaDevManagerMainFrame::OnMenuExportHierarchy)
28   EVT_MENU(ID_MENU_EXIT, wxCreaDevManagerMainFrame::OnMenuExit)
29   EVT_MENU(ID_MENU_REFRESH_PROJECT, wxCreaDevManagerMainFrame::OnMenuRefreshProject)
30   EVT_MENU(ID_MENU_CUT, wxCreaDevManagerMainFrame::OnMenuMenuCut)
31   EVT_MENU(ID_MENU_COPY, wxCreaDevManagerMainFrame::OnMenuMenuCopy)
32   EVT_MENU(ID_MENU_PASTE, wxCreaDevManagerMainFrame::OnMenuMenuPaste)
33   EVT_MENU(ID_MENU_DELETE, wxCreaDevManagerMainFrame::OnMenuMenuDelete)
34   EVT_MENU(ID_MENU_SELECT_ALL, wxCreaDevManagerMainFrame::OnMenuSelectAll)
35   EVT_MENU(ID_MENU_SELECT_NONE, wxCreaDevManagerMainFrame::OnMenuSelectNone)
36   EVT_MENU(ID_MENU_EVENT_LOG, wxCreaDevManagerMainFrame::OnMenuEventLog)
37   EVT_MENU(ID_MENU_BBTK_GRAPHICAL_EDITOR, wxCreaDevManagerMainFrame::OnMenuBBTKGraphicalEditor)
38   EVT_MENU(ID_MENU_MINITOOLS, wxCreaDevManagerMainFrame::OnMenuMiniTools)
39   EVT_MENU(ID_MENU_CODE_EDITOR, wxCreaDevManagerMainFrame::OnMenuCodeEditor)
40   EVT_MENU(ID_MENU_COMMAND_LINE, wxCreaDevManagerMainFrame::OnMenuCommandLine)
41   EVT_MENU(ID_MENU_HELP, wxCreaDevManagerMainFrame::OnMenuHelp)
42   EVT_MENU(ID_MENU_REPORT_BUG, wxCreaDevManagerMainFrame::OnMenuReportBug)
43   EVT_MENU(ID_MENU_ABOUT_CREADEVMANAGER, wxCreaDevManagerMainFrame::OnMenuAboutCreaDevManager)
44   EVT_MENU(ID_MENU_ABOUT_CREATIS, wxCreaDevManagerMainFrame::OnMenuAboutCreatis)
45   EVT_BUTTON(ID_BUTTON_NEWPROJECT, wxCreaDevManagerMainFrame::OnMenuNewProject)
46   EVT_BUTTON(ID_BUTTON_OPENPROJECT, wxCreaDevManagerMainFrame::OnMenuOpenProject)
47 END_EVENT_TABLE()
48
49 wxCreaDevManagerMainFrame::wxCreaDevManagerMainFrame(
50   wxWindow* parent,
51   wxWindowID id,
52   const wxString& caption,
53   const wxPoint& pos,
54   const wxSize& size,
55   long style
56 )
57 {
58   Create(parent, id, caption, pos, size, style);
59 }
60
61 wxCreaDevManagerMainFrame::~wxCreaDevManagerMainFrame()
62 {
63   auiManager.UnInit();
64 }
65
66 void wxCreaDevManagerMainFrame::UpdateVisual()
67 {
68   auiManager.Update();
69   this->Update();
70 }
71
72 bool wxCreaDevManagerMainFrame::Create(
73   wxWindow* parent,
74   wxWindowID id,
75   const wxString& caption,
76   const wxPoint& pos,
77   const wxSize& size,
78   long style
79 )
80 {
81   wxFrame::Create(parent, id, caption, pos, size, style);
82   this->controller = new ControlCreaDevManagerMain();
83   this->controller->LoadActiveProjects();
84   CreateMenus();
85   CreateControls();
86   return TRUE;
87 }
88
89 void wxCreaDevManagerMainFrame::CreateMenus()
90 {
91   wxMenuBar* menuBar = new wxMenuBar;
92
93   //FileMenu
94   menu_File = new wxMenu();
95   menu_File->Append(ID_MENU_NEW_PROJECT, wxString("&New Project..."));
96   menu_File->Append(ID_MENU_OPEN_PROJECT, wxString("&Open Project..."));
97   menu_File->Append(ID_MENU_OPEN_RECENT, wxString("Open &Recent"));
98   menu_File->AppendSeparator();
99   menu_File->Append(ID_MENU_CLOSE_PROJECT, wxString("&Close Project"));
100   menu_File->Append(ID_MENU_CLOSE_ALL_PROJECTS, wxString("C&lose All Projects"));
101   menu_File->AppendSeparator();
102   menu_File->Append(ID_MENU_EXPORT_HIERARCHY, wxString("&Export Project Hierarchy..."));
103   menu_File->AppendSeparator();
104   menu_File->Append(ID_MENU_EXIT, wxString("E&xit"));
105
106   menuBar->Append(menu_File, wxString("&File"));
107
108   //EditMenu
109   menu_Edit = new wxMenu();
110   menu_Edit->Append(ID_MENU_REFRESH_PROJECT, wxString("&Refresh Project"));
111   menu_Edit->AppendSeparator();
112   menu_Edit->Append(ID_MENU_CUT, wxString("Cu&t"));
113   menu_Edit->Append(ID_MENU_COPY, wxString("&Copy"));
114   menu_Edit->Append(ID_MENU_PASTE, wxString("&Paste"));
115   menu_Edit->AppendSeparator();
116   menu_Edit->Append(ID_MENU_DELETE, wxString("&Delete"));
117   menu_Edit->Append(ID_MENU_SELECT_ALL, wxString("Select &All"));
118   menu_Edit->Append(ID_MENU_SELECT_NONE, wxString("Ca&ncel Selection"));
119
120   menuBar->Append(menu_Edit, wxString("&Edit"));
121
122   //ToolsMenu
123   menu_Tools = new wxMenu();
124   menu_Tools->Append(ID_MENU_EVENT_LOG, wxString("Event &Log"));
125   menu_Tools->Append(ID_MENU_BBTK_GRAPHICAL_EDITOR, wxString("BBTK &Graphical Editor"));
126   menu_Tools->Append(ID_MENU_MINITOOLS, wxString("&MiniTools"));
127   menu_Tools->Append(ID_MENU_CODE_EDITOR, wxString("&Code Editor"));
128   menu_Tools->Append(ID_MENU_COMMAND_LINE, wxString("&Command Line"));
129
130   menuBar->Append(menu_Tools, wxString("&Tools"));
131
132   //HelpMenu
133   menu_Help = new wxMenu();
134   menu_Help->Append(ID_MENU_HELP, wxString("&Help"));
135   menu_Help->Append(ID_MENU_REPORT_BUG, wxString("Report &Bug"));
136   menu_Help->Append(ID_MENU_ABOUT_CREADEVMANAGER, wxString("&About CreaDevManager"));
137   menu_Help->Append(ID_MENU_ABOUT_CREATIS, wxString("A&bout CREATIS"));
138
139   menuBar->Append(menu_Help, wxString("&Help"));
140
141   //Set Bar
142   SetMenuBar(menuBar);
143
144   wxStatusBar* statusBar = new wxStatusBar(this, ID_STATUS_BAR, wxST_SIZEGRIP);
145   statusBar->SetFieldsCount(1);
146   SetStatusBar(statusBar);
147
148 }
149
150 void wxCreaDevManagerMainFrame::CreateControls()
151 {
152
153   auiManager.SetManagedWindow(this);
154
155
156   tree_Projects = new wxCreaDevManagerTreeCtrl(
157     this,
158     ID_TREE_PROJECTS,
159     wxDefaultPosition,
160     wxSize(300,400),
161     wxTR_HAS_BUTTONS | wxTR_AQUA_BUTTONS
162   );
163   tree_Projects->SetMinSize(wxSize(200,200));
164
165   panel_Properties = new wxCreaDevManagerDescriptionPanel(
166     this,
167     ID_WINDOW_PROPERTIES,
168     wxString("Description Panel"),
169     wxDefaultPosition,
170     wxSize(300, 400),
171     0
172   );
173
174
175
176   panel_ProjectActions = new wxCreaDevManagerProjectActionsPanel(
177     this,
178     ID_WINDOW_PROJ_ACTIONS,
179     wxString("Project Actions Panel"),
180     wxDefaultPosition,
181     wxSize(600,200),
182     0
183   );
184   panel_ProjectActions->SetMinSize(wxSize(500, 100));
185
186   auiManager.AddPane(tree_Projects, wxLEFT, wxString("Projects Tree"));
187   auiManager.AddPane(panel_ProjectActions, wxBOTTOM, wxString("Project Actions"));
188   auiManager.AddPane(panel_Properties, wxCENTER, wxString("Properties"));
189
190   auiManager.Update();
191   auiManager.GetPane(tree_Projects).CloseButton(false).MaximizeButton(true);
192   auiManager.GetPane(panel_Properties).CloseButton(false);
193 }
194
195 //Event Handlers
196 //File menu
197 void wxCreaDevManagerMainFrame::OnMenuNewProject(wxCommandEvent& event)
198 {
199   wxCreaDevManagerNewProjectDialog* dialog = new wxCreaDevManagerNewProjectDialog(this, this->controller);
200   long userResponse;
201   userResponse = dialog->ShowModal();
202
203   ((wxCreaDevManagerTreeCtrl*)tree_Projects)->BuildTree(this->controller->GetActiveProjects());
204
205   this->UpdateVisual();
206
207   event.Skip();
208 }
209 void wxCreaDevManagerMainFrame::OnMenuOpenProject(wxCommandEvent& event)
210 {
211   long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST;
212   wxDirDialog* FD = new wxDirDialog(this, wxString("Select the project directory"), wxString(""), style);
213   long userResponse;
214   userResponse = FD->ShowModal();
215   if(userResponse == wxID_OK)
216   {
217     switch(this->controller->OpenProject(crea::wx2std (FD->GetPath())))
218     {
219     case 1:
220       wxMessageBox( wxT("No project selected."), wxT("Open Project - Error"), wxICON_ERROR);
221       event.Skip();
222       break;
223     case 2:
224       wxMessageBox( wxString("Sources not found."), wxString("Open Project - Error"), wxICON_ERROR);
225       event.Skip();
226       break;
227     case 0:
228       break;
229     };
230
231     ((wxCreaDevManagerTreeCtrl*)tree_Projects)->BuildTree(controller->GetActiveProjects());
232
233     auiManager.Update();
234   }
235   event.Skip();
236 }
237 void wxCreaDevManagerMainFrame::OnMenuOpenRecent(wxCommandEvent& event)
238 {
239   std::cerr << "Event OnMenuOpenRecent not implemented" << std::endl;
240   event.Skip();
241 }
242 void wxCreaDevManagerMainFrame::OnMenuCloseProject(wxCommandEvent& event)
243 {
244   std::cerr << "Event OnMenuCloseProject not implemented" << std::endl;
245   event.Skip();
246 }
247 void wxCreaDevManagerMainFrame::OnMenuCloseAllProjects(wxCommandEvent& event)
248 {
249   std::cerr << "Event OnMenuCloseAllProjects not implemented" << std::endl;
250   event.Skip();
251 }
252 void wxCreaDevManagerMainFrame::OnMenuExportHierarchy(wxCommandEvent& event)
253 {
254   std::cerr << "Event OnMenuExportHierarchy not implemented" << std::endl;
255   event.Skip();
256 }
257 void wxCreaDevManagerMainFrame::OnMenuExit(wxCommandEvent& event)
258 {
259   std::cout << "Closing CreaDevManager..." << std::endl;
260   Close();
261   event.Skip();
262 }
263
264 //Edit Menu
265 void wxCreaDevManagerMainFrame::OnMenuRefreshProject(wxCommandEvent& event)
266 {
267   std::cerr << "Event OnMenuRefreshProject not implemented" << std::endl;
268   event.Skip();
269 }
270 void wxCreaDevManagerMainFrame::OnMenuMenuCut(wxCommandEvent& event)
271 {
272   std::cerr << "Event OnMenuMenuCut not implemented" << std::endl;
273   event.Skip();
274 }
275 void wxCreaDevManagerMainFrame::OnMenuMenuCopy(wxCommandEvent& event)
276 {
277   std::cerr << "Event OnMenuMenuCopy not implemented" << std::endl;
278   event.Skip();
279 }
280 void wxCreaDevManagerMainFrame::OnMenuMenuPaste(wxCommandEvent& event)
281 {
282   std::cerr << "Event OnMenuMenuPaste not implemented" << std::endl;
283   event.Skip();
284 }
285 void wxCreaDevManagerMainFrame::OnMenuMenuDelete(wxCommandEvent& event)
286 {
287   std::cerr << "Event OnMenuMenuDelete not implemented" << std::endl;
288   event.Skip();
289 }
290 void wxCreaDevManagerMainFrame::OnMenuSelectAll(wxCommandEvent& event)
291 {
292   std::cerr << "Event OnMenuSelectAll not implemented" << std::endl;
293   event.Skip();
294 }
295 void wxCreaDevManagerMainFrame::OnMenuSelectNone(wxCommandEvent& event)
296 {
297   std::cerr << "Event OnMenuSelectNone not implemented" << std::endl;
298   event.Skip();
299 }
300
301 //Tools Menu
302 void wxCreaDevManagerMainFrame::OnMenuEventLog(wxCommandEvent& event)
303 {
304   std::cerr << "Event OnMenuEventLog not implemented" << std::endl;
305   event.Skip();
306 }
307 void wxCreaDevManagerMainFrame::OnMenuBBTKGraphicalEditor(wxCommandEvent& event)
308 {
309   std::cerr << "Event OnMenuBBTKGraphicalEditor not implemented" << std::endl;
310   event.Skip();
311 }
312 void wxCreaDevManagerMainFrame::OnMenuMiniTools(wxCommandEvent& event)
313 {
314   std::cerr << "Event OnMenuMiniTools not implemented" << std::endl;
315   event.Skip();
316 }
317 void wxCreaDevManagerMainFrame::OnMenuCodeEditor(wxCommandEvent& event)
318 {
319   std::cerr << "Event OnMenuCodeEditor not implemented" << std::endl;
320   event.Skip();
321 }
322 void wxCreaDevManagerMainFrame::OnMenuCommandLine(wxCommandEvent& event)
323 {
324   std::cerr << "Event OnMenuCommandLine not implemented" << std::endl;
325   event.Skip();
326 }
327
328 //Help Menu
329 void wxCreaDevManagerMainFrame::OnMenuHelp(wxCommandEvent& event)
330 {
331   std::cerr << "Event OnMenuHelp not implemented" << std::endl;
332   event.Skip();
333 }
334 void wxCreaDevManagerMainFrame::OnMenuReportBug(wxCommandEvent& event)
335 {
336   std::cerr << "Event OnMenuReportBug not implemented" << std::endl;
337   event.Skip();
338 }
339 void wxCreaDevManagerMainFrame::OnMenuAboutCreaDevManager(wxCommandEvent& event)
340 {
341   std::cerr << "Event OnMenuAboutCreaDevManager not implemented" << std::endl;
342   event.Skip();
343 }
344 void wxCreaDevManagerMainFrame::OnMenuAboutCreatis(wxCommandEvent& event)
345 {
346   std::cerr << "Event OnMenuAboutCreatis not implemented" << std::endl;
347   event.Skip();
348 }