1 #include <creaImageIOWxGimmickSettings.h>
6 //================================================================
7 WxGimmickSettings::WxGimmickSettings()
9 mMergeStudySeries(false)
13 mColour[DicomNode::Database] = wxColour(0,0,128);
14 mBgColour[DicomNode::Database] = wxColour(230,230,255);
16 mColour[DicomNode::Patient] = wxColour(255,0,0);
17 mBgColour[DicomNode::Patient] = wxColour(255,200,200);
19 mColour[DicomNode::Study] = wxColour(128,128,0);
20 mBgColour[DicomNode::Study] = wxColour(220,255,220);
23 mColour[DicomNode::Series] = wxColour(0,0,255);
24 mBgColour[DicomNode::Series] = wxColour(200,255,255);
26 mColour[DicomNode::Image] = wxColour(64,64,0);
27 mBgColour[DicomNode::Image] = wxColour(255,255,200);
29 mLoadedImageColour = wxColour(128,128,0);
34 GetColumnList(DicomNode::Database).push_back(Column("Name","Collection"));
35 GetColumnList(DicomNode::Database).push_back(Column("File name","File name"));
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"));
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"));
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"));
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"));
64 // Default comparators
65 LexicographicalDicomNodeComparator c("");
67 SetActiveComparatorIndex(DicomNode::Database,-1);
72 c.Add( new DicomNodePatientNameComparator );
73 GetComparatorsList(DicomNode::Patient).push_back(c);
77 c.Add( new DicomNodePatientSexComparator );
78 GetComparatorsList(DicomNode::Patient).push_back(c);
80 c.SetName("Birthday");
82 c.Add( new DicomNodePatientBirthdayComparator );
83 GetComparatorsList(DicomNode::Patient).push_back(c);
85 SetActiveComparatorIndex(DicomNode::Patient,0);
88 c.SetName("Description");
90 c.Add( new DicomNodeStudyDescriptionComparator );
91 GetComparatorsList(DicomNode::Study).push_back(c);
95 c.Add( new DicomNodeStudyDateComparator );
96 GetComparatorsList(DicomNode::Study).push_back(c);
98 SetActiveComparatorIndex(DicomNode::Study,0);
101 c.SetName("Modality");
103 c.Add( new DicomNodeModalityComparator );
104 GetComparatorsList(DicomNode::Series).push_back(c);
106 c.SetName("Description");
108 c.Add( new DicomNodeSeriesDescriptionComparator );
109 GetComparatorsList(DicomNode::Series).push_back(c);
113 c.Add( new DicomNodeSeriesDateComparator );
114 GetComparatorsList(DicomNode::Series).push_back(c);
116 SetActiveComparatorIndex(DicomNode::Series,0);
119 c.SetName("Ascending slice location");
121 c.Add( new DicomNodeSliceLocationComparator );
122 c.Add( new DicomNodeFullFileNameComparator );
123 GetComparatorsList(DicomNode::Image).push_back(c);
125 c.SetName("Descending slice location");
127 c.Add( new DicomNodeSliceLocationComparator(true) );
128 c.Add( new DicomNodeFullFileNameComparator );
129 GetComparatorsList(DicomNode::Image).push_back(c);
132 c.SetName("Ascending image number");
134 c.Add( new DicomNodeImageNumberComparator );
135 c.Add( new DicomNodeFullFileNameComparator );
136 GetComparatorsList(DicomNode::Image).push_back(c);
138 c.SetName("Descending image number");
140 c.Add( new DicomNodeImageNumberComparator(true) );
141 c.Add( new DicomNodeFullFileNameComparator );
142 GetComparatorsList(DicomNode::Image).push_back(c);
144 SetActiveComparatorIndex(DicomNode::Image,0);
147 //====================================================================
149 //====================================================================
150 WxGimmickSettings::~WxGimmickSettings()
152 for (int i=0;i<DicomNode::Image+1;++i)
154 ComparatorsList::iterator c;
155 for (c =GetComparatorsList(i).begin();
156 c!=GetComparatorsList(i).end();
159 c->DeleteComparators();
163 //====================================================================
165 //====================================================================
166 int WxGimmickSettings::GetMaxNumberOfColumns()
169 for (int i=0; i<5; i++)
171 if ( mColumnList[i].size() > n) n = mColumnList[i].size();
173 if (mMergeStudySeries)
175 unsigned int ss = mColumnList[DicomNode::Study].size() +
176 mColumnList[DicomNode::Series].size() ;
181 //====================================================================
185 //================================================================
186 //================================================================
187 //================================================================
188 //================================================================
190 //================================================================
191 WxGimmickSettingsDialog::WxGimmickSettingsDialog(wxWindow *parent,
192 WxGimmickSettings* settings)
208 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
212 wxSizer* bsizer = CreateSeparatedButtonSizer(wxOK|wxCANCEL);
213 mOkButton = (wxButton*)FindWindowById(GetAffirmativeId(), this);
214 mCancelButton = (wxButton*)FindWindowById(GetEscapeId(), this);
216 sizer->Add ( bsizer, 0, wxGROW );
221 //================================================================
223 //================================================================
224 WxGimmickSettingsDialog::~WxGimmickSettingsDialog()
227 //================================================================
230 //================================================================
231 //================================================================
232 //================================================================
233 //================================================================
235 //================================================================
236 WxGimmickHelp::WxGimmickHelp(wxWindow *parent)
246 //wxDEFAULT_FRAME_STYLE |
247 //wxFRAME_FLOAT_ON_PARENT
262 // SetBackgroundColour(*wxBLUE);
264 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
266 mText = new wxTextCtrl(this,
273 // |wxTE_PROCESS_ENTER
279 wxFont* FixedFont = new wxFont(10,
285 // wxTextAttr mwxInputTextAttr;
286 // mwxInputTextAttr.SetFont(*FixedFont);
287 // mwxInputTextAttr.SetBackgroundColour(*wxBLUE);
288 // mwxInputTextAttr.SetTextColour(*wxWHITE);
289 // mText->SetDefaultStyle(mwxInputTextAttr);
290 // mText->SetBackgroundColour(*wxBLUE);
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";
307 tip += " Remember then that *ALL ACTIONS* in Gimmick!\n";
308 tip += " are done by right clicking on the DICOM tree elements\n";
312 mText->AppendText(crea::std2wx(tip));
315 sizer->Add(mText,1,wxGROW);
318 wxSizer* bsizer = CreateSeparatedButtonSizer(wxOK);
319 mOkButton = (wxButton*)FindWindowById(GetAffirmativeId(), this);
321 sizer->Add ( bsizer, 0, wxGROW );
331 //================================================================
333 //================================================================
334 WxGimmickHelp::~WxGimmickHelp()
337 //================================================================