r11859: Canonicalize whitespace
[ctsim.git] / src / dialogs.cpp
index 9864dc0a65dd738371add771850b4b6e9fb1581c..a3e2bb077d2b45c32b2a1db09a7cfc4da044bc41 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: dialogs.cpp,v 1.48 2001/03/07 21:18:50 kevin Exp $
+**  $Id$
 **
 **  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
 **
 **  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
 **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 ******************************************************************************/
 
 **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 ******************************************************************************/
 
-#ifdef __GNUG__
-// #pragma implementation
-#endif
-
 #include "wx/wxprec.h"
 
 #ifndef WX_PRECOMP
 #include "wx/wxprec.h"
 
 #ifndef WX_PRECOMP
@@ -47,6 +43,7 @@
 #include "docs.h"
 #include "views.h"
 #include "imagefile.h"
 #include "docs.h"
 #include "views.h"
 #include "imagefile.h"
+#include "projections.h"
 
 #if defined(MSVC) || HAVE_SSTREAM
 #include <sstream>
 
 #if defined(MSVC) || HAVE_SSTREAM
 #include <sstream>
@@ -66,9 +63,9 @@ StringValueAndTitleListBox::StringValueAndTitleListBox (wxDialog* pParent, int n
   wxString* psTitle = new wxString [nChoices];
   for (int i = 0; i < nChoices; i++)
     psTitle[i] = aszTitle[i];
   wxString* psTitle = new wxString [nChoices];
   for (int i = 0; i < nChoices; i++)
     psTitle[i] = aszTitle[i];
-  
+
   Create (pParent, -1, wxDefaultPosition, wxSize(-1,-1), nChoices, psTitle, wxLB_SINGLE | wxLB_NEEDED_SB);
   Create (pParent, -1, wxDefaultPosition, wxSize(-1,-1), nChoices, psTitle, wxLB_SINGLE | wxLB_NEEDED_SB);
-  
+
   m_ppszValues = aszValue;
   delete [] psTitle;
 };
   m_ppszValues = aszValue;
   delete [] psTitle;
 };
@@ -85,9 +82,9 @@ StringValueAndTitleRadioBox::StringValueAndTitleRadioBox (wxDialog* pParent, con
   wxString* psTitle = new wxString [nChoices];
   for (int i = 0; i < nChoices; i++)
     psTitle[i] = aszTitle[i];
   wxString* psTitle = new wxString [nChoices];
   for (int i = 0; i < nChoices; i++)
     psTitle[i] = aszTitle[i];
-  
+
   Create (pParent, -1, strTitle, wxDefaultPosition, wxDefaultSize, nChoices, psTitle, 1, wxRA_SPECIFY_COLS);
   Create (pParent, -1, strTitle, wxDefaultPosition, wxDefaultSize, nChoices, psTitle, 1, wxRA_SPECIFY_COLS);
-  
+
   m_ppszValues = aszValue;
   delete [] psTitle;
 };
   m_ppszValues = aszValue;
   delete [] psTitle;
 };
@@ -107,17 +104,17 @@ DialogGetPhantom::DialogGetPhantom (wxWindow* pParent, int iDefaultPhantom)
 : wxDialog (pParent, -1, _T("Select Phantom"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 : wxDialog (pParent, -1, _T("Select Phantom"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
+
   pTopSizer->Add (new wxStaticText (this, -1, "Select Phantom"), 0, wxCENTER | wxALL, 5);
   pTopSizer->Add (new wxStaticText (this, -1, "Select Phantom"), 0, wxCENTER | wxALL, 5);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-  
+
   m_pRadioBoxPhantom = new StringValueAndTitleRadioBox (this, _T("Phantom"), Phantom::getPhantomCount(), Phantom::getPhantomTitleArray(), Phantom::getPhantomNameArray());
   m_pRadioBoxPhantom->SetSelection (iDefaultPhantom);
   pTopSizer->Add (m_pRadioBoxPhantom, 0, wxALL | wxALIGN_CENTER);
   m_pRadioBoxPhantom = new StringValueAndTitleRadioBox (this, _T("Phantom"), Phantom::getPhantomCount(), Phantom::getPhantomTitleArray(), Phantom::getPhantomNameArray());
   m_pRadioBoxPhantom->SetSelection (iDefaultPhantom);
   pTopSizer->Add (m_pRadioBoxPhantom, 0, wxALL | wxALIGN_CENTER);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -128,7 +125,7 @@ DialogGetPhantom::DialogGetPhantom (wxWindow* pParent, int iDefaultPhantom)
 
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
-  
+
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
@@ -142,6 +139,64 @@ DialogGetPhantom::getPhantom()
 }
 
 
 }
 
 
+///////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//    DialogGetThetaRange
+///////////////////////////////////////////////////////////////////////
+
+DialogGetThetaRange::DialogGetThetaRange (wxWindow* pParent, int iDefaultThetaRange)
+: wxDialog (pParent, -1, _T("Select Phantom"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, "Select Theta Range"), 0, wxCENTER | wxALL, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxString asTitle[] = {"Unconstrained", "Normalized to 2pi", "Fold to pi"};
+
+  m_pRadioBoxThetaRange = new wxRadioBox (this, -1, _T("Theta Range"), wxDefaultPosition, wxDefaultSize, 3, asTitle, 1, wxRA_SPECIFY_COLS);
+  if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_UNCONSTRAINED)
+    m_pRadioBoxThetaRange->SetSelection (0);
+  else if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_NORMALIZE_TO_TWOPI)
+    m_pRadioBoxThetaRange->SetSelection (1);
+  else if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_FOLD_TO_PI)
+    m_pRadioBoxThetaRange->SetSelection (2);
+
+  pTopSizer->Add (m_pRadioBoxThetaRange, 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_THETA_RANGE);
+  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);
+}
+
+int
+DialogGetThetaRange::getThetaRange()
+{
+  int iSelection = m_pRadioBoxThetaRange->GetSelection();
+  if (iSelection == 0)
+    return ParallelRaysums::THETA_RANGE_UNCONSTRAINED;
+  else if (iSelection == 1)
+    return ParallelRaysums::THETA_RANGE_NORMALIZE_TO_TWOPI;
+  else
+    return ParallelRaysums::THETA_RANGE_FOLD_TO_PI;
+}
+
+
 ///////////////////////////////////////////////////////////////////////
 // CLASS IMPLEMENTATION
 //    DialogGetComparisonImage
 ///////////////////////////////////////////////////////////////////////
 // CLASS IMPLEMENTATION
 //    DialogGetComparisonImage
@@ -151,11 +206,11 @@ DialogGetComparisonImage::DialogGetComparisonImage (wxWindow* pParent, const cha
 : wxDialog (pParent, -1, pszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION), m_rVecIF(rVecIF)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 : wxDialog (pParent, -1, pszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION), m_rVecIF(rVecIF)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
+
   pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxALL, 5);
   pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxALL, 5);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5);
-  
+
   int iNImages = m_rVecIF.size();
   wxString* pstrImages = new wxString [iNImages];
   for (int i = 0; i < iNImages; i++) {
   int iNImages = m_rVecIF.size();
   wxString* pstrImages = new wxString [iNImages];
   for (int i = 0; i < iNImages; i++) {
@@ -169,7 +224,7 @@ DialogGetComparisonImage::DialogGetComparisonImage (wxWindow* pParent, const cha
 
   m_pListBoxImageChoices->SetSelection (0);
   pTopSizer->Add (m_pListBoxImageChoices, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
 
   m_pListBoxImageChoices->SetSelection (0);
   pTopSizer->Add (m_pListBoxImageChoices, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
-  
+
   if (bShowMakeDifference) {
     m_pMakeDifferenceImage = new wxCheckBox (this, -1, "Make Difference Image");
     m_pMakeDifferenceImage->SetValue (FALSE);
   if (bShowMakeDifference) {
     m_pMakeDifferenceImage = new wxCheckBox (this, -1, "Make Difference Image");
     m_pMakeDifferenceImage->SetValue (FALSE);
@@ -178,7 +233,7 @@ DialogGetComparisonImage::DialogGetComparisonImage (wxWindow* pParent, const cha
     m_pMakeDifferenceImage = NULL;
 
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
     m_pMakeDifferenceImage = NULL;
 
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -186,10 +241,10 @@ DialogGetComparisonImage::DialogGetComparisonImage (wxWindow* pParent, const cha
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_COMPARISON);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_COMPARISON);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
-  
+
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
@@ -216,14 +271,14 @@ DialogGetComparisonImage::getMakeDifferenceImage()
 // CLASS DiaglogPreferences Implementation
 /////////////////////////////////////////////////////////////////////
 
 // CLASS DiaglogPreferences Implementation
 /////////////////////////////////////////////////////////////////////
 
-DialogPreferences::DialogPreferences (wxWindow* pParent, const char* const pszTitle, 
+DialogPreferences::DialogPreferences (wxWindow* pParent, const char* const pszTitle,
                    bool bAdvancedOptions, bool bAskDeleteNewDocs, bool bVerboseLogging, bool bStartupTips, bool bUseBackgroundTasks)
 : wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
                    bool bAdvancedOptions, bool bAskDeleteNewDocs, bool bVerboseLogging, bool bStartupTips, bool bUseBackgroundTasks)
 : wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
+
   pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
   pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
 
   m_pCBAdvancedOptions = new wxCheckBox (this, -1, "Advanced Options", wxDefaultPosition, wxSize(250, 25), 0);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
 
   m_pCBAdvancedOptions = new wxCheckBox (this, -1, "Advanced Options", wxDefaultPosition, wxSize(250, 25), 0);
@@ -242,14 +297,14 @@ DialogPreferences::DialogPreferences (wxWindow* pParent, const char* const pszTi
   m_pCBStartupTips->SetValue (bStartupTips);
   pTopSizer->Add (m_pCBStartupTips, 0, wxALIGN_CENTER_VERTICAL);
 
   m_pCBStartupTips->SetValue (bStartupTips);
   pTopSizer->Add (m_pCBStartupTips, 0, wxALIGN_CENTER_VERTICAL);
 
-#ifdef HAVE_WXTHREADS
+#if HAVE_WXTHREADS && MSVC
   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);
   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);
-  
+
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -257,10 +312,10 @@ DialogPreferences::DialogPreferences (wxWindow* pParent, const char* const pszTi
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PREFERENCES);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PREFERENCES);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
-  
+
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
@@ -298,7 +353,7 @@ DialogPreferences::getStartupTips ()
 bool
 DialogPreferences::getUseBackgroundTasks ()
 {
 bool
 DialogPreferences::getUseBackgroundTasks ()
 {
-#ifdef HAVE_WXTHREADS
+#if HAVE_WXTHREADS && MSVC
   return static_cast<bool>(m_pCBUseBackgroundTasks->GetValue());
 #else
   return false;
   return static_cast<bool>(m_pCBUseBackgroundTasks->GetValue());
 #else
   return false;
@@ -314,27 +369,27 @@ DialogGetMinMax::DialogGetMinMax (wxWindow* pParent, const char* const pszTitle,
 : wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 : wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
+
   pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
   pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-  
+
   std::ostringstream os;
   os << dDefaultMin;
   m_pTextCtrlMin = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   std::ostringstream osMax;
   osMax << dDefaultMax;
   m_pTextCtrlMax = new wxTextCtrl (this, -1, osMax.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   std::ostringstream os;
   os << dDefaultMin;
   m_pTextCtrlMin = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   std::ostringstream osMax;
   osMax << dDefaultMax;
   m_pTextCtrlMax = new wxTextCtrl (this, -1, osMax.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
-  
+
   wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
   pGridSizer->Add (new wxStaticText (this, -1, "Minimum"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlMin, 0, wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (new wxStaticText (this, -1, "Maximum"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlMax, 0, wxALIGN_CENTER_VERTICAL);
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
   wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
   pGridSizer->Add (new wxStaticText (this, -1, "Minimum"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlMin, 0, wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (new wxStaticText (this, -1, "Maximum"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlMax, 0, wxALIGN_CENTER_VERTICAL);
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -342,10 +397,10 @@ DialogGetMinMax::DialogGetMinMax (wxWindow* pParent, const char* const pszTitle,
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_MINMAX);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_MINMAX);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
-  
+
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
@@ -387,17 +442,17 @@ DialogAutoScaleParameters::DialogAutoScaleParameters (wxWindow *pParent, double
 : 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);
 : 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);
-  
+
   pTopSizer->Add (new wxStaticText (this, -1, "Auto Scale Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
   pTopSizer->Add (new wxStaticText (this, -1, "Auto Scale Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-  
-  wxString asTitle[] = {"Median", "Mode", "Mean"};
-  
+
+  wxString asTitle[] = {"Mode", "Median", "Mean"};
+
   m_pRadioBoxCenter = new wxRadioBox (this, -1, _T("Center"), wxDefaultPosition, wxDefaultSize, 3, asTitle, 1, wxRA_SPECIFY_COLS);
   m_pRadioBoxCenter->SetSelection (0);
   pTopSizer->Add (m_pRadioBoxCenter, 0, wxALL | wxALIGN_CENTER);
   m_pRadioBoxCenter = new wxRadioBox (this, -1, _T("Center"), wxDefaultPosition, wxDefaultSize, 3, asTitle, 1, wxRA_SPECIFY_COLS);
   m_pRadioBoxCenter->SetSelection (0);
   pTopSizer->Add (m_pRadioBoxCenter, 0, wxALL | wxALIGN_CENTER);
-  
+
   wxGridSizer *pGridSizer = new wxGridSizer (2);
   pGridSizer->Add (new wxStaticText (this, -1, "Standard Deviation Factor"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   std::ostringstream osDefaultFactor;
   wxGridSizer *pGridSizer = new wxGridSizer (2);
   pGridSizer->Add (new wxStaticText (this, -1, "Standard Deviation Factor"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   std::ostringstream osDefaultFactor;
@@ -405,9 +460,9 @@ DialogAutoScaleParameters::DialogAutoScaleParameters (wxWindow *pParent, double
   m_pTextCtrlStdDevFactor = new wxTextCtrl (this, -1, osDefaultFactor.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   pGridSizer->Add (m_pTextCtrlStdDevFactor, 0, wxALIGN_CENTER_VERTICAL);
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
   m_pTextCtrlStdDevFactor = new wxTextCtrl (this, -1, osDefaultFactor.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   pGridSizer->Add (m_pTextCtrlStdDevFactor, 0, wxALIGN_CENTER_VERTICAL);
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -415,10 +470,10 @@ DialogAutoScaleParameters::DialogAutoScaleParameters (wxWindow *pParent, double
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_AUTOSCALE);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_AUTOSCALE);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
-  
+
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
@@ -429,12 +484,12 @@ bool
 DialogAutoScaleParameters::getMinMax (double* pMin, double* pMax)
 {
   int iCenter = m_pRadioBoxCenter->GetSelection();
 DialogAutoScaleParameters::getMinMax (double* pMin, double* pMax)
 {
   int iCenter = m_pRadioBoxCenter->GetSelection();
-  double dCenter = m_dMedian;
+  double dCenter = m_dMode;
   if (iCenter == 1)
   if (iCenter == 1)
-    dCenter = m_dMode;
+    dCenter = m_dMedian;
   else if (iCenter == 2)
   else if (iCenter == 2)
-    dCenter = m_dMode;
-  
+    dCenter = m_dMean;
+
   wxString sStddevFactor = m_pTextCtrlStdDevFactor->GetValue();
   double dValue;
   if (! sStddevFactor.ToDouble (&dValue)) {
   wxString sStddevFactor = m_pTextCtrlStdDevFactor->GetValue();
   double dValue;
   if (! sStddevFactor.ToDouble (&dValue)) {
@@ -445,7 +500,7 @@ DialogAutoScaleParameters::getMinMax (double* pMin, double* pMax)
   *pMin = dCenter - dHalfWidth;
   *pMax = dCenter + dHalfWidth;
   *theApp->getLog() << "Setting minimum to " << *pMin << " and maximum to " << *pMax << "\n";
   *pMin = dCenter - dHalfWidth;
   *pMax = dCenter + dHalfWidth;
   *theApp->getLog() << "Setting minimum to " << *pMin << " and maximum to " << *pMax << "\n";
-  
+
   return true;
 }
 
   return true;
 }
 
@@ -457,7 +512,7 @@ DialogAutoScaleParameters::getAutoScaleFactor ()
   if (! sStddevFactor.ToDouble (&dValue)) {
     *theApp->getLog() << "Error: Non-numeric Standard Deviation Factor of " << sStddevFactor << "\n";
   }
   if (! sStddevFactor.ToDouble (&dValue)) {
     *theApp->getLog() << "Error: Non-numeric Standard Deviation Factor of " << sStddevFactor << "\n";
   }
-  
+
   return dValue;
 }
 
   return dValue;
 }
 
@@ -469,16 +524,16 @@ DialogAutoScaleParameters::getAutoScaleFactor ()
 // DialogGetRasterParameters
 /////////////////////////////////////////////////////////////////////
 
 // DialogGetRasterParameters
 /////////////////////////////////////////////////////////////////////
 
-DialogGetRasterParameters::DialogGetRasterParameters 
+DialogGetRasterParameters::DialogGetRasterParameters
    (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultNSamples, double dDefaultViewRatio)
    (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultNSamples, double dDefaultViewRatio)
-: wxDialog (pParent, -1, _T("Set Rasterization Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+: wxDialog (pParent, -1, _T("Rasterization Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
-  pTopSizer->Add (new wxStaticText (this, -1, "Set Rasterization Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
-  
+
+  pTopSizer->Add (new wxStaticText (this, -1, "Rasterization Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-    
+
   wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
   std::ostringstream os;
   os << iDefaultXSize;
   wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
   std::ostringstream os;
   os << iDefaultXSize;
@@ -502,9 +557,9 @@ DialogGetRasterParameters::DialogGetRasterParameters
   pGridSizer->Add (m_pTextCtrlNSamples, 0, wxALIGN_CENTER_VERTICAL);
 
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
   pGridSizer->Add (m_pTextCtrlNSamples, 0, wxALIGN_CENTER_VERTICAL);
 
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -515,7 +570,7 @@ DialogGetRasterParameters::DialogGetRasterParameters
 
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
-  
+
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
@@ -579,14 +634,14 @@ DialogGetRasterParameters::getViewRatio ()
 /////////////////////////////////////////////////////////////////////
 
 
 /////////////////////////////////////////////////////////////////////
 
 
-DialogGetProjectionParameters::DialogGetProjectionParameters 
-   (wxWindow* pParent, int iDefaultNDet, int iDefaultNView, int iDefaultNSamples, 
+DialogGetProjectionParameters::DialogGetProjectionParameters
+   (wxWindow* pParent, int iDefaultNDet, int iDefaultNView, int iDefaultOffsetView, int iDefaultNSamples,
     double dDefaultRotAngle, double dDefaultFocalLength, double dDefaultCenterDetectorLength,
     double dDefaultViewRatio, double dDefaultScanRatio, int iDefaultGeometry, int iDefaultTrace)
     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)
+: wxDialog (pParent, -1, _T("Projection Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
+
   m_dDefaultRotAngle = dDefaultRotAngle;
   m_dDefaultFocalLength = dDefaultFocalLength;
   m_dDefaultCenterDetectorLength = dDefaultCenterDetectorLength;
   m_dDefaultRotAngle = dDefaultRotAngle;
   m_dDefaultFocalLength = dDefaultFocalLength;
   m_dDefaultCenterDetectorLength = dDefaultCenterDetectorLength;
@@ -597,22 +652,22 @@ DialogGetProjectionParameters::DialogGetProjectionParameters
   m_iDefaultNDet = iDefaultNDet;
   m_iDefaultTrace = iDefaultTrace;
   m_iDefaultGeometry = iDefaultGeometry;
   m_iDefaultNDet = iDefaultNDet;
   m_iDefaultTrace = iDefaultTrace;
   m_iDefaultGeometry = iDefaultGeometry;
-  
-  pTopSizer->Add (new wxStaticText (this, -1, "Set Projection Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
-  
+
+  pTopSizer->Add (new wxStaticText (this, -1, "Projection Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-    
+
   wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (2);
   m_pRadioBoxGeometry = new StringValueAndTitleRadioBox (this, _T("Geometry"), Scanner::getGeometryCount(), Scanner::getGeometryTitleArray(), Scanner::getGeometryNameArray());
   m_pRadioBoxGeometry->SetSelection (iDefaultGeometry);
   wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (2);
   m_pRadioBoxGeometry = new StringValueAndTitleRadioBox (this, _T("Geometry"), Scanner::getGeometryCount(), Scanner::getGeometryTitleArray(), Scanner::getGeometryNameArray());
   m_pRadioBoxGeometry->SetSelection (iDefaultGeometry);
-  
+
   pGridSizer->Add (m_pRadioBoxGeometry, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
   pGridSizer->Add (m_pRadioBoxGeometry, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
-  
+
   m_pRadioBoxTrace = new StringValueAndTitleRadioBox (this, _T("Trace Level"), Trace::getTraceCount(), Trace::getTraceTitleArray(), Trace::getTraceNameArray());
   m_pRadioBoxTrace->SetSelection (iDefaultTrace);
   pGridSizer->Add (m_pRadioBoxTrace, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
 
   m_pRadioBoxTrace = new StringValueAndTitleRadioBox (this, _T("Trace Level"), Trace::getTraceCount(), Trace::getTraceTitleArray(), Trace::getTraceNameArray());
   m_pRadioBoxTrace->SetSelection (iDefaultTrace);
   pGridSizer->Add (m_pRadioBoxTrace, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
 
-         wxFlexGridSizer* pText1Sizer = new wxFlexGridSizer(2);
+          wxFlexGridSizer* pText1Sizer = new wxFlexGridSizer(2);
   std::ostringstream os;
   os << iDefaultNDet;
   m_pTextCtrlNDet = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   std::ostringstream os;
   os << iDefaultNDet;
   m_pTextCtrlNDet = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
@@ -648,25 +703,32 @@ DialogGetProjectionParameters::DialogGetProjectionParameters
   pText2Sizer->Add (new wxStaticText (this, -1, "Focal Length Ratio"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pText2Sizer->Add (m_pTextCtrlFocalLength, 0, wxALIGN_CENTER_VERTICAL);
 
   pText2Sizer->Add (new wxStaticText (this, -1, "Focal Length Ratio"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pText2Sizer->Add (m_pTextCtrlFocalLength, 0, wxALIGN_CENTER_VERTICAL);
 
-  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);
-
   if (theApp->getAdvancedOptions()) {
   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);
     pText2Sizer->Add (new wxStaticText (this, -1, "Rotation Angle (Fraction of circle)"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
     pText2Sizer->Add (m_pTextCtrlRotAngle, 0, wxALIGN_CENTER_VERTICAL);
     std::ostringstream osRotAngle;
     osRotAngle << dDefaultRotAngle;
     m_pTextCtrlRotAngle = new wxTextCtrl (this, -1, osRotAngle.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
     pText2Sizer->Add (new wxStaticText (this, -1, "Rotation Angle (Fraction of circle)"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
     pText2Sizer->Add (m_pTextCtrlRotAngle, 0, wxALIGN_CENTER_VERTICAL);
+
+    std::ostringstream osOffsetView;
+    osOffsetView << iDefaultOffsetView;
+    m_pTextCtrlOffsetView = new wxTextCtrl (this, -1, osOffsetView.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
+    pText2Sizer->Add (new wxStaticText (this, -1, "Gantry offset in units of 'views' "), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pText2Sizer->Add (m_pTextCtrlOffsetView, 0, wxALIGN_CENTER_VERTICAL);
+
   }
   pGridSizer->Add (pText2Sizer);
 
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
   }
   pGridSizer->Add (pText2Sizer);
 
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -674,14 +736,16 @@ DialogGetProjectionParameters::DialogGetProjectionParameters
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PROJECTIONS);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PROJECTIONS);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
-  
+
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
   pTopSizer->SetSizeHints (this);
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Fit (this);
   pTopSizer->SetSizeHints (this);
+
+  m_pRadioBoxGeometry->SetFocus();
 }
 
 DialogGetProjectionParameters::~DialogGetProjectionParameters ()
 }
 
 DialogGetProjectionParameters::~DialogGetProjectionParameters ()
@@ -711,6 +775,20 @@ DialogGetProjectionParameters::getNView ()
     return (m_iDefaultNView);
 }
 
     return (m_iDefaultNView);
 }
 
+unsigned int
+DialogGetProjectionParameters::getOffsetView ()
+{
+  if (theApp->getAdvancedOptions()) {
+          wxString strCtrl = m_pTextCtrlOffsetView->GetValue();
+          unsigned long lValue;
+          if (strCtrl.ToULong (&lValue))
+            return lValue;
+          else
+            return (m_iDefaultOffsetView);
+  }
+  else
+    return 0;
+}
 
 unsigned int
 DialogGetProjectionParameters::getNSamples ()
 
 unsigned int
 DialogGetProjectionParameters::getNSamples ()
@@ -734,7 +812,7 @@ DialogGetProjectionParameters::getRotAngle ()
     else
       return (m_dDefaultRotAngle);
   } else {
     else
       return (m_dDefaultRotAngle);
   } else {
-    if (Scanner::convertGeometryNameToID (m_pRadioBoxGeometry->getSelectionStringValue()) == 
+    if (Scanner::convertGeometryNameToID (m_pRadioBoxGeometry->getSelectionStringValue()) ==
           Scanner::GEOMETRY_PARALLEL)
       return (PI);
     else
           Scanner::GEOMETRY_PARALLEL)
       return (PI);
     else
@@ -756,12 +834,15 @@ DialogGetProjectionParameters::getFocalLengthRatio ()
 double
 DialogGetProjectionParameters::getCenterDetectorLengthRatio ()
 {
 double
 DialogGetProjectionParameters::getCenterDetectorLengthRatio ()
 {
-  wxString strCtrl = m_pTextCtrlCenterDetectorLength->GetValue();
-  double dValue;
-  if (strCtrl.ToDouble (&dValue))
-    return (dValue);
-  else
-    return (m_dDefaultCenterDetectorLength);
+  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
 }
 
 double
@@ -807,17 +888,28 @@ 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, _T("Set Reconstruction Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+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,
+                     ReconstructionROI* pDefaultROI)
+: wxDialog (pParent, -1, _T("Reconstruction Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
-  pTopSizer->Add (new wxStaticText (this, -1, "Set Reconstruction Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
+  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, "Filtered Backprojection Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-  
+
   wxFlexGridSizer* pGridSizer = NULL;
   if (theApp->getAdvancedOptions())
     pGridSizer = new wxFlexGridSizer (4);
   wxFlexGridSizer* pGridSizer = NULL;
   if (theApp->getAdvancedOptions())
     pGridSizer = new wxFlexGridSizer (4);
@@ -830,7 +922,7 @@ DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow*
     m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getReconstructFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray());
   m_pRadioBoxFilter->SetSelection (iDefaultFilterID);
   pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
     m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getReconstructFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray());
   m_pRadioBoxFilter->SetSelection (iDefaultFilterID);
   pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
-  
+
   if (theApp->getAdvancedOptions()) {
     m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), ProcessSignal::getFilterMethodCount(), ProcessSignal::getFilterMethodTitleArray(), ProcessSignal::getFilterMethodNameArray());
     m_pRadioBoxFilterMethod->SetSelection (iDefaultFilterMethodID);
   if (theApp->getAdvancedOptions()) {
     m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), ProcessSignal::getFilterMethodCount(), ProcessSignal::getFilterMethodTitleArray(), ProcessSignal::getFilterMethodNameArray());
     m_pRadioBoxFilterMethod->SetSelection (iDefaultFilterMethodID);
@@ -856,7 +948,7 @@ DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow*
     m_pRadioBoxFilterGeneration = new StringValueAndTitleRadioBox (this, _T("Filter Generation"), ProcessSignal::getFilterGenerationCount(), ProcessSignal::getFilterGenerationTitleArray(), ProcessSignal::getFilterGenerationNameArray());
     m_pRadioBoxFilterGeneration->SetSelection (iDefaultFilterGenerationID);
     pGridSizer->Add (m_pRadioBoxFilterGeneration, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
     m_pRadioBoxFilterGeneration = new StringValueAndTitleRadioBox (this, _T("Filter Generation"), ProcessSignal::getFilterGenerationCount(), ProcessSignal::getFilterGenerationTitleArray(), ProcessSignal::getFilterGenerationNameArray());
     m_pRadioBoxFilterGeneration->SetSelection (iDefaultFilterGenerationID);
     pGridSizer->Add (m_pRadioBoxFilterGeneration, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
-  
+
     m_pRadioBoxBackproject = new StringValueAndTitleRadioBox (this, _T("Backprojection"), Backprojector::getBackprojectCount(), Backprojector::getBackprojectTitleArray(), Backprojector::getBackprojectNameArray());
     m_pRadioBoxBackproject->SetSelection (iDefaultBackprojectID);
     pGridSizer->Add (m_pRadioBoxBackproject, 0, wxALL | wxALIGN_RIGHT | wxEXPAND);
     m_pRadioBoxBackproject = new StringValueAndTitleRadioBox (this, _T("Backprojection"), Backprojector::getBackprojectCount(), Backprojector::getBackprojectTitleArray(), Backprojector::getBackprojectNameArray());
     m_pRadioBoxBackproject->SetSelection (iDefaultBackprojectID);
     pGridSizer->Add (m_pRadioBoxBackproject, 0, wxALL | wxALIGN_RIGHT | wxEXPAND);
@@ -865,7 +957,7 @@ DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow*
   m_pRadioBoxInterp = new StringValueAndTitleRadioBox (this, _T("Interpolation"), Backprojector::getInterpCount(), Backprojector::getInterpTitleArray(), Backprojector::getInterpNameArray());
   m_pRadioBoxInterp->SetSelection (iDefaultInterpID);
   pGridSizer->Add (m_pRadioBoxInterp, 0, wxALL | wxALIGN_RIGHT | wxEXPAND);
   m_pRadioBoxInterp = new StringValueAndTitleRadioBox (this, _T("Interpolation"), Backprojector::getInterpCount(), Backprojector::getInterpTitleArray(), Backprojector::getInterpNameArray());
   m_pRadioBoxInterp->SetSelection (iDefaultInterpID);
   pGridSizer->Add (m_pRadioBoxInterp, 0, wxALL | wxALIGN_RIGHT | wxEXPAND);
-  
+
   static const char* aszTraceTitle[] = {"None", "Full"};
   static const char* aszTraceName[] = {"none", "full"};
   m_pRadioBoxTrace = new StringValueAndTitleRadioBox (this, _T("Trace Level"), 2, aszTraceTitle, aszTraceName);
   static const char* aszTraceTitle[] = {"None", "Full"};
   static const char* aszTraceName[] = {"none", "full"};
   m_pRadioBoxTrace = new StringValueAndTitleRadioBox (this, _T("Trace Level"), 2, aszTraceTitle, aszTraceName);
@@ -906,12 +998,38 @@ DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow*
   m_pTextCtrlInterpParam = new wxTextCtrl (this, -1, osInterpParam.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   pGridSizer->Add (new wxStaticText (this, -1, "Interpolation Parameter"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlInterpParam, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   m_pTextCtrlInterpParam = new wxTextCtrl (this, -1, osInterpParam.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   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  
-  
+#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 (pGridSizer, 1, wxALL, 3);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -919,10 +1037,10 @@ DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow*
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_RECONSTRUCTION);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_RECONSTRUCTION);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
-  
+
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Layout();
   SetAutoLayout (true);
   SetSizer (pTopSizer);
   pTopSizer->Layout();
@@ -1048,6 +1166,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
 
 /////////////////////////////////////////////////////////////////////
 // CLASS IDENTIFICATION
@@ -1058,23 +1207,23 @@ DialogGetReconstructionParameters::getFilterGenerationName ()
 
 
 DialogGetFilterParameters::DialogGetFilterParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultFilterID, double dDefaultFilterParam,  double dDefaultBandwidth, int iDefaultDomainID, double dDefaultInputScale, double dDefaultOutputScale)
 
 
 DialogGetFilterParameters::DialogGetFilterParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultFilterID, double dDefaultFilterParam,  double dDefaultBandwidth, int iDefaultDomainID, double dDefaultInputScale, double dDefaultOutputScale)
-: wxDialog (pParent, -1, _T("Set Filter Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+: wxDialog (pParent, -1, _T("Filter Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
-  pTopSizer->Add (new wxStaticText (this, -1, "Set Filter Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); 
+
+  pTopSizer->Add (new wxStaticText (this, -1, "Filter Parameters"), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-  
+
   wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (2);
 
   m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray());
   m_pRadioBoxFilter->SetSelection (iDefaultFilterID);
   pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
   wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (2);
 
   m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray());
   m_pRadioBoxFilter->SetSelection (iDefaultFilterID);
   pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
-  
+
   m_pRadioBoxDomain = new StringValueAndTitleRadioBox (this, _T("Domain"), SignalFilter::getDomainCount(), SignalFilter::getDomainTitleArray(), SignalFilter::getDomainNameArray());
   m_pRadioBoxDomain->SetSelection (iDefaultDomainID);
   pGridSizer->Add (m_pRadioBoxDomain, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
   m_pRadioBoxDomain = new StringValueAndTitleRadioBox (this, _T("Domain"), SignalFilter::getDomainCount(), SignalFilter::getDomainTitleArray(), SignalFilter::getDomainNameArray());
   m_pRadioBoxDomain->SetSelection (iDefaultDomainID);
   pGridSizer->Add (m_pRadioBoxDomain, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
-  
+
   std::ostringstream os;
   os << iDefaultXSize;
   m_pTextCtrlXSize = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   std::ostringstream os;
   os << iDefaultXSize;
   m_pTextCtrlXSize = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
@@ -1110,11 +1259,11 @@ DialogGetFilterParameters::DialogGetFilterParameters (wxWindow* pParent, int iDe
   m_pTextCtrlOutputScale = new wxTextCtrl (this, -1, osOutputScale.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   pGridSizer->Add (new wxStaticText (this, -1, "Filter Output Scale"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlOutputScale, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   m_pTextCtrlOutputScale = new wxTextCtrl (this, -1, osOutputScale.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   pGridSizer->Add (new wxStaticText (this, -1, "Filter Output Scale"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlOutputScale, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
-  
+
   pTopSizer->Add (pGridSizer, 1, wxALL, 3);
   pTopSizer->Add (pGridSizer, 1, wxALL, 3);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -1122,7 +1271,7 @@ DialogGetFilterParameters::DialogGetFilterParameters (wxWindow* pParent, int iDe
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_FILTER);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_FILTER);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
@@ -1226,18 +1375,18 @@ DialogExportParameters::DialogExportParameters (wxWindow* pParent, int iDefaultF
 : wxDialog (pParent, -1, _T("Select ExportParameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 : wxDialog (pParent, -1, _T("Select ExportParameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
+
   pTopSizer->Add (new wxStaticText (this, -1, "Select Export Format"), 0, wxALIGN_CENTER | wxALL, 5);
   pTopSizer->Add (new wxStaticText (this, -1, "Select Export Format"), 0, wxALIGN_CENTER | wxALL, 5);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5);
-  
-  m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("File Type"), 
+
+  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);
     ImageFile::getExportFormatCount(), ImageFile::getExportFormatTitleArray(), ImageFile::getExportFormatNameArray());
   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);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -1245,7 +1394,7 @@ DialogExportParameters::DialogExportParameters (wxWindow* pParent, int iDefaultF
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_EXPORT);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_EXPORT);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
@@ -1271,18 +1420,18 @@ DialogImportParameters::DialogImportParameters (wxWindow* pParent, int iDefaultF
 : wxDialog (pParent, -1, _T("Select Import Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
 : 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 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);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5);
-  
-  m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("File Type"), 
+
+  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);
     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);
   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);
   wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
   wxButton* pButtonOk = new wxButton (this, wxID_OK, "Okay");
   pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
@@ -1290,7 +1439,7 @@ DialogImportParameters::DialogImportParameters (wxWindow* pParent, int iDefaultF
   pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
   CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_IMPORT);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   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();
 
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
@@ -1318,33 +1467,33 @@ DialogGetXYSize::DialogGetXYSize (wxWindow* pParent, const char* const pszTitle,
   m_iDefaultYSize = iDefaultYSize;
 
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
   m_iDefaultYSize = iDefaultYSize;
 
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
+
   pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
   pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-  
+
   std::ostringstream os;
   os << iDefaultXSize;
   m_pTextCtrlXSize = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   std::ostringstream osYSize;
   osYSize << iDefaultYSize;
   m_pTextCtrlYSize = new wxTextCtrl (this, -1, osYSize.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   std::ostringstream os;
   os << iDefaultXSize;
   m_pTextCtrlXSize = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   std::ostringstream osYSize;
   osYSize << iDefaultYSize;
   m_pTextCtrlYSize = new wxTextCtrl (this, -1, osYSize.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
-  
+
   wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
   pGridSizer->Add (new wxStaticText (this, -1, "X Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (new wxStaticText (this, -1, "Y Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_CENTER_VERTICAL);
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
   wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
   pGridSizer->Add (new wxStaticText (this, -1, "X Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (new wxStaticText (this, -1, "Y Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_CENTER_VERTICAL);
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   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);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
 
@@ -1388,8 +1537,8 @@ DialogGetXYSize::getYSize ()
 // DialogGetConvertPolarParameters
 /////////////////////////////////////////////////////////////////////
 
 // DialogGetConvertPolarParameters
 /////////////////////////////////////////////////////////////////////
 
-DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pParent, const char* const pszTitle, 
-       int iDefaultXSize, int iDefaultYSize, int iDefaultInterpolationID, int iDefaultZeropad)
+DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pParent, const char* const pszTitle,
+       int iDefaultXSize, int iDefaultYSize, int iDefaultInterpolationID, int iDefaultZeropad, int iHelpID)
 : wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   m_iDefaultXSize = iDefaultXSize;
 : wxDialog (pParent, -1, _T(pszTitle), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
   m_iDefaultXSize = iDefaultXSize;
@@ -1397,20 +1546,20 @@ DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pPar
   m_iDefaultZeropad = iDefaultZeropad;
 
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
   m_iDefaultZeropad = iDefaultZeropad;
 
   wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
-  
-  pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); 
+
+  pTopSizer->Add (new wxStaticText (this, -1, pszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
-  
+
   wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (1);
   wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (1);
-  
+
   m_pRadioBoxInterpolation = new StringValueAndTitleRadioBox (this, _T("Interpolation"), Projections::getInterpCount(), Projections::getInterpTitleArray(), Projections::getInterpNameArray());
   m_pRadioBoxInterpolation->SetSelection (iDefaultInterpolationID);
   pGridSizer->Add (m_pRadioBoxInterpolation, 0, wxALL | wxALIGN_CENTER);
   m_pRadioBoxInterpolation = new StringValueAndTitleRadioBox (this, _T("Interpolation"), Projections::getInterpCount(), Projections::getInterpTitleArray(), Projections::getInterpNameArray());
   m_pRadioBoxInterpolation->SetSelection (iDefaultInterpolationID);
   pGridSizer->Add (m_pRadioBoxInterpolation, 0, wxALL | wxALIGN_CENTER);
-  
+
   wxFlexGridSizer* pTextGridSizer = new wxFlexGridSizer (2);
   std::ostringstream os;
   os << iDefaultXSize;
   wxFlexGridSizer* pTextGridSizer = new wxFlexGridSizer (2);
   std::ostringstream os;
   os << iDefaultXSize;
-  m_pTextCtrlXSize = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);  
+  m_pTextCtrlXSize = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   pTextGridSizer->Add (new wxStaticText (this, -1, "X Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pTextGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   std::ostringstream osYSize;
   pTextGridSizer->Add (new wxStaticText (this, -1, "X Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pTextGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   std::ostringstream osYSize;
@@ -1418,30 +1567,28 @@ DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pPar
   m_pTextCtrlYSize = new wxTextCtrl (this, -1, osYSize.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   pTextGridSizer->Add (new wxStaticText (this, -1, "Y Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pTextGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   m_pTextCtrlYSize = new wxTextCtrl (this, -1, osYSize.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
   pTextGridSizer->Add (new wxStaticText (this, -1, "Y Size"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
   pTextGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
-#ifdef DEBUG
-  if (iDefaultZeropad >= 0) {
+  if (m_iDefaultZeropad >= 0) {
     std::ostringstream osZeropad;
     osZeropad << iDefaultZeropad;
     m_pTextCtrlZeropad = new wxTextCtrl (this, -1, osZeropad.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
     pTextGridSizer->Add (new wxStaticText (this, -1, "Zeropad"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
     pTextGridSizer->Add (m_pTextCtrlZeropad, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   }
     std::ostringstream osZeropad;
     osZeropad << iDefaultZeropad;
     m_pTextCtrlZeropad = new wxTextCtrl (this, -1, osZeropad.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
     pTextGridSizer->Add (new wxStaticText (this, -1, "Zeropad"), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
     pTextGridSizer->Add (m_pTextCtrlZeropad, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
   }
-#endif
 
   pGridSizer->Add (pTextGridSizer, 0, wxALIGN_CENTER | wxALL);
 
   pTopSizer->Add (pGridSizer, 1, wxALL | wxALIGN_CENTER, 3);
 
   pGridSizer->Add (pTextGridSizer, 0, wxALIGN_CENTER | wxALL);
 
   pTopSizer->Add (pGridSizer, 1, wxALL | wxALIGN_CENTER, 3);
-  
+
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
   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);
   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_POLAR);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, iHelpID);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
   pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
-  
+
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
   SetAutoLayout (true);
   pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
   pButtonOk->SetDefault();
   SetAutoLayout (true);
@@ -1482,16 +1629,15 @@ DialogGetConvertPolarParameters::getYSize ()
 unsigned int
 DialogGetConvertPolarParameters::getZeropad ()
 {
 unsigned int
 DialogGetConvertPolarParameters::getZeropad ()
 {
-#ifdef DEBUG
-  wxString strCtrl = m_pTextCtrlZeropad->GetValue();
-  unsigned long lValue;
-  if (strCtrl.ToULong (&lValue))
-    return lValue;
-  else
-    return (m_iDefaultZeropad);
-#else
-  return 0;
-#endif
+  if (m_iDefaultZeropad >= 0) {
+    wxString strCtrl = m_pTextCtrlZeropad->GetValue();
+    unsigned long lValue;
+    if (strCtrl.ToULong (&lValue))
+      return lValue;
+    else
+      return (m_iDefaultZeropad);
+  } else
+    return 0;
 }
 
 const char*
 }
 
 const char*