]> Creatis software - creaImageIO.git/blob - src/creaImageIOWxGimmickSettings.cpp
683ec5e7af2d01c1c86076fdc82b06bbd1d874fe
[creaImageIO.git] / src / creaImageIOWxGimmickSettings.cpp
1 #include <creaImageIOWxGimmickSettings.h>
2
3
4 namespace creaImageIO
5 {
6  //================================================================
7   WxGimmickSettings::WxGimmickSettings()
8     :
9     mMergeStudySeries(false)
10     
11   {
12     // Defaults colours 
13     mColour[DicomNode::Database] = wxColour(0,0,128);
14     mBgColour[DicomNode::Database] = wxColour(230,230,255);
15
16     mColour[DicomNode::Patient] = wxColour(255,0,0);
17     mBgColour[DicomNode::Patient] = wxColour(255,200,200);
18
19     mColour[DicomNode::Study] = wxColour(128,128,0);
20     mBgColour[DicomNode::Study] = wxColour(220,255,220);
21
22
23     mColour[DicomNode::Series] = wxColour(0,0,255);
24     mBgColour[DicomNode::Series] = wxColour(200,255,255);
25
26     mColour[DicomNode::Image] = wxColour(64,64,0);
27     mBgColour[DicomNode::Image] = wxColour(255,255,200);
28
29     mLoadedImageColour = wxColour(128,128,0);
30
31
32     // Default columns 
33     // Database
34     GetColumnList(DicomNode::Database).push_back(Column("Name","Collection"));
35     GetColumnList(DicomNode::Database).push_back(Column("File name","File name"));
36     // Patient
37     GetColumnList(DicomNode::Patient).push_back(Column("A0010_0010","Patient's name"));
38     GetColumnList(DicomNode::Patient).push_back(Column("A0010_0040","Sex"));
39     GetColumnList(DicomNode::Patient).push_back(Column("A0010_0030","Birthday"));
40     
41     // Study
42     GetColumnList(DicomNode::Study).push_back(Column("A0008_1030","Study Description"));
43     GetColumnList(DicomNode::Study).push_back(Column("A0008_0020","Study Date"));
44     GetColumnList(DicomNode::Study).push_back(Column("A0008_0030","Study Time"));
45     GetColumnList(DicomNode::Study).push_back(Column("A0008_0005","Specific Character Set"));
46
47     // Series
48     GetColumnList(DicomNode::Series).push_back(Column("A0008_0060","Modality"));
49     GetColumnList(DicomNode::Series).push_back(Column("A0008_103E","Description"));
50     GetColumnList(DicomNode::Series).push_back(Column("A0018_1030","Protocol Name"));
51     GetColumnList(DicomNode::Series).push_back(Column("A0008_0080","Institution Name"));
52     GetColumnList(DicomNode::Series).push_back(Column("A0008_1010","Station Name"));
53
54     // Image
55     GetColumnList(DicomNode::Image).push_back(Column("A0004_1500","File name"));
56     GetColumnList(DicomNode::Image).push_back(Column("A0020_0013","Image Number"));
57     GetColumnList(DicomNode::Image).push_back(Column("A0020_1041","Slice Location"));
58     GetColumnList(DicomNode::Image).push_back(Column("A0020_0032","Image Position Patient"));
59     GetColumnList(DicomNode::Image).push_back(Column("A0020_0037","Image Orientation Patient"));
60     GetColumnList(DicomNode::Image).push_back(Column("A0028_0010","Rows"));
61     GetColumnList(DicomNode::Image).push_back(Column("A0028_0011","Columns"));
62     
63
64     // Default comparators
65     LexicographicalDicomNodeComparator c("");
66
67     SetActiveComparatorIndex(DicomNode::Database,-1);
68
69     // Patient
70     c.SetName("Name");
71     c.Clear();
72     c.Add( new DicomNodePatientNameComparator );
73     GetComparatorsList(DicomNode::Patient).push_back(c);
74
75     c.SetName("Sex");
76     c.Clear();
77     c.Add( new DicomNodePatientSexComparator );
78     GetComparatorsList(DicomNode::Patient).push_back(c);
79
80     c.SetName("Birthday");
81     c.Clear();
82     c.Add( new DicomNodePatientBirthdayComparator );
83     GetComparatorsList(DicomNode::Patient).push_back(c);
84
85     SetActiveComparatorIndex(DicomNode::Patient,0);
86
87     // Study
88     c.SetName("Description");
89     c.Clear();
90     c.Add( new DicomNodeStudyDescriptionComparator );
91     GetComparatorsList(DicomNode::Study).push_back(c);
92
93     c.SetName("Date");
94     c.Clear();
95     c.Add( new DicomNodeStudyDateComparator );
96     GetComparatorsList(DicomNode::Study).push_back(c);
97
98     SetActiveComparatorIndex(DicomNode::Study,0);
99
100     // Series
101     c.SetName("Modality");
102     c.Clear();
103     c.Add( new DicomNodeModalityComparator );
104     GetComparatorsList(DicomNode::Series).push_back(c);
105
106     c.SetName("Description");
107     c.Clear();
108     c.Add( new DicomNodeSeriesDescriptionComparator );
109     GetComparatorsList(DicomNode::Series).push_back(c);
110
111     c.SetName("Date");
112     c.Clear();
113     c.Add( new DicomNodeSeriesDateComparator );
114     GetComparatorsList(DicomNode::Series).push_back(c);
115
116     SetActiveComparatorIndex(DicomNode::Series,0);
117
118     // Image    
119     c.SetName("Ascending slice location");
120     c.Clear();
121     c.Add( new DicomNodeSliceLocationComparator );
122     c.Add( new DicomNodeFullFileNameComparator );
123     GetComparatorsList(DicomNode::Image).push_back(c);
124     
125     c.SetName("Descending slice location");
126     c.Clear();
127     c.Add( new DicomNodeSliceLocationComparator(true) );
128     c.Add( new DicomNodeFullFileNameComparator );
129     GetComparatorsList(DicomNode::Image).push_back(c);
130
131
132     c.SetName("Ascending image number");
133     c.Clear();
134     c.Add( new DicomNodeImageNumberComparator );
135     c.Add( new DicomNodeFullFileNameComparator );
136     GetComparatorsList(DicomNode::Image).push_back(c);
137
138     c.SetName("Descending image number");
139     c.Clear();
140     c.Add( new DicomNodeImageNumberComparator(true) );
141     c.Add( new DicomNodeFullFileNameComparator );
142     GetComparatorsList(DicomNode::Image).push_back(c);
143
144     SetActiveComparatorIndex(DicomNode::Image,0);
145
146   }
147   //====================================================================
148
149   //====================================================================
150   WxGimmickSettings::~WxGimmickSettings()
151   {
152     for (int i=0;i<DicomNode::Image+1;++i) 
153       {
154         ComparatorsList::iterator c;
155         for (c =GetComparatorsList(i).begin();
156              c!=GetComparatorsList(i).end();
157              ++c)
158           {
159             c->DeleteComparators();
160           }
161       }
162   }
163   //====================================================================
164
165   //====================================================================
166   int  WxGimmickSettings::GetMaxNumberOfColumns()
167   {
168     unsigned int n = 0;
169     for (int i=0; i<5; i++)
170       {
171         if ( mColumnList[i].size() > n)  n = mColumnList[i].size();
172       }
173     if (mMergeStudySeries)
174       {
175         unsigned int ss =  mColumnList[DicomNode::Study].size() + 
176           mColumnList[DicomNode::Series].size() ;
177         if (ss>n) n=ss;
178       }
179     return n;
180   }
181   //====================================================================
182
183
184
185   //================================================================
186   //================================================================
187   //================================================================
188   //================================================================
189
190   //================================================================
191   WxGimmickSettingsDialog::WxGimmickSettingsDialog(wxWindow *parent,
192                                                    WxGimmickSettings* settings)
193     : 
194     wxDialog( parent, 
195               -1, 
196               _T("Settings"),
197               wxDefaultPosition,
198               wxSize(400,400),
199               wxRESIZE_BORDER | 
200               wxSYSTEM_MENU  |
201               wxCLOSE_BOX |
202               wxMAXIMIZE_BOX | 
203               wxMINIMIZE_BOX | 
204               wxCAPTION  
205               ),
206     mSettings(settings)
207   {
208     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
209     
210     
211
212     wxSizer* bsizer = CreateSeparatedButtonSizer(wxOK|wxCANCEL);
213     mOkButton = (wxButton*)FindWindowById(GetAffirmativeId(), this);
214     mCancelButton = (wxButton*)FindWindowById(GetEscapeId(), this);
215     
216     sizer->Add ( bsizer, 0, wxGROW );
217
218     SetSizer( sizer );     
219     Layout(); 
220   } 
221   //================================================================
222     
223   //================================================================
224   WxGimmickSettingsDialog::~WxGimmickSettingsDialog()
225   {
226   }
227   //================================================================
228
229     
230   //================================================================
231   //================================================================
232   //================================================================
233   //================================================================
234
235   //================================================================
236   WxGimmickHelp::WxGimmickHelp(wxWindow *parent)
237     : 
238     wxPanel( parent, -1)
239                               /*
240               -1, 
241               _T("Gimmick! Help"),
242               wxDefaultPosition,
243               wxSize(600,500),
244               
245               
246               //wxDEFAULT_FRAME_STYLE | 
247               //wxFRAME_FLOAT_ON_PARENT 
248               
249              
250               wxBORDER_SIMPLE
251               // wxRESIZE_BORDER | 
252               //wxSYSTEM_MENU  |
253               //wxCLOSE_BOX |
254               //              wxMAXIMIZE_BOX | 
255               //wxMINIMIZE_BOX | 
256               //wxCAPTION 
257               
258
259               )
260                               */
261   {
262     //    SetBackgroundColour(*wxBLUE);
263
264     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
265     
266     mText = new wxTextCtrl(this,
267                            -1, //ID_InputText,
268                            _T(""),
269                            wxDefaultPosition,
270                            wxDefaultSize,
271                            wxTE_READONLY |
272                            wxTE_MULTILINE 
273                            //    |wxTE_PROCESS_ENTER
274                            //| wxTE_PROCESS_TAB 
275                            //               | wxWANTS_CHARS 
276                            // |  wxTAB_TRAVERSAL
277                            );
278    
279     wxFont* FixedFont = new wxFont(10,
280                                    wxFONTFAMILY_MODERN,
281                                    wxFONTSTYLE_NORMAL,
282                                    wxFONTWEIGHT_NORMAL,
283                                    false);
284     
285     //    wxTextAttr mwxInputTextAttr;
286     //    mwxInputTextAttr.SetFont(*FixedFont);
287     //    mwxInputTextAttr.SetBackgroundColour(*wxBLUE);
288     //    mwxInputTextAttr.SetTextColour(*wxWHITE);
289     //    mText->SetDefaultStyle(mwxInputTextAttr);
290     //    mText->SetBackgroundColour(*wxBLUE);
291
292     std::string tip("\n");
293     tip += "           Welcome to Gimmick !\n";
294     tip += "    ( Give me my medical images quick ! )\n\n\n";
295     tip += "  To start you must create a 'Collection' :\n";
296     tip += "     1) Right click on 'Collection'\n";
297     tip += "     2) Select 'New collection'\n";
298     tip += "     3) Enter the collection file name and the collection name\n\n";
299     tip += "  To add images to your collection :\n";
300     tip += "     1) Right click on your collection\n";
301     tip += "     2) Select 'Add image(s) to collection'\n";
302     tip += "     3) Select :\n";
303     tip += "        * 'Scan Directory' to add all images of a directory or\n";
304     tip += "        * 'Select File(s)' to add only some selected images\n";
305     tip += "     4) Select the directory or the files to add\n";
306     tip += "\n\n";
307     tip += "  Remember then that *ALL ACTIONS* in Gimmick!\n";
308     tip += "  are done by right clicking on the DICOM tree elements\n";
309     tip += "\n";
310     tip += "                                Enjoy!\n";
311
312     mText->AppendText(crea::std2wx(tip));
313
314
315     sizer->Add(mText,1,wxGROW);
316  
317     /*
318     wxSizer* bsizer = CreateSeparatedButtonSizer(wxOK);
319     mOkButton = (wxButton*)FindWindowById(GetAffirmativeId(), this);
320     
321     sizer->Add ( bsizer, 0, wxGROW );
322     */
323
324     SetSizer(sizer);
325     SetAutoLayout(true);
326     Layout();
327     
328     
329     
330   } 
331   //================================================================
332     
333   //================================================================
334   WxGimmickHelp::~WxGimmickHelp()
335   {
336   }
337   //================================================================
338
339
340
341
342
343 }