1 /*# ---------------------------------------------------------------------
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 # This software is governed by the CeCILL-B license under French law and
10 # abiding by the rules of distribution of free software. You can use,
11 # modify and/ or redistribute the software under the terms of the CeCILL-B
12 # license as circulated by CEA, CNRS and INRIA at the following URL
13 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 # or in the file LICENSE.txt.
16 # As a counterpart to the access to the source code and rights to copy,
17 # modify and redistribute granted by the license, users are provided only
18 # with a limited warranty and the software's author, the holder of the
19 # economic rights, and the successive licensors have only limited
22 # The fact that you are presently reading this means that you have had
23 # knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
26 #include "listConfigDialog.h"
28 namespace creaButtonContainer
33 ListConfigDialog::ListConfigDialog(wxWindow* parent, wxWindowID id,
34 const wxString& title, ListWx* modelList, ListWx* currentList) :
35 wxDialog(parent, id, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE)
37 this->m_OriginalListWx = modelList;
38 this->m_OriginalListWx->Reparent(this);
39 this->m_OriginalListWx->Show(true);
40 this->m_OriginalListWx->SetFunctorEnabled(false);
42 this->m_CurrentListWx = currentList;
43 this->m_CurrentListWx->Reparent(this);
44 this->m_CurrentListWx->SetFunctorEnabled(false);
45 this->m_CurrentListWx->Show(true);
46 this->m_LastStatus = this->m_CurrentListWx->GetListBox()->GetStrings();
48 wxGridBagSizer* dialogSizer = new wxGridBagSizer(0, 0);
49 dialogSizer->AddGrowableCol(0);
50 dialogSizer->AddGrowableRow(0);
53 wxGridBagSizer* topSizer = new wxGridBagSizer(0, 0);
54 topSizer->AddGrowableCol(0);
55 topSizer->AddGrowableCol(2);
56 topSizer->AddGrowableRow(0);
57 topSizer->Add(this->m_OriginalListWx, wxGBPosition(0, 0), wxDefaultSpan,
58 wxALL | wxEXPAND | wxALIGN_CENTER_HORIZONTAL
59 | wxALIGN_CENTER_VERTICAL, 5);
60 wxBoxSizer* boxSizer1 = new wxBoxSizer(wxVERTICAL);
62 wxBitmap AddIcon(ArrowNextG_xpm); //Icon of button
64 this->m_AddButton = new wxBitmapButton(this, 1, AddIcon,
65 wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW, wxDefaultValidator,
68 boxSizer1->Add(this->m_AddButton, 1,
69 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
71 wxBitmap DeleteIcon(ArrowBackG_xpm); //Icon of button
73 this->m_RemoveButton = new wxBitmapButton(this, 2, DeleteIcon,
74 wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW, wxDefaultValidator,
76 boxSizer1->Add(this->m_RemoveButton, 1,
77 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
78 topSizer->Add(boxSizer1, wxGBPosition(0, 1), wxDefaultSpan,
79 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
81 topSizer->Add(this->m_CurrentListWx, wxGBPosition(0, 2), wxDefaultSpan,
82 wxALL | wxEXPAND | wxALIGN_CENTER_HORIZONTAL
83 | wxALIGN_CENTER_VERTICAL, 5);
84 wxBoxSizer* boxSizer2 = new wxBoxSizer(wxVERTICAL);
86 wxBitmap TopIcon(ArrowTopG_xpm); //Icon of button
88 this->m_UpButton = new wxBitmapButton(this, 3, TopIcon,
89 wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW, wxDefaultValidator,
91 boxSizer2->Add(this->m_UpButton, 1,
92 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
95 wxBitmap DownIcon(ArrowDownG_xpm); //Icon of button
97 this->m_DownButton = new wxBitmapButton(this, 4, DownIcon,
98 wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW, wxDefaultValidator,
100 boxSizer2->Add(this->m_DownButton, 1,
101 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
102 topSizer->Add(boxSizer2, wxGBPosition(0, 3), wxDefaultSpan,
103 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
104 dialogSizer->Add(topSizer, wxGBPosition(0, 0), wxDefaultSpan,
105 wxALL | wxEXPAND | wxALIGN_CENTER_HORIZONTAL
106 | wxALIGN_CENTER_VERTICAL, 5);
110 wxBoxSizer* bottomSizer = new wxBoxSizer(wxHORIZONTAL);
111 bottomSizer->Add(0, 0, 1,
112 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
113 this->m_CancelButton = new wxButton(this, 5, _("Cancel"),
114 wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
116 bottomSizer->Add(this->m_CancelButton, 1,
117 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
118 this->m_OkButton = new wxButton(this, 6, _("Ok"), wxDefaultPosition,
119 wxDefaultSize, 0, wxDefaultValidator, _T("Ok"));
120 bottomSizer->Add(this->m_OkButton, 1,
121 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
122 bottomSizer->Add(0, 0, 1,
123 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
124 dialogSizer->Add(bottomSizer, wxGBPosition(1, 0), wxDefaultSpan,
125 wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
126 this->SetSizer(dialogSizer);
127 dialogSizer->Fit(this);
128 dialogSizer->SetSizeHints(this);
131 //---------------------------------------------------------------------------------------------
134 Connect(1, wxEVT_COMMAND_BUTTON_CLICKED,
135 (wxObjectEventFunction) &ListConfigDialog::OnAdd);
138 Connect(2, wxEVT_COMMAND_BUTTON_CLICKED,
139 (wxObjectEventFunction) &ListConfigDialog::OnDelete);
142 Connect(3, wxEVT_COMMAND_BUTTON_CLICKED,
143 (wxObjectEventFunction) &ListConfigDialog::OnMoveUp);
146 Connect(4, wxEVT_COMMAND_BUTTON_CLICKED,
147 (wxObjectEventFunction) &ListConfigDialog::OnMoveDown);
150 Connect(5, wxEVT_COMMAND_BUTTON_CLICKED,
151 (wxObjectEventFunction) &ListConfigDialog::OnCancel);
154 Connect(6, wxEVT_COMMAND_BUTTON_CLICKED,
155 (wxObjectEventFunction) &ListConfigDialog::OnOk);
159 ListConfigDialog::~ListConfigDialog()
164 void ListConfigDialog::OnAdd(wxCommandEvent& event)
166 wxString itSelect = m_OriginalListWx->GetListBox()->GetStringSelection();
167 std::cout << "Count = " << this->m_CurrentListWx->GetListBox()->GetCount()
169 if (!itSelect.IsEmpty())
171 int v = this->m_CurrentListWx->GetListBox()->FindString(itSelect);
174 this->m_CurrentListWx->GetListBox()->Append(itSelect);
175 this->m_CurrentListWx->GetListBox()->Update();
180 void ListConfigDialog::OnDelete(wxCommandEvent& event)
182 wxString itSelect = m_CurrentListWx->GetListBox()->GetStringSelection();
184 if (!itSelect.IsEmpty())
186 int v = this->m_CurrentListWx->GetListBox()->FindString(itSelect);
189 this->m_CurrentListWx->GetListBox()->Delete(v);
190 this->m_CurrentListWx->GetListBox()->Update();
194 void ListConfigDialog::OnMoveUp(wxCommandEvent& event)
196 wxString itSelect = m_CurrentListWx->GetListBox()->GetStringSelection();
198 if (!itSelect.IsEmpty())
200 int v = this->m_CurrentListWx->GetListBox()->FindString(itSelect);
203 this->m_CurrentListWx->GetListBox()->Delete(v);
204 this->m_CurrentListWx->GetListBox()->Insert(itSelect, v - 1);
205 this->m_CurrentListWx->GetListBox()->Update();
210 void ListConfigDialog::OnMoveDown(wxCommandEvent& event)
212 wxString itSelect = m_CurrentListWx->GetListBox()->GetStringSelection();
214 if (!itSelect.IsEmpty())
216 int v = this->m_CurrentListWx->GetListBox()->FindString(itSelect);
217 std::cout << "Count = "
218 << this->m_CurrentListWx->GetListBox()->GetCount() << std::endl;
219 if ((v < this->m_CurrentListWx->GetListBox()->GetCount() - 1)
222 this->m_CurrentListWx->GetListBox()->Delete(v);
223 this->m_CurrentListWx->GetListBox()->Insert(itSelect, v + 1);
224 this->m_CurrentListWx->GetListBox()->Update();
229 void ListConfigDialog::OnOk(wxCommandEvent& event)
234 void ListConfigDialog::OnCancel(wxCommandEvent& event)
237 this->m_CurrentListWx->GetListBox()->Clear();
238 this->m_CurrentListWx->GetListBox()->Append(this->m_LastStatus);