2 # ---------------------------------------------------------------------
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
10 # This software is governed by the CeCILL-B license under French law and
11 # abiding by the rules of distribution of free software. You can use,
12 # modify and/ or redistribute the software under the terms of the CeCILL-B
13 # license as circulated by CEA, CNRS and INRIA at the following URL
14 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15 # or in the file LICENSE.txt.
17 # As a counterpart to the access to the source code and rights to copy,
18 # modify and redistribute granted by the license, users are provided only
19 # with a limited warranty and the software's author, the holder of the
20 # economic rights, and the successive licensors have only limited
23 # The fact that you are presently reading this means that you have had
24 # knowledge of the CeCILL-B license and that you accept its terms.
25 # ------------------------------------------------------------------------
30 * wxCDMBlackBoxHelpDialog.cpp
32 * Created on: 11/1/2013
33 * Author: Daniel Felipe Gonzalez Obando
36 #include "wxCDMBlackBoxHelpDialog.h"
38 #include "creaDevManagerIds.h"
40 #include "modelCDMProject.h"
41 #include "modelCDMPackage.h"
43 BEGIN_EVENT_TABLE(wxCDMBlackBoxHelpDialog, wxDialog)
44 EVT_BUTTON(ID_BUTTON_CANCEL, wxCDMBlackBoxHelpDialog::OnFinish)
45 EVT_BUTTON(ID_BUTTON_OPENPROJECT, wxCDMBlackBoxHelpDialog::OnCMakeLists)
46 EVT_BUTTON(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMBlackBoxHelpDialog::OnCMakeLists)
47 EVT_CHECKBOX(ID_CHECKBOX_DISABLE_HELP, wxCDMBlackBoxHelpDialog::OnDisableHelp)
50 wxCDMBlackBoxHelpDialog::wxCDMBlackBoxHelpDialog(
52 modelCDMBlackBox* blackBox,
54 const wxString& caption,
55 const wxPoint& position,
60 wxCDMBlackBoxHelpDialog::Create(parent, id, caption, position, size, style);
61 this->blackBox = blackBox;
64 wxCDMBlackBoxHelpDialog::~wxCDMBlackBoxHelpDialog()
68 bool wxCDMBlackBoxHelpDialog::Create(
71 const wxString& caption,
72 const wxPoint& position,
77 wxDialog::Create(parent, id, caption, position, size, style);
79 this->CreateControls();
84 void wxCDMBlackBoxHelpDialog::CreateControls()
87 wxBoxSizer* v_sizer1 = new wxBoxSizer(wxVERTICAL);
90 wxStaticText* title = new wxStaticText(this, wxID_ANY, wxT("Working with BlackBoxes"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);//new wxRichTextCtrl(this,wxID_ANY, wxString("Create a new project"), wxDefaultPosition, wxDefaultSize, wxRE_READONLY);
91 v_sizer1->Add(title, 0, wxALIGN_LEFT | wxALL | wxALIGN_CENTER_VERTICAL, 5);
93 wxStaticText* instruction = new wxStaticText(
97 "Black boxes are made to work in a modular fashion. They have programmer defined inputs and outputs. Their "
98 "purpose is to use the functions available in the libraries and expose them to be used as boxes in the crea "
100 "Black boxes are stored in the src folder of a package and they are composed of two files, the header(.h) "
101 "and the implementation(.cxx) files.\n"
102 "To start developing black boxes, go ahead and open the header file with the button \"Open .h\" and define "
103 "the inputs and outputs of the black box. Then, you will be able to use them in the implementation file, which "
104 "you can open using the \"Open .cxx\" button.\n"
105 "If you don't understand how this inputs and outputs are used, try looking at the sample black boxes available "
106 "in the sample package, which is shipped with every new project.\n"
107 "Also, don't forget to include the libraries your boxes use in the header and implementation files. They should "
108 "also be pointed and included in the package's directory CMakeLists.txt file and the project's directory "
109 "CMakeLists.txt file. Again, please take a look at the sample package and its boxes to see how to include libraries "
110 "in order to use them in the boxes.\n"
112 "You can easily edit the CMakeLists files previously mentioned by clicking on the following buttons."),
117 v_sizer1->Add(instruction, 0,wxEXPAND | wxALL, 5);
119 wxButton* editCMakePkgBtn = new wxButton(this, ID_BUTTON_EDIT_CMAKELISTSFILE, wxT("Open Package's directory CMakeLists file"));
120 editCMakePkgBtn->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMBlackBoxHelpDialog::OnCMakeListsEnter,NULL,this);
121 editCMakePkgBtn->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMBlackBoxHelpDialog::OnCMakeListsExit,NULL,this);
122 wxButton* editCMakePrjBtn= new wxButton(this, ID_BUTTON_OPENPROJECT, wxT("Open Project's directory CMakeLists file"));
123 editCMakePrjBtn->Connect(wxEVT_ENTER_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMBlackBoxHelpDialog::OnCMakeListsEnter,NULL,this);
124 editCMakePrjBtn->Connect(wxEVT_LEAVE_WINDOW, (wxObjectEventFunction)(wxEventFunction)(wxMouseEventFunction)&wxCDMBlackBoxHelpDialog::OnCMakeListsExit,NULL,this);
126 v_sizer1->Add(editCMakePkgBtn, 0, wxEXPAND | wxLEFT | wxRIGHT, 15);
127 v_sizer1->Add(editCMakePrjBtn, 0, wxEXPAND | wxLEFT | wxRIGHT, 15);
129 v_sizer1->Add(new wxCheckBox(this, ID_CHECKBOX_DISABLE_HELP, wxT("&Disable help")), 0, wxALIGN_RIGHT | wxRIGHT, 10);
131 v_sizer1->Add(new wxButton(this, ID_BUTTON_CANCEL, wxT("Close")), 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, 30);
134 //v_sizer1->RecalcSizes();
137 void wxCDMBlackBoxHelpDialog::OnFinish(wxCommandEvent& event)
139 this->EndDialog(wxID_CANCEL);
142 void wxCDMBlackBoxHelpDialog::OnCMakeLists(wxCommandEvent& event)
146 if((int)((wxButton*)event.GetEventObject())->GetId() == (int)ID_BUTTON_EDIT_CMAKELISTSFILE)
148 modelCDMIProjectTreeNode* node = this->blackBox;
149 while (node != NULL && dynamic_cast<modelCDMPackage*>(node) == NULL)
151 node = node->GetParent();
155 if(!((modelCDMPackage*)node)->OpenCMakeListsFile(result))
156 wxMessageBox(crea::std2wx(*result),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
158 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
160 if(((modelCDMPackage*)node)->GetCMakeLists() != NULL)
162 int CMId = ((modelCDMPackage*)node)->GetCMakeLists()->GetId();
163 newEvent->SetInt(CMId);
165 wxPostEvent(this->GetParent(), *newEvent);
170 wxMessageBox(crea::std2wx("No project CMakeLists file was found."),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
173 else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT)
175 modelCDMIProjectTreeNode* node = this->blackBox;
176 while (node != NULL && dynamic_cast<modelCDMProject*>(node) == NULL)
178 node = node->GetParent();
182 if(!((modelCDMProject*)node)->OpenCMakeListsFile(result))
183 wxMessageBox(crea::std2wx(*result),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
185 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
187 if(((modelCDMProject*)node)->GetCMakeLists() != NULL)
189 int CMId = ((modelCDMProject*)node)->GetCMakeLists()->GetId();
190 newEvent->SetInt(CMId);
192 wxPostEvent(this->GetParent(), *newEvent);
197 wxMessageBox(crea::std2wx("No project CMakeLists file was found."),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
202 void wxCDMBlackBoxHelpDialog::OnCMakeListsEnter(wxMouseEvent& event)
204 if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_EDIT_CMAKELISTSFILE)
206 modelCDMIProjectTreeNode* node = this->blackBox;
207 while (node != NULL && dynamic_cast<modelCDMPackage*>(node) == NULL)
209 node = node->GetParent();
213 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED);
215 if(((modelCDMPackage*)node)->GetCMakeLists() != NULL)
217 int CMId = ((modelCDMPackage*)node)->GetCMakeLists()->GetId();
218 newEvent->SetInt(CMId);
220 wxPostEvent(this->GetParent(), *newEvent);
224 else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT)
226 modelCDMIProjectTreeNode* node = this->blackBox;
227 while (node != NULL && dynamic_cast<modelCDMProject*>(node) == NULL)
229 node = node->GetParent();
233 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED);
235 if(((modelCDMProject*)node)->GetCMakeLists() != NULL)
237 int CMId = ((modelCDMProject*)node)->GetCMakeLists()->GetId();
238 newEvent->SetInt(CMId);
240 wxPostEvent(this->GetParent(), *newEvent);
247 void wxCDMBlackBoxHelpDialog::OnCMakeListsExit(wxMouseEvent& event)
249 if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_EDIT_CMAKELISTSFILE)
251 modelCDMIProjectTreeNode* node = this->blackBox;
252 while (node != NULL && dynamic_cast<modelCDMPackage*>(node) == NULL)
254 node = node->GetParent();
258 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
260 if(((modelCDMPackage*)node)->GetCMakeLists() != NULL)
262 int CMId = ((modelCDMPackage*)node)->GetCMakeLists()->GetId();
263 newEvent->SetInt(CMId);
265 wxPostEvent(this->GetParent(), *newEvent);
269 else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT)
271 modelCDMIProjectTreeNode* node = this->blackBox;
272 while (node != NULL && dynamic_cast<modelCDMProject*>(node) == NULL)
274 node = node->GetParent();
278 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
280 if(((modelCDMProject*)node)->GetCMakeLists() != NULL)
282 int CMId = ((modelCDMProject*)node)->GetCMakeLists()->GetId();
283 newEvent->SetInt(CMId);
285 wxPostEvent(this->GetParent(), *newEvent);
292 void wxCDMBlackBoxHelpDialog::OnDisableHelp(wxCommandEvent& event)
294 wxPostEvent(this->GetParent(), event);