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_LISTBOX_SELECTED);
160 if(((modelCDMPackage*)node)->GetCMakeLists() != NULL)
162 newEvent->SetClientData(((modelCDMPackage*)node)->GetCMakeLists());
164 wxPostEvent(this->GetParent(), *newEvent);
169 wxMessageBox(crea::std2wx("No project CMakeLists file was found."),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
172 else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT)
174 modelCDMIProjectTreeNode* node = this->blackBox;
175 while (node != NULL && dynamic_cast<modelCDMProject*>(node) == NULL)
177 node = node->GetParent();
181 if(!((modelCDMProject*)node)->OpenCMakeListsFile(result))
182 wxMessageBox(crea::std2wx(*result),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
184 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
186 if(((modelCDMProject*)node)->GetCMakeLists() != NULL)
188 newEvent->SetClientData(((modelCDMProject*)node)->GetCMakeLists());
190 wxPostEvent(this->GetParent(), *newEvent);
195 wxMessageBox(crea::std2wx("No project CMakeLists file was found."),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
200 void wxCDMBlackBoxHelpDialog::OnCMakeListsEnter(wxMouseEvent& event)
202 if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_EDIT_CMAKELISTSFILE)
204 modelCDMIProjectTreeNode* node = this->blackBox;
205 while (node != NULL && dynamic_cast<modelCDMPackage*>(node) == NULL)
207 node = node->GetParent();
211 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
213 if(((modelCDMPackage*)node)->GetCMakeLists() != NULL)
215 newEvent->SetClientData(((modelCDMPackage*)node)->GetCMakeLists());
217 wxPostEvent(this->GetParent(), *newEvent);
221 else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT)
223 modelCDMIProjectTreeNode* node = this->blackBox;
224 while (node != NULL && dynamic_cast<modelCDMProject*>(node) == NULL)
226 node = node->GetParent();
230 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
232 if(((modelCDMProject*)node)->GetCMakeLists() != NULL)
234 newEvent->SetClientData(((modelCDMProject*)node)->GetCMakeLists());
236 wxPostEvent(this->GetParent(), *newEvent);
243 void wxCDMBlackBoxHelpDialog::OnCMakeListsExit(wxMouseEvent& event)
245 if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_EDIT_CMAKELISTSFILE)
247 modelCDMIProjectTreeNode* node = this->blackBox;
248 while (node != NULL && dynamic_cast<modelCDMPackage*>(node) == NULL)
250 node = node->GetParent();
254 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
256 if(((modelCDMPackage*)node)->GetCMakeLists() != NULL)
258 newEvent->SetClientData(((modelCDMPackage*)node)->GetCMakeLists());
260 wxPostEvent(this->GetParent(), *newEvent);
264 else if(((wxButton*)event.GetEventObject())->GetId() == ID_BUTTON_OPENPROJECT)
266 modelCDMIProjectTreeNode* node = this->blackBox;
267 while (node != NULL && dynamic_cast<modelCDMProject*>(node) == NULL)
269 node = node->GetParent();
273 wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
275 if(((modelCDMProject*)node)->GetCMakeLists() != NULL)
277 newEvent->SetClientData(((modelCDMProject*)node)->GetCMakeLists());
279 wxPostEvent(this->GetParent(), *newEvent);
286 void wxCDMBlackBoxHelpDialog::OnDisableHelp(wxCommandEvent& event)
288 wxPostEvent(this->GetParent(), event);