StepGuider::StepGuiderConfigDialogPane::StepGuiderConfigDialogPane(wxWindow *pParent, StepGuider *pStepGuider) : MountConfigDialogPane(pParent, _("AO Settings"), pStepGuider) { int width; m_pStepGuider = pStepGuider; width = StringWidth(_T("000")); m_pCalibrationStepsPerIteration = new wxSpinCtrl(pParent, wxID_ANY,_T("foo2"), wxPoint(-1,-1), wxSize(width+30, -1), wxSP_ARROW_KEYS, 0, 10, 3,_T("Cal_Steps")); DoAdd(_("Calibration Steps"), m_pCalibrationStepsPerIteration, wxString::Format(_("How many steps should be issued per calibration cycle. Default = %d, increase for short f/l scopes and decrease for longer f/l scopes"), DefaultCalibrationStepsPerIteration)); width = StringWidth(_T("000")); m_pSamplesToAverage = new wxSpinCtrl(pParent, wxID_ANY,_T("foo2"), wxPoint(-1,-1), wxSize(width+30, -1), wxSP_ARROW_KEYS, 0, 9, 0, _T("Samples_To_Average")); DoAdd(_("Samples to Average"), m_pSamplesToAverage, wxString::Format(_("When calibrating, how many samples should be averaged. Default = %d, increase for worse seeing and small imaging scales"), DefaultSamplesToAverage)); width = StringWidth(_T("000")); m_pBumpPercentage = new wxSpinCtrl(pParent, wxID_ANY,_T("foo2"), wxPoint(-1,-1), wxSize(width+30, -1), wxSP_ARROW_KEYS, 0, 99, 0, _T("Bump_Percentage")); DoAdd(_("Bump Percentage"), m_pBumpPercentage, wxString::Format(_("What percentage of the AO travel can be used before bumping the mount. Default = %d"), DefaultBumpPercentage)); width = StringWidth(_T("00.00")); m_pBumpMaxStepsPerCycle = new wxSpinCtrlDouble(pParent, wxID_ANY,_T("foo2"), wxPoint(-1,-1), wxSize(width+30, -1), wxSP_ARROW_KEYS, 0.01, 99.99, 0.0, 0.25, _T("Bump_steps")); wxSizer *sz = MakeLabeledControl(_("Bump Step"), m_pBumpMaxStepsPerCycle, wxString::Format(_("How far should a mount bump move the mount between images (in AO steps). Default = %.2f, decrease if mount bumps cause spikes on the graph"), DefaultBumpMaxStepsPerCycle)); m_bumpOnDither = new wxCheckBox(pParent, wxID_ANY, _("Bump on Dither")); m_bumpOnDither->SetToolTip(_("Bump the mount to return the AO to center at each dither")); wxSizer *hsz = new wxBoxSizer(wxHORIZONTAL); hsz->Add(sz, wxSizerFlags(1)); hsz->Add(m_bumpOnDither, wxSizerFlags(1).Right().Border(wxLEFT, 15).Align(wxALIGN_CENTER_VERTICAL)); DoAdd(hsz); }
CameraConfigDialogCtrlSet::CameraConfigDialogCtrlSet(wxWindow *pParent, GuideCamera *pCamera, AdvancedDialog *pAdvancedDialog, BrainCtrlIdMap& CtrlMap) : ConfigDialogCtrlSet(pParent, pAdvancedDialog, CtrlMap) { assert(pCamera); m_pCamera = pCamera; if (m_pCamera->HasSubframes) { m_pUseSubframes = new wxCheckBox(GetParentWindow(AD_cbUseSubFrames), wxID_ANY, _("Use Subframes")); AddCtrl(CtrlMap, AD_cbUseSubFrames, m_pUseSubframes, _("Check to only download subframes (ROIs). Sub-frame size is equal to search region size.")); } int numRows = (int)m_pCamera->HasGainControl + (int)m_pCamera->HasDelayParam + (int)m_pCamera->HasPortNum + 1; int width = StringWidth(_T("0000")) + 30; // Pixel size always m_pPixelSize = NewSpinnerDouble(GetParentWindow(AD_szPixelSize), width, m_pCamera->GetCameraPixelSize(), 0.0, 99.9, 0.1, _("Guide camera un-binned pixel size in microns. Used with the guide telescope focal length to display guiding error in arc-seconds.")); AddLabeledCtrl(CtrlMap, AD_szPixelSize, _("Pixel size"), m_pPixelSize, ""); // Gain control if (m_pCamera->HasGainControl) { int width = StringWidth(_T("0000")) + 30; m_pCameraGain = NewSpinnerInt(GetParentWindow(AD_szGain), width, 100, 0, 100, 1); AddLabeledCtrl(CtrlMap, AD_szGain, _("Camera gain"), m_pCameraGain, _("Camera gain, default = 95 % , lower if you experience noise or wish to guide on a very bright star. Not available on all cameras.")); } // Binning m_binning = 0; if (m_pCamera->MaxBinning > 1) { wxArrayString opts; m_pCamera->GetBinningOpts(&opts); int width = StringArrayWidth(opts); m_binning = new wxChoice(GetParentWindow(AD_binning), wxID_ANY, wxPoint(-1, -1), wxSize(width + 35, -1), opts); AddLabeledCtrl(CtrlMap, AD_binning, _("Binning"), m_binning, _("Camera pixel binning")); } // Delay parameter if (m_pCamera->HasDelayParam) { int width = StringWidth(_T("0000")) + 30; m_pDelay = NewSpinnerInt(GetParentWindow(AD_szDelay), width, 5, 0, 250, 150); AddLabeledCtrl(CtrlMap, AD_szDelay, _("Delay"), m_pDelay, _("LE Read Delay (ms) , Adjust if you get dropped frames")); } // Port number if (m_pCamera->HasPortNum) { wxString port_choices[] = { _T("Port 378"), _T("Port 3BC"), _T("Port 278"), _T("COM1"), _T("COM2"), _T("COM3"), _T("COM4"), _T("COM5"), _T("COM6"), _T("COM7"), _T("COM8"), _T("COM9"), _T("COM10"), _T("COM11"), _T("COM12"), _T("COM13"), _T("COM14"), _T("COM15"), _T("COM16"), }; int width = StringArrayWidth(port_choices, WXSIZEOF(port_choices)); m_pPortNum = new wxChoice(GetParentWindow(AD_szPort), wxID_ANY, wxPoint(-1, -1), wxSize(width + 35, -1), WXSIZEOF(port_choices), port_choices); AddLabeledCtrl(CtrlMap, AD_szPort, _("LE Port"), m_pPortNum, _("Port number for long-exposure control")); } if (m_pCamera->HasCooler) { wxSizer *sz = new wxBoxSizer(wxHORIZONTAL); m_coolerOn = new wxCheckBox(GetParentWindow(AD_cooler), wxID_ANY, _("Cooler On")); m_coolerOn->SetToolTip(_("Turn camera cooler on or off")); sz->Add(m_coolerOn, wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL).Border(wxRIGHT)); m_coolerSetpt = NewSpinnerInt(GetParentWindow(AD_szDelay), width, 5, -99, 99, 1); wxSizer *szt = MakeLabeledControl(AD_cooler, _("Set Temperature"), m_coolerSetpt, _("Cooler setpoint temperature")); sz->Add(szt, wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL)); AddGroup(CtrlMap, AD_cooler, sz); } // Watchdog timeout { int width = StringWidth(_T("0000")) + 30; m_timeoutVal = NewSpinnerInt(GetParentWindow(AD_szCameraTimeout), width, 5, 5, 9999, 1); AddLabeledCtrl(CtrlMap, AD_szCameraTimeout, _("Disconnect nonresponsive\ncamera after (seconds)"), m_timeoutVal, wxString::Format(_("The camera will be disconnected if it fails to respond for this long. " "The default value, %d seconds, should be appropriate for most cameras."), DefaultGuideCameraTimeoutMs / 1000)); } }