2 * @file PropEditorSyntax.cpp
4 * @brief Implementation of PropEditorSyntax propertysheet
8 #include "PropEditorSyntax.h"
9 #include "OptionsDef.h"
10 #include "OptionsMgr.h"
11 #include "OptionsPanel.h"
12 #include "OptionsEditorSyntax.h"
20 * @param [in] optionsMgr Pointer to options manager for handling options.
22 PropEditorSyntax::PropEditorSyntax(COptionsMgr *optionsMgr)
23 : OptionsPanel(optionsMgr, PropEditorSyntax::IDD)
29 * @brief Function handling dialog data exchange between GUI and variables.
31 void PropEditorSyntax::DoDataExchange(CDataExchange* pDX)
33 CDialog::DoDataExchange(pDX);
35 //{{AFX_DATA_MAP(PropEditor)
36 DDX_Control(pDX, IDC_SYNTAX_LIST, m_listSyntax);
41 BEGIN_MESSAGE_MAP(PropEditorSyntax, OptionsPanel)
42 //{{AFX_MSG_MAP(PropEditor)
43 ON_BN_CLICKED(IDC_COMPARE_DEFAULTS, OnDefaults)
48 * @brief Reads options values from storage to UI.
50 void PropEditorSyntax::ReadOptions()
52 Options::EditorSyntax::Load(GetOptionsMgr(), m_Extension);
56 * @brief Writes options values from UI to storage.
58 void PropEditorSyntax::WriteOptions()
61 for (int i = CrystalLineParser::SRC_ASP; i <= CrystalLineParser::SRC_XML; ++i)
63 m_Extension[i-1] = m_listSyntax.GetItemText(i-1, 1);
64 WildcardRemoveDuplicatePatterns(m_Extension[i-1]);
67 Options::EditorSyntax::Save(GetOptionsMgr(), m_Extension);
71 * @brief Called before propertysheet is drawn.
73 BOOL PropEditorSyntax::OnInitDialog()
75 OptionsPanel::OnInitDialog();
80 return TRUE; // return TRUE unless you set the focus to a control
81 // EXCEPTION: OCX Property Pages should return FALSE
85 * @brief Initialize listcontrol containing file type extension settings.
87 void PropEditorSyntax::InitList()
89 // Show selection across entire row.
90 // Also enable infotips.
91 m_listSyntax.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP);
93 const int lpx = CClientDC(this).GetDeviceCaps(LOGPIXELSX);
94 auto pointToPixel = [lpx](int point) { return MulDiv(point, lpx, 72); };
96 String title = _("File Type");
97 m_listSyntax.InsertColumn(0, title.c_str(), LVCFMT_LEFT, pointToPixel(60));
98 title = _("Extension");
99 m_listSyntax.InsertColumn(1, title.c_str(), LVCFMT_LEFT, pointToPixel(196));
101 m_listSyntax.SetReadOnlyColumn(0);
102 m_listSyntax.SetEditStyle(1, CSubeditList::EditStyle::WILDCARD_DROP_LIST);
104 int nLimitTextSize = (sizeof(CrystalLineParser::TextDefinition::exts) / sizeof(CrystalLineParser::TextDefinition::exts[0])) - 1;
105 m_listSyntax.SetLimitTextSize(1, nLimitTextSize);
107 String fixedPattern[CrystalLineParser::SRC_XML];
108 Options::EditorSyntax::GetDefaults(GetOptionsMgr(), fixedPattern);
110 for (int i = CrystalLineParser::SRC_ASP; i <= CrystalLineParser::SRC_XML; ++i)
112 CrystalLineParser::TextDefinition* def = CrystalLineParser::GetTextType(i);
114 ASSERT(def != nullptr);
117 m_listSyntax.InsertItem(i-1, def->name);
118 m_listSyntax.SetItemText(i-1, 1, m_Extension[i-1].c_str());
119 m_listSyntax.SetDropListFixedPattern(i-1, 1, fixedPattern[i-1]);
125 * @brief Sets options to defaults
127 void PropEditorSyntax::OnDefaults()
129 Options::EditorSyntax::GetDefaults(GetOptionsMgr(), m_Extension);
130 for (int i = CrystalLineParser::SRC_ASP; i <= CrystalLineParser::SRC_XML; ++i)
131 m_listSyntax.SetItemText(i-1, 1, m_Extension[i-1].c_str());