NIREP

PairwiseComparison.cpp

Go to the documentation of this file.
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 }
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines