X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fdialogs.cpp;h=b4811ed1faeb74aff28170b42c981a63f9df90e4;hb=de411914da8b157958e9caae917bf1edeafbb713;hp=806b3fc996a429b445efce01ca8f6f2e5a984742;hpb=3b09207d7c37bc3d48e331657353123ed2f66ed9;p=ctsim.git diff --git a/src/dialogs.cpp b/src/dialogs.cpp index 806b3fc..b4811ed 100644 --- a/src/dialogs.cpp +++ b/src/dialogs.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: dialogs.cpp,v 1.43 2001/02/25 06:32:12 kevin Exp $ +** $Id: dialogs.cpp,v 1.50 2001/03/11 15:27:30 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -104,7 +104,7 @@ StringValueAndTitleRadioBox::getSelectionStringValue () const /////////////////////////////////////////////////////////////////////// DialogGetPhantom::DialogGetPhantom (wxWindow* pParent, int iDefaultPhantom) -: wxDialog (pParent, -1, "Select Phantom", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +: wxDialog (pParent, -1, _T("Select Phantom"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); @@ -218,7 +218,7 @@ DialogGetComparisonImage::getMakeDifferenceImage() DialogPreferences::DialogPreferences (wxWindow* pParent, const char* const pszTitle, bool bAdvancedOptions, bool bAskDeleteNewDocs, bool bVerboseLogging, bool bStartupTips, bool bUseBackgroundTasks) -: wxDialog (pParent, -1, pszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +: wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); @@ -242,9 +242,11 @@ DialogPreferences::DialogPreferences (wxWindow* pParent, const char* const pszTi m_pCBStartupTips->SetValue (bStartupTips); pTopSizer->Add (m_pCBStartupTips, 0, wxALIGN_CENTER_VERTICAL); +#ifdef HAVE_WXTHREADS m_pCBUseBackgroundTasks = new wxCheckBox (this, -1, "Put Tasks in Background", wxDefaultPosition, wxSize(250, 25), 0); m_pCBUseBackgroundTasks->SetValue (bUseBackgroundTasks); pTopSizer->Add (m_pCBUseBackgroundTasks, 0, wxALIGN_CENTER_VERTICAL); +#endif pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); @@ -296,7 +298,11 @@ DialogPreferences::getStartupTips () bool DialogPreferences::getUseBackgroundTasks () { +#ifdef HAVE_WXTHREADS return static_cast(m_pCBUseBackgroundTasks->GetValue()); +#else + return false; +#endif } @@ -305,7 +311,7 @@ DialogPreferences::getUseBackgroundTasks () ///////////////////////////////////////////////////////////////////// DialogGetMinMax::DialogGetMinMax (wxWindow* pParent, const char* const pszTitle, double dDefaultMin, double dDefaultMax) -: wxDialog (pParent, -1, pszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +: wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); @@ -378,7 +384,7 @@ DialogGetMinMax::getMaximum () ///////////////////////////////////////////////////////////////////// DialogAutoScaleParameters::DialogAutoScaleParameters (wxWindow *pParent, double mean, double mode, double median, double stddev, double dDefaultScaleFactor) -: wxDialog (pParent, -1, "Auto Scale Parameters", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION), m_dMean(mean), m_dMode(mode), m_dMedian(median), m_dStdDev(stddev) +: wxDialog (pParent, -1, _T("Auto Scale Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION), m_dMean(mean), m_dMode(mode), m_dMedian(median), m_dStdDev(stddev) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); @@ -465,7 +471,7 @@ DialogAutoScaleParameters::getAutoScaleFactor () DialogGetRasterParameters::DialogGetRasterParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultNSamples, double dDefaultViewRatio) -: wxDialog (pParent, -1, "Set Rasterization Parameters", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +: wxDialog (pParent, -1, _T("Set Rasterization Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); @@ -575,14 +581,15 @@ DialogGetRasterParameters::getViewRatio () DialogGetProjectionParameters::DialogGetProjectionParameters (wxWindow* pParent, int iDefaultNDet, int iDefaultNView, int iDefaultNSamples, - double dDefaultRotAngle, double dDefaultFocalLength, double dDefaultViewRatio, - double dDefaultScanRatio, int iDefaultGeometry, int iDefaultTrace) -: wxDialog (pParent, -1, "Set Projection Parameters", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) + double dDefaultRotAngle, double dDefaultFocalLength, double dDefaultCenterDetectorLength, + double dDefaultViewRatio, double dDefaultScanRatio, int iDefaultGeometry, int iDefaultTrace) +: wxDialog (pParent, -1, _T("Set Projection Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); m_dDefaultRotAngle = dDefaultRotAngle; m_dDefaultFocalLength = dDefaultFocalLength; + m_dDefaultCenterDetectorLength = dDefaultCenterDetectorLength; m_dDefaultViewRatio = dDefaultViewRatio; m_dDefaultScanRatio = dDefaultScanRatio; m_iDefaultNSamples = iDefaultNSamples; @@ -640,8 +647,14 @@ DialogGetProjectionParameters::DialogGetProjectionParameters m_pTextCtrlFocalLength = new wxTextCtrl (this, -1, osFocalLength.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0); pText2Sizer->Add (new wxStaticText (this, -1, "Focal Length Ratio"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText2Sizer->Add (m_pTextCtrlFocalLength, 0, wxALIGN_CENTER_VERTICAL); - + if (theApp->getAdvancedOptions()) { + std::ostringstream osCenterDetectorLength; + osCenterDetectorLength << dDefaultCenterDetectorLength; + m_pTextCtrlCenterDetectorLength = new wxTextCtrl (this, -1, osCenterDetectorLength.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0); + pText2Sizer->Add (new wxStaticText (this, -1, "Center-Detector Length Ratio"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + pText2Sizer->Add (m_pTextCtrlCenterDetectorLength, 0, wxALIGN_CENTER_VERTICAL); + std::ostringstream osRotAngle; osRotAngle << dDefaultRotAngle; m_pTextCtrlRotAngle = new wxTextCtrl (this, -1, osRotAngle.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0); @@ -669,6 +682,8 @@ DialogGetProjectionParameters::DialogGetProjectionParameters SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); + + m_pRadioBoxGeometry->SetFocus(); } DialogGetProjectionParameters::~DialogGetProjectionParameters () @@ -740,6 +755,20 @@ DialogGetProjectionParameters::getFocalLengthRatio () return (m_dDefaultFocalLength); } +double +DialogGetProjectionParameters::getCenterDetectorLengthRatio () +{ + if (theApp->getAdvancedOptions()) { + wxString strCtrl = m_pTextCtrlCenterDetectorLength->GetValue(); + double dValue; + if (strCtrl.ToDouble (&dValue)) + return (dValue); + else + return (m_dDefaultCenterDetectorLength); + } else + return getFocalLengthRatio(); // default is to set equal to focal-length +} + double DialogGetProjectionParameters::getViewRatio () { @@ -786,11 +815,22 @@ DialogGetProjectionParameters::getTrace () DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultFilterID, double dDefaultHammingParam, int iDefaultFilterMethodID, int iDefaultFilterGenerationID, int iDefaultZeropad, - int iDefaultInterpID, int iDefaultInterpParam, int iDefaultBackprojectID, int iTrace) -: wxDialog (pParent, -1, "Set Reconstruction Parameters", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) + int iDefaultInterpID, int iDefaultInterpParam, int iDefaultBackprojectID, int iTrace, + ReconstructionROI* pDefaultROI) +: wxDialog (pParent, -1, _T("Set Reconstruction Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); + m_iDefaultXSize = iDefaultXSize; + m_iDefaultYSize = iDefaultYSize; + m_dDefaultFilterParam = dDefaultHammingParam; + m_iDefaultZeropad = iDefaultZeropad; + m_iDefaultInterpParam = iDefaultInterpParam; + m_dDefaultRoiXMin = pDefaultROI->m_dXMin; + m_dDefaultRoiXMax = pDefaultROI->m_dXMax; + m_dDefaultRoiYMin = pDefaultROI->m_dYMin; + m_dDefaultRoiYMax = pDefaultROI->m_dYMax; + pTopSizer->Add (new wxStaticText (this, -1, "Set Reconstruction Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); @@ -883,7 +923,33 @@ DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow* pGridSizer->Add (new wxStaticText (this, -1, "Interpolation Parameter"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlInterpParam, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); #endif - + + if (theApp->getAdvancedOptions()) { + wxFlexGridSizer* pROIGridSizer = new wxFlexGridSizer (2); + std::ostringstream osRoiXMin; + osRoiXMin << m_dDefaultRoiXMin; + m_pTextCtrlRoiXMin = new wxTextCtrl (this, -1, osRoiXMin.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0); + pROIGridSizer->Add (new wxStaticText (this, -1, "ROI XMin"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + pROIGridSizer->Add (m_pTextCtrlRoiXMin, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + std::ostringstream osRoiXMax; + osRoiXMax << m_dDefaultRoiXMax; + m_pTextCtrlRoiXMax = new wxTextCtrl (this, -1, osRoiXMax.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0); + pROIGridSizer->Add (new wxStaticText (this, -1, "ROI XMax"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + pROIGridSizer->Add (m_pTextCtrlRoiXMax, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + std::ostringstream osRoiYMin; + osRoiYMin << m_dDefaultRoiYMin; + m_pTextCtrlRoiYMin = new wxTextCtrl (this, -1, osRoiYMin.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0); + pROIGridSizer->Add (new wxStaticText (this, -1, "ROI YMin"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + pROIGridSizer->Add (m_pTextCtrlRoiYMin, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + std::ostringstream osRoiYMax; + osRoiYMax << m_dDefaultRoiYMax; + m_pTextCtrlRoiYMax = new wxTextCtrl (this, -1, osRoiYMax.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0); + pROIGridSizer->Add (new wxStaticText (this, -1, "ROI YMax"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + pROIGridSizer->Add (m_pTextCtrlRoiYMax, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + + pGridSizer->Add (pROIGridSizer); + } + pTopSizer->Add (pGridSizer, 1, wxALL, 3); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); @@ -1024,6 +1090,37 @@ DialogGetReconstructionParameters::getFilterGenerationName () } } +void +DialogGetReconstructionParameters::getROI (ReconstructionROI* pROI) +{ + if (theApp->getAdvancedOptions()) { + double dValue; + if (m_pTextCtrlRoiXMin->GetValue().ToDouble (&dValue)) + pROI->m_dXMin = dValue; + else + pROI->m_dXMin = m_dDefaultRoiXMin; + + if (m_pTextCtrlRoiXMax->GetValue().ToDouble (&dValue)) + pROI->m_dXMax = dValue; + else + pROI->m_dXMax = m_dDefaultRoiXMax; + + if (m_pTextCtrlRoiYMin->GetValue().ToDouble (&dValue)) + pROI->m_dYMin = dValue; + else + pROI->m_dYMin = m_dDefaultRoiYMin; + + if (m_pTextCtrlRoiYMax->GetValue().ToDouble (&dValue)) + pROI->m_dYMax = dValue; + else + pROI->m_dYMax = m_dDefaultRoiYMax; + } else { + pROI->m_dXMin = m_dDefaultRoiXMin; + pROI->m_dXMax = m_dDefaultRoiXMax; + pROI->m_dYMin = m_dDefaultRoiYMin; + pROI->m_dYMax = m_dDefaultRoiYMax; + } +} ///////////////////////////////////////////////////////////////////// // CLASS IDENTIFICATION @@ -1034,7 +1131,7 @@ DialogGetReconstructionParameters::getFilterGenerationName () DialogGetFilterParameters::DialogGetFilterParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultFilterID, double dDefaultFilterParam, double dDefaultBandwidth, int iDefaultDomainID, double dDefaultInputScale, double dDefaultOutputScale) -: wxDialog (pParent, -1, "Set Filter Parameters", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +: wxDialog (pParent, -1, _T("Set Filter Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); @@ -1199,7 +1296,7 @@ DialogGetFilterParameters::getDomainName () /////////////////////////////////////////////////////////////////////// DialogExportParameters::DialogExportParameters (wxWindow* pParent, int iDefaultFormatID) -: wxDialog (pParent, -1, "Select ExportParameters", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +: wxDialog (pParent, -1, _T("Select ExportParameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); @@ -1207,9 +1304,10 @@ DialogExportParameters::DialogExportParameters (wxWindow* pParent, int iDefaultF pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5); - m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("Export Type"), ImageFile::getFormatCount(), ImageFile::getFormatTitleArray(), ImageFile::getFormatNameArray()); + m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("File Type"), + ImageFile::getExportFormatCount(), ImageFile::getExportFormatTitleArray(), ImageFile::getExportFormatNameArray()); m_pRadioBoxFormat->SetSelection (iDefaultFormatID); - pTopSizer->Add (m_pRadioBoxFormat, 0, wxALL | wxALIGN_CENTER | wxEXPAND); + pTopSizer->Add (m_pRadioBoxFormat, 0, wxALL | wxALIGN_CENTER); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); @@ -1237,12 +1335,57 @@ DialogExportParameters::getFormatName() } +/////////////////////////////////////////////////////////////////////// +// CLASS IMPLEMENTATION +// DialogImportParameters +/////////////////////////////////////////////////////////////////////// + +DialogImportParameters::DialogImportParameters (wxWindow* pParent, int iDefaultFormatID) +: wxDialog (pParent, -1, _T("Select Import Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +{ + wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); + + pTopSizer->Add (new wxStaticText (this, -1, "Select Import Format"), 0, wxALIGN_CENTER | wxALL, 5); + + pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5); + + m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("File Type"), + ImageFile::getImportFormatCount(), ImageFile::getImportFormatTitleArray(), ImageFile::getImportFormatNameArray()); + m_pRadioBoxFormat->SetSelection (iDefaultFormatID); + pTopSizer->Add (m_pRadioBoxFormat, 0, wxALL | wxALIGN_CENTER); + + pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); + + wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); + wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay"); + pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); + wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, "Cancel"); + pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); + CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_IMPORT); + pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); + + pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); + pButtonOk->SetDefault(); + + SetAutoLayout (true); + SetSizer (pTopSizer); + pTopSizer->Fit (this); + pTopSizer->SetSizeHints (this); +} + +const char* +DialogImportParameters::getFormatName() +{ + return m_pRadioBoxFormat->getSelectionStringValue(); +} + + ///////////////////////////////////////////////////////////////////// // CLASS DiaglogGetXYSize Implementation ///////////////////////////////////////////////////////////////////// DialogGetXYSize::DialogGetXYSize (wxWindow* pParent, const char* const pszTitle, int iDefaultXSize, int iDefaultYSize) -: wxDialog (pParent, -1, pszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +: wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { m_iDefaultXSize = iDefaultXSize; m_iDefaultYSize = iDefaultYSize; @@ -1320,7 +1463,7 @@ DialogGetXYSize::getYSize () DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pParent, const char* const pszTitle, int iDefaultXSize, int iDefaultYSize, int iDefaultInterpolationID, int iDefaultZeropad) -: wxDialog (pParent, -1, pszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) +: wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { m_iDefaultXSize = iDefaultXSize; m_iDefaultYSize = iDefaultYSize;