NIREP
|
00001 00002 // Name: PairwiseComparison.cpp 00003 // Purpose: 00004 // Author: 00005 // Modified by: 00006 // Created: 01/07/2010 14:31:56 00007 // RCS-ID: 00008 // Copyright: 00009 // Licence: 00011 00012 // For compilers that support precompilation, includes "wx/wx.h". 00013 #include "wx/wxprec.h" 00014 00015 #ifdef __BORLANDC__ 00016 #pragma hdrstop 00017 #endif 00018 00019 #ifndef WX_PRECOMP 00020 #include "wx/wx.h" 00021 #endif 00022 00025 00026 #include "PairwiseComparison.h" 00027 #include "NIREPDisplay.h" 00028 00030 00032 00033 00034 /* 00035 * PairwiseComparison type definition 00036 */ 00037 00038 IMPLEMENT_CLASS( PairwiseComparison, wxFrame ) 00039 00040 00041 /* 00042 * PairwiseComparison event table definition 00043 */ 00044 00045 BEGIN_EVENT_TABLE( PairwiseComparison, wxFrame ) 00046 00048 EVT_BUTTON( ID_BUTTON, PairwiseComparison::OnAddRDLClick ) 00049 00050 EVT_BUTTON( ID_BUTTON1, PairwiseComparison::OnButton1Click ) 00051 00052 EVT_BUTTON( ID_CANCEL, PairwiseComparison::OnCancelClick ) 00053 00055 00056 END_EVENT_TABLE() 00057 00058 00059 /* 00060 * PairwiseComparison constructors 00061 */ 00062 00063 PairwiseComparison::PairwiseComparison() 00064 { 00065 Init(); 00066 } 00067 00068 PairwiseComparison::PairwiseComparison( wxWindow* parent,DisplayDescription *dd, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) 00069 { 00070 m_parent = static_cast<NIREPDisplay*>(parent); 00071 m_displayDescription = dd; 00072 Init(); 00073 Create( parent, id, caption, pos, size, style ); 00074 } 00075 00076 00077 /* 00078 * PairwiseComparison creator 00079 */ 00080 00081 bool PairwiseComparison::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) 00082 { 00084 wxFrame::Create( parent, id, caption, pos, size, style ); 00085 00086 CreateControls(); 00087 Centre(); 00089 return true; 00090 } 00091 00092 00093 /* 00094 * PairwiseComparison destructor 00095 */ 00096 00097 PairwiseComparison::~PairwiseComparison() 00098 { 00101 } 00102 00103 00104 /* 00105 * Member initialisation 00106 */ 00107 00108 void PairwiseComparison::Init() 00109 { 00110 m_modality = NULL; 00111 m_image1 = NULL; 00112 m_image2 = NULL; 00113 m_resourceDescriptionListFiles = NULL; 00114 m_namespace = NULL; 00115 } 00116 00117 00118 /* 00119 * Control creation for PairwiseComparison 00120 */ 00121 00122 void PairwiseComparison::CreateControls() 00123 { 00125 PairwiseComparison* itemFrame1 = this; 00126 00127 wxPanel* itemPanel2 = new wxPanel( itemFrame1, ID_PANEL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); 00128 00129 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL); 00130 itemPanel2->SetSizer(itemBoxSizer3); 00131 00132 wxStaticText* itemStaticText4 = new wxStaticText( itemPanel2, wxID_STATIC, _("Pairwise Comparison"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT ); 00133 itemStaticText4->SetFont(wxFont(16, wxSWISS, wxNORMAL, wxNORMAL, false, wxT("Tahoma"))); 00134 itemBoxSizer3->Add(itemStaticText4, 0, wxALIGN_LEFT|wxALL, 5); 00135 00136 wxStaticLine* itemStaticLine5 = new wxStaticLine( itemPanel2, wxID_STATIC, wxDefaultPosition, wxSize(300, -1), wxLI_HORIZONTAL ); 00137 itemBoxSizer3->Add(itemStaticLine5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00138 00139 wxPanel* itemPanel6 = new wxPanel( itemPanel2, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxSTATIC_BORDER|wxTAB_TRAVERSAL ); 00140 itemBoxSizer3->Add(itemPanel6, 0, wxALIGN_LEFT|wxALL, 5); 00141 00142 wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxVERTICAL); 00143 itemPanel6->SetSizer(itemBoxSizer7); 00144 00145 wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxVERTICAL); 00146 itemBoxSizer7->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00147 00148 wxStaticText* itemStaticText9 = new wxStaticText( itemPanel6, wxID_STATIC, _("Resource Description List Files"), wxDefaultPosition, wxDefaultSize, 0 ); 00149 itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_LEFT|wxALL, 5); 00150 00151 wxArrayString itemListBox10Strings; 00152 std::vector<std::string > *fileNames = this->m_displayDescription->GetRDL()->CreateRDLFilenameList(); 00153 if(fileNames != NULL) { 00154 for(int i = 0; i< fileNames->size();i++) { 00155 itemListBox10Strings.Add(wxString(fileNames->at(i).c_str(), wxConvUTF8)); 00156 } 00157 00158 delete fileNames; 00159 fileNames = NULL; 00160 } 00161 00162 00163 m_resourceDescriptionListFiles = new wxListBox( itemPanel6, ID_LISTBOX, wxDefaultPosition, wxSize(259, -1), itemListBox10Strings, wxLB_SINGLE|wxLB_NEEDED_SB|wxLB_HSCROLL ); 00164 itemBoxSizer8->Add(m_resourceDescriptionListFiles, 0, wxALIGN_LEFT|wxALL, 5); 00165 00166 wxButton *m_addRDL = new wxButton( itemPanel6, ID_BUTTON, _("Add Resource Description List"), wxDefaultPosition, wxDefaultSize, 0 ); 00167 itemBoxSizer7->Add(m_addRDL, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00168 00169 wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxHORIZONTAL); 00170 itemBoxSizer3->Add(itemBoxSizer12, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00171 00172 wxStaticText* itemStaticText13 = new wxStaticText( itemPanel2, wxID_STATIC, _("Namespace"), wxDefaultPosition, wxDefaultSize, 0 ); 00173 itemBoxSizer12->Add(itemStaticText13, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00174 00175 m_namespace = new wxComboBox( itemPanel2, ID_COMBOCTRL1, wxEmptyString, wxDefaultPosition, wxSize(200, -1), 0 ); 00176 itemBoxSizer12->Add(m_namespace, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00177 00178 std::vector<std::string> * namespace_list = this->m_displayDescription->GetRDL()->CreateNameSpaceList(); 00179 if(namespace_list != NULL) { 00180 for(unsigned int i=0; i< namespace_list->size(); i++) { 00181 m_namespace->Append(wxString(namespace_list->at(i).c_str(), wxConvUTF8) ); 00182 } 00183 delete namespace_list; 00184 namespace_list = NULL; 00185 } 00186 00187 00188 wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxHORIZONTAL); 00189 itemBoxSizer3->Add(itemBoxSizer15, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00190 00191 wxStaticText* itemStaticText16 = new wxStaticText( itemPanel2, wxID_STATIC, _("Modality"), wxDefaultPosition, wxDefaultSize, 0 ); 00192 itemBoxSizer15->Add(itemStaticText16, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00193 00194 m_modality = new wxComboBox( itemPanel2, ID_COMBOCTRL2, wxEmptyString, wxDefaultPosition, wxSize(200, -1), 0 ); 00195 itemBoxSizer15->Add(m_modality, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00196 00197 std::vector<std::string> * label_list = this->m_displayDescription->GetRDL()->CreateLabelList(); 00198 if(label_list != NULL) { 00199 for(unsigned int i=0; i< label_list->size(); i++) { 00200 m_modality->Append(wxString(label_list->at(i).c_str(), wxConvUTF8) ); 00201 } 00202 00203 delete label_list; 00204 label_list = NULL; 00205 } 00206 00207 00208 wxStaticLine* itemStaticLine18 = new wxStaticLine( itemPanel2, wxID_STATIC, wxDefaultPosition, wxSize(285, 1), wxLI_HORIZONTAL ); 00209 itemBoxSizer3->Add(itemStaticLine18, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00210 00211 wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxHORIZONTAL); 00212 itemBoxSizer3->Add(itemBoxSizer19, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00213 00214 wxStaticText* itemStaticText20 = new wxStaticText( itemPanel2, wxID_STATIC, _("Image 1"), wxDefaultPosition, wxDefaultSize, 0 ); 00215 itemBoxSizer19->Add(itemStaticText20, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00216 00217 m_image1 = new wxComboBox( itemPanel2, ID_COMBOCTRL3, wxEmptyString, wxDefaultPosition, wxSize(200, -1), 0 ); 00218 itemBoxSizer19->Add(m_image1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00219 00220 wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxHORIZONTAL); 00221 itemBoxSizer3->Add(itemBoxSizer22, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00222 00223 wxStaticText* itemStaticText23 = new wxStaticText( itemPanel2, wxID_STATIC, _("Image 2"), wxDefaultPosition, wxDefaultSize, 0 ); 00224 itemBoxSizer22->Add(itemStaticText23, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00225 00226 m_image2 = new wxComboBox( itemPanel2, ID_COMBOCTRL4, wxEmptyString, wxDefaultPosition, wxSize(200, -1), 0 ); 00227 itemBoxSizer22->Add(m_image2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00228 00229 std::vector<std::string> * cs_list = this->m_displayDescription->GetRDL()->CreateCSList(); 00230 if(cs_list != NULL) { 00231 for(unsigned int i=0; i< cs_list->size(); i++) { 00232 m_image2->Append(wxString(cs_list->at(i).c_str(), wxConvUTF8) ); 00233 m_image1->Append(wxString(cs_list->at(i).c_str(), wxConvUTF8) ); 00234 } 00235 delete cs_list; 00236 cs_list = NULL; 00237 } 00238 00239 wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL); 00240 itemBoxSizer3->Add(itemBoxSizer25, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); 00241 00242 wxButton* itemButton26 = new wxButton( itemPanel2, ID_BUTTON1, _("Ok"), wxDefaultPosition, wxDefaultSize, 0 ); 00243 itemButton26->SetDefault(); 00244 itemBoxSizer25->Add(itemButton26, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00245 00246 wxButton* itemButton27 = new wxButton( itemPanel2, ID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); 00247 itemBoxSizer25->Add(itemButton27, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 00248 00250 } 00251 00252 00253 /* 00254 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON 00255 */ 00256 00257 void PairwiseComparison::OnAddRDLClick( wxCommandEvent& event ) 00258 { 00259 wxFileDialog * filedialog = new wxFileDialog(this, wxT("Choose a Resource Description List"), wxT(""), wxT("*.*"), wxT("*.*")); 00260 if( filedialog->ShowModal() == wxID_CANCEL ){ delete filedialog; return;} 00261 wxString path = filedialog->GetPath(); 00262 00263 this->m_displayDescription->GetRDL()->AddRDL(std::string(path.mb_str()), new ResourceDescriptionList(std::string(path.mb_str() ) ) ); 00264 std::vector<std::string > *fileNames = this->m_displayDescription->GetRDL()->CreateRDLFilenameList(); 00265 if(fileNames != NULL) { 00266 m_resourceDescriptionListFiles->Clear(); 00267 for(int i = 0; i< fileNames->size();i++) { 00268 m_resourceDescriptionListFiles->Append(wxString(fileNames->at(i).c_str(), wxConvUTF8)); 00269 } 00270 delete fileNames; 00271 fileNames = NULL; 00272 } 00273 00274 00275 m_image1->Clear(); 00276 m_image2->Clear(); 00277 m_namespace->Clear(); 00278 m_modality->Clear(); 00279 00280 std::vector<std::string> * namespace_list = this->m_displayDescription->GetRDL()->CreateNameSpaceList(); 00281 if(namespace_list != NULL) { 00282 for(unsigned int i=0; i< namespace_list->size(); i++) { 00283 m_namespace->Append(wxString(namespace_list->at(i).c_str(), wxConvUTF8) ); 00284 } 00285 delete namespace_list; 00286 namespace_list = NULL; 00287 } 00288 00289 std::vector<std::string> * label_list = this->m_displayDescription->GetRDL()->CreateLabelList(); 00290 if(label_list != NULL) { 00291 for(unsigned int i=0; i< label_list->size(); i++) { 00292 m_modality->Append(wxString(label_list->at(i).c_str(), wxConvUTF8) ); 00293 } 00294 00295 delete label_list; 00296 label_list = NULL; 00297 } 00298 00299 std::vector<std::string> * cs_list = this->m_displayDescription->GetRDL()->CreateCSList(); 00300 if(cs_list != NULL) { 00301 for(unsigned int i=0; i< cs_list->size(); i++) { 00302 m_image2->Append(wxString(cs_list->at(i).c_str(), wxConvUTF8) ); 00303 m_image1->Append(wxString(cs_list->at(i).c_str(), wxConvUTF8) ); 00304 } 00305 delete cs_list; 00306 cs_list = NULL; 00307 } 00308 } 00309 00310 00311 /* 00312 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON1 00313 */ 00314 00315 void PairwiseComparison::OnButton1Click( wxCommandEvent& event ) 00316 { 00317 wxString image1 = m_namespace->GetValue(); 00318 wxString image2 = m_namespace->GetValue(); 00319 image1.Append(wxT("|")); 00320 image1.Append(m_image1->GetValue()); 00321 image2.Append(wxT("|")); 00322 image2.Append(m_image2->GetValue()); 00323 //Read in the display description and then start to modify the variables 00324 //in memory to fit what the user selected to be compared. 00325 this->m_displayDescription->Read("./MenuOptions/AlgorithmViewer.txt"); 00326 std::map<std::string, std::string> temp = *this->m_displayDescription->GetVariableList()->GetVariableList(); 00327 this->m_displayDescription->GetVariableList()->ClearList(); 00328 00329 //Hard coding the variables names from what is inside of AlgorithmViewer.txt. If the variable 00330 //names change in AlgorithmViewer.txt, then these variables need to be changes. 00331 this->m_displayDescription->GetVariableList()->SetVariable("MODALITY", std::string(m_modality->GetValue().mb_str())); 00332 this->m_displayDescription->GetVariableList()->SetVariable("SOURCE", std::string(image1.mb_str())); 00333 this->m_displayDescription->GetVariableList()->SetVariable("TARGET", std::string(image2.mb_str())); 00334 00335 //Makes sure that all the the items in the display are removed 00336 this->m_parent->RemoveAll(); 00337 00338 //Create a new display based on AlgorithmViewer.txt and the variables that the user 00339 //selected 00340 this->m_parent->CreateGrid(); 00341 00342 //Destroy this GUI, this is wxWidgets magic 00343 Destroy(); 00344 } 00345 00346 00347 /* 00348 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CANCEL 00349 */ 00350 00351 void PairwiseComparison::OnCancelClick( wxCommandEvent& event ) 00352 { 00354 // Before editing this code, remove the block markers. 00355 Destroy(); 00357 } 00358 00359 00360 /* 00361 * Should we show tooltips? 00362 */ 00363 00364 bool PairwiseComparison::ShowToolTips() 00365 { 00366 return true; 00367 } 00368 00369 /* 00370 * Get bitmap resources 00371 */ 00372 00373 wxBitmap PairwiseComparison::GetBitmapResource( const wxString& name ) 00374 { 00375 // Bitmap retrieval 00377 wxUnusedVar(name); 00378 return wxNullBitmap; 00380 } 00381 00382 /* 00383 * Get icon resources 00384 */ 00385 00386 wxIcon PairwiseComparison::GetIconResource( const wxString& name ) 00387 { 00388 // Icon retrieval 00390 wxUnusedVar(name); 00391 return wxNullIcon; 00393 }