#include namespace creaImageIO { //================================================================ WxGimmickSettings::WxGimmickSettings() : mMergeStudySeries(false) { // Defaults colours mColour[DicomNode::Database] = wxColour(0,0,128); mBgColour[DicomNode::Database] = wxColour(230,230,255); mColour[DicomNode::Patient] = wxColour(255,0,0); mBgColour[DicomNode::Patient] = wxColour(255,200,200); mColour[DicomNode::Study] = wxColour(128,128,0); mBgColour[DicomNode::Study] = wxColour(220,255,220); mColour[DicomNode::Series] = wxColour(0,0,255); mBgColour[DicomNode::Series] = wxColour(200,255,255); mColour[DicomNode::Image] = wxColour(64,64,0); mBgColour[DicomNode::Image] = wxColour(255,255,200); mLoadedImageColour = wxColour(128,128,0); // Default columns // Database GetColumnList(DicomNode::Database).push_back(Column("Name","Collection")); GetColumnList(DicomNode::Database).push_back(Column("File name","File name")); // Patient GetColumnList(DicomNode::Patient).push_back(Column("A0010_0010","Patient's name")); GetColumnList(DicomNode::Patient).push_back(Column("A0010_0040","Sex")); GetColumnList(DicomNode::Patient).push_back(Column("A0010_0030","Birthday")); // Study GetColumnList(DicomNode::Study).push_back(Column("A0008_1030","Study Description")); GetColumnList(DicomNode::Study).push_back(Column("A0008_0020","Study Date")); GetColumnList(DicomNode::Study).push_back(Column("A0008_0030","Study Time")); GetColumnList(DicomNode::Study).push_back(Column("A0008_0005","Specific Character Set")); // Series GetColumnList(DicomNode::Series).push_back(Column("A0008_0060","Modality")); GetColumnList(DicomNode::Series).push_back(Column("A0008_103E","Description")); GetColumnList(DicomNode::Series).push_back(Column("A0018_1030","Protocol Name")); GetColumnList(DicomNode::Series).push_back(Column("A0008_0080","Institution Name")); GetColumnList(DicomNode::Series).push_back(Column("A0008_1010","Station Name")); // Image GetColumnList(DicomNode::Image).push_back(Column("A0004_1500","File name")); GetColumnList(DicomNode::Image).push_back(Column("A0020_0013","Image Number")); GetColumnList(DicomNode::Image).push_back(Column("A0020_1041","Slice Location")); GetColumnList(DicomNode::Image).push_back(Column("A0020_0032","Image Position Patient")); GetColumnList(DicomNode::Image).push_back(Column("A0020_0037","Image Orientation Patient")); GetColumnList(DicomNode::Image).push_back(Column("A0028_0010","Rows")); GetColumnList(DicomNode::Image).push_back(Column("A0028_0011","Columns")); // Default comparators LexicographicalDicomNodeComparator c(""); SetActiveComparatorIndex(DicomNode::Database,-1); // Patient c.SetName("Name"); c.Clear(); c.Add( new DicomNodePatientNameComparator ); GetComparatorsList(DicomNode::Patient).push_back(c); c.SetName("Sex"); c.Clear(); c.Add( new DicomNodePatientSexComparator ); GetComparatorsList(DicomNode::Patient).push_back(c); c.SetName("Birthday"); c.Clear(); c.Add( new DicomNodePatientBirthdayComparator ); GetComparatorsList(DicomNode::Patient).push_back(c); SetActiveComparatorIndex(DicomNode::Patient,0); // Study c.SetName("Description"); c.Clear(); c.Add( new DicomNodeStudyDescriptionComparator ); GetComparatorsList(DicomNode::Study).push_back(c); c.SetName("Date"); c.Clear(); c.Add( new DicomNodeStudyDateComparator ); GetComparatorsList(DicomNode::Study).push_back(c); SetActiveComparatorIndex(DicomNode::Study,0); // Series c.SetName("Modality"); c.Clear(); c.Add( new DicomNodeModalityComparator ); GetComparatorsList(DicomNode::Series).push_back(c); c.SetName("Description"); c.Clear(); c.Add( new DicomNodeSeriesDescriptionComparator ); GetComparatorsList(DicomNode::Series).push_back(c); c.SetName("Date"); c.Clear(); c.Add( new DicomNodeSeriesDateComparator ); GetComparatorsList(DicomNode::Series).push_back(c); SetActiveComparatorIndex(DicomNode::Series,0); // Image c.SetName("Ascending slice location"); c.Clear(); c.Add( new DicomNodeSliceLocationComparator ); c.Add( new DicomNodeFullFileNameComparator ); GetComparatorsList(DicomNode::Image).push_back(c); c.SetName("Descending slice location"); c.Clear(); c.Add( new DicomNodeSliceLocationComparator(true) ); c.Add( new DicomNodeFullFileNameComparator ); GetComparatorsList(DicomNode::Image).push_back(c); c.SetName("Ascending image number"); c.Clear(); c.Add( new DicomNodeImageNumberComparator ); c.Add( new DicomNodeFullFileNameComparator ); GetComparatorsList(DicomNode::Image).push_back(c); c.SetName("Descending image number"); c.Clear(); c.Add( new DicomNodeImageNumberComparator(true) ); c.Add( new DicomNodeFullFileNameComparator ); GetComparatorsList(DicomNode::Image).push_back(c); SetActiveComparatorIndex(DicomNode::Image,0); } //==================================================================== //==================================================================== WxGimmickSettings::~WxGimmickSettings() { for (int i=0;iDeleteComparators(); } } } //==================================================================== //==================================================================== int WxGimmickSettings::GetMaxNumberOfColumns() { unsigned int n = 0; for (int i=0; i<5; i++) { if ( mColumnList[i].size() > n) n = mColumnList[i].size(); } if (mMergeStudySeries) { unsigned int ss = mColumnList[DicomNode::Study].size() + mColumnList[DicomNode::Series].size() ; if (ss>n) n=ss; } return n; } //==================================================================== //================================================================ //================================================================ //================================================================ //================================================================ //================================================================ WxGimmickSettingsDialog::WxGimmickSettingsDialog(wxWindow *parent, WxGimmickSettings* settings) : wxDialog( parent, -1, _T("Settings"), wxDefaultPosition, wxSize(400,400), wxRESIZE_BORDER | wxSYSTEM_MENU | wxCLOSE_BOX | wxMAXIMIZE_BOX | wxMINIMIZE_BOX | wxCAPTION ), mSettings(settings) { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); wxSizer* bsizer = CreateSeparatedButtonSizer(wxOK|wxCANCEL); mOkButton = (wxButton*)FindWindowById(GetAffirmativeId(), this); mCancelButton = (wxButton*)FindWindowById(GetEscapeId(), this); sizer->Add ( bsizer, 0, wxGROW ); SetSizer( sizer ); Layout(); } //================================================================ //================================================================ WxGimmickSettingsDialog::~WxGimmickSettingsDialog() { } //================================================================ //================================================================ //================================================================ //================================================================ //================================================================ //================================================================ WxGimmickHelp::WxGimmickHelp(wxWindow *parent) : wxPanel( parent, -1) /* -1, _T("Gimmick! Help"), wxDefaultPosition, wxSize(600,500), //wxDEFAULT_FRAME_STYLE | //wxFRAME_FLOAT_ON_PARENT wxBORDER_SIMPLE // wxRESIZE_BORDER | //wxSYSTEM_MENU | //wxCLOSE_BOX | // wxMAXIMIZE_BOX | //wxMINIMIZE_BOX | //wxCAPTION ) */ { // SetBackgroundColour(*wxBLUE); wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); mText = new wxTextCtrl(this, -1, //ID_InputText, _T(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY | wxTE_MULTILINE // |wxTE_PROCESS_ENTER //| wxTE_PROCESS_TAB // | wxWANTS_CHARS // | wxTAB_TRAVERSAL ); wxFont* FixedFont = new wxFont(10, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false); // wxTextAttr mwxInputTextAttr; // mwxInputTextAttr.SetFont(*FixedFont); // mwxInputTextAttr.SetBackgroundColour(*wxBLUE); // mwxInputTextAttr.SetTextColour(*wxWHITE); // mText->SetDefaultStyle(mwxInputTextAttr); // mText->SetBackgroundColour(*wxBLUE); std::string tip("\n"); tip += " Welcome to Gimmick !\n"; tip += " ( Give me my medical images quick ! )\n\n\n"; tip += " To start you must create a 'Collection' :\n"; tip += " 1) Right click on 'Collection'\n"; tip += " 2) Select 'New collection'\n"; tip += " 3) Enter the collection file name and the collection name\n\n"; tip += " To add images to your collection :\n"; tip += " 1) Right click on your collection\n"; tip += " 2) Select 'Add image(s) to collection'\n"; tip += " 3) Select :\n"; tip += " * 'Scan Directory' to add all images of a directory or\n"; tip += " * 'Select File(s)' to add only some selected images\n"; tip += " 4) Select the directory or the files to add\n"; tip += "\n\n"; tip += " Remember then that *ALL ACTIONS* in Gimmick!\n"; tip += " are done by right clicking on the DICOM tree elements\n"; tip += "\n"; tip += " Enjoy!\n"; mText->AppendText(crea::std2wx(tip)); sizer->Add(mText,1,wxGROW); /* wxSizer* bsizer = CreateSeparatedButtonSizer(wxOK); mOkButton = (wxButton*)FindWindowById(GetAffirmativeId(), this); sizer->Add ( bsizer, 0, wxGROW ); */ SetSizer(sizer); SetAutoLayout(true); Layout(); } //================================================================ //================================================================ WxGimmickHelp::~WxGimmickHelp() { } //================================================================ }