Exteor/src/dialog/OptionsDialog.cpp
2024-06-07 20:30:06 +03:00

193 lines
6.0 KiB
C++

#include "stdafx.h"
#include "xtr/dialog/OptionsDialog.h"
#include "resource.h"
#include "xtr/ExteorOptions.h"
#include "xtr/ui/HelpHandler.h"
namespace xtr::dialog {
ExteorOptionsSheet::ExteorOptionsSheet(CWnd* pWndParent)
: CPropertySheet(IXTRS_APP_PROPERTIES, pWndParent) {
AddPage(&m_App);
AddPage(&m_OSS);
AddPage(&parsing);
AddPage(&m_RSModel);
}
BOOL ExteorOptionsSheet::PreTranslateMessage(MSG* pMsg) {
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_F1) {
ui::HelpHandler::RunHelp(ui::HelpID::options);
return TRUE;
} else {
return CPropertySheet::PreTranslateMessage(pMsg);
}
}
#pragma warning( push )
#pragma warning( disable : 26440 26436 26454 )
BEGIN_MESSAGE_MAP(GeneralPage, CDialog)
ON_BN_CLICKED(IXTRC_FILE_VERSION_PROMT, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_START_PAGE, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_LOAD_PYTHON, &ThisClass::OnChange)
ON_EN_CHANGE(IXTRC_PYTHONPATH, &ThisClass::OnChange)
END_MESSAGE_MAP()
#pragma warning( pop )
GeneralPage::GeneralPage()
: CPropertyPage(IXTRD_OPTION_APPLICATION) {
promptVersion = XTROptions::App().promptVersion;
showStartPage = XTROptions::App().showStartPage;
disableAutoKeyboard = XTROptions::App().disableAutoKeyboard;
enablePython = XTROptions::App().enablePython;
pythonPath = XTROptions::App().pythonPath;
}
void GeneralPage::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
::DDX_Check(pDX, IXTRC_FILE_VERSION_PROMT, promptVersion);
::DDX_Check(pDX, IXTRC_START_PAGE, showStartPage);
::DDX_Check(pDX, IXTRC_LOAD_PYTHON, enablePython);
::DDX_Check(pDX, IXTRC_DISABLE_AUTOLANG, disableAutoKeyboard);
::DDX_Text(pDX, IXTRC_PYTHONPATH, pythonPath);
}
void GeneralPage::OnOK() {
XTROptions::App().promptVersion = promptVersion;
XTROptions::App().showStartPage = showStartPage;
XTROptions::App().enablePython = enablePython;
XTROptions::App().disableAutoKeyboard = disableAutoKeyboard;
XTROptions::App().pythonPath = pythonPath;
CPropertyPage::OnOK();
}
#pragma warning( push )
#pragma warning( disable : 26440 26436 26454 )
BEGIN_MESSAGE_MAP(OSSPage, CDialog)
ON_BN_CLICKED(IXTRC_OSS_RUN_AFTER_CLK_OK, &ThisClass::OnChange)
ON_EN_CHANGE(IXTRC_ZOOM_INT, &ThisClass::OnChange)
ON_EN_CHANGE(IXTRC_OSS_GRID_ENABLED, &ThisClass::OnChange)
END_MESSAGE_MAP()
#pragma warning( pop )
OSSPage::OSSPage() : CPropertyPage(IXTRD_OPTION_OSS) {
m_RunOperation = XTROptions::OSS().runOpAfterEdit;
zoom = XTROptions::OSS().zoom;
m_EnableGrid = XTROptions::OSS().showGrid;
}
void OSSPage::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
::DDX_Check(pDX, IXTRC_OSS_RUN_AFTER_CLK_OK, m_RunOperation);
::DDX_Check(pDX, IXTRC_OSS_GRID_ENABLED, m_EnableGrid);
::DDX_Text(pDX, IXTRC_ZOOM_INT, zoom);
::DDV_MinMaxUInt(pDX, zoom, ossOptions::zoomMin, ossOptions::zoomMax);
}
BOOL OSSPage::OnInitDialog() {
CPropertyPage::OnInitDialog();
return TRUE;
}
void OSSPage::OnOK() {
XTROptions::OSS().runOpAfterEdit = m_RunOperation;
XTROptions::OSS().zoom = zoom;
XTROptions::OSS().showGrid = m_EnableGrid;
CPropertyPage::OnOK();
}
#pragma warning( push )
#pragma warning( disable : 26440 26436 26454 )
BEGIN_MESSAGE_MAP(ParsingPage, CDialog)
ON_BN_CLICKED(IXTRC_SA_AUTOCHECK, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXCST0, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXCST1, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXCST2, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXLOCAL0, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXLOCAL1, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXLOCAL2, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXPR0, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXPR1, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_INDEXPR2, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_SA_COLOR_PAR, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_SA_AST, &ThisClass::OnChange)
ON_BN_CLICKED(IXTRC_SA_RSNAVIGATOR, &ThisClass::OnChange)
END_MESSAGE_MAP()
#pragma warning( pop )
ParsingPage::ParsingPage() : CPropertyPage(IXTRD_OPTION_ANALYZER) {
autoCheck = XTROptions::ParseRSL().autoCheck;
colorBrackets = XTROptions::ParseRSL().colorBrackets;
showAST = XTROptions::ParseRSL().showAST;
enableNavigator = XTROptions::ParseRSL().enableNavigator;
m_IndexCst = static_cast<int32_t>(XTROptions::ParseRSL().indexing.global);
m_IndexLocal = static_cast<int32_t>(XTROptions::ParseRSL().indexing.local);
m_IndexPr = static_cast<int32_t>(XTROptions::ParseRSL().indexing.operators);
}
void ParsingPage::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
::DDX_Check(pDX, IXTRC_SA_AUTOCHECK, autoCheck);
::DDX_Check(pDX, IXTRC_SA_COLOR_PAR, colorBrackets);
::DDX_Check(pDX, IXTRC_SA_AST, showAST);
::DDX_Check(pDX, IXTRC_SA_RSNAVIGATOR, enableNavigator);
::DDX_Radio(pDX, IXTRC_INDEXCST0, m_IndexCst);
::DDX_Radio(pDX, IXTRC_INDEXLOCAL0, m_IndexLocal);
::DDX_Radio(pDX, IXTRC_INDEXPR0, m_IndexPr);
}
void ParsingPage::OnOK() {
XTROptions::ParseRSL().autoCheck = autoCheck;
XTROptions::ParseRSL().colorBrackets = colorBrackets;
XTROptions::ParseRSL().showAST = showAST;
XTROptions::ParseRSL().enableNavigator = enableNavigator;
XTROptions::ParseRSL().indexing.global = static_cast<index::Digits>(m_IndexCst);
XTROptions::ParseRSL().indexing.local = static_cast<index::Digits>(m_IndexLocal);
XTROptions::ParseRSL().indexing.operators = static_cast<index::Digits>(m_IndexPr);
CPropertyPage::OnOK();
}
#pragma warning( push )
#pragma warning( disable : 26440 26436 26454 )
BEGIN_MESSAGE_MAP(ModelPage, CDialog)
ON_BN_CLICKED(IXTRC_DATAMODE, &ThisClass::OnChange)
END_MESSAGE_MAP()
#pragma warning( pop )
ModelPage::ModelPage()
: CPropertyPage(IXTRD_OPTION_MODEL) {
m_DataMode = XTROptions::Model().m_DataMode;
}
void ModelPage::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
::DDX_Check(pDX, IXTRC_DATAMODE, m_DataMode);
}
void ModelPage::OnOK() {
XTROptions::Model().m_DataMode = m_DataMode;
CPropertyPage::OnOK();
}
} // namespace xtr::dialog