OSDN Git Service

autoit.cpp - Macros >> User 1 ..... Variable >> User 2 (#749) (2)
[winmerge-jp/winmerge-jp.git] / Src / PropEditorSyntax.cpp
1 /** 
2  * @file  PropEditorSyntax.cpp
3  *
4  * @brief Implementation of PropEditorSyntax propertysheet
5  */
6
7 #include "stdafx.h"
8 #include "PropEditorSyntax.h"
9 #include "OptionsDef.h"
10 #include "OptionsMgr.h"
11 #include "OptionsPanel.h"
12 #include "OptionsEditorSyntax.h"
13
14 #ifdef _DEBUG
15 #define new DEBUG_NEW
16 #endif
17
18 /** 
19  * @brief Constructor.
20  * @param [in] optionsMgr Pointer to options manager for handling options.
21  */
22 PropEditorSyntax::PropEditorSyntax(COptionsMgr *optionsMgr)
23 : OptionsPanel(optionsMgr, PropEditorSyntax::IDD)
24   , m_init(false)
25 {
26 }
27
28 /** 
29  * @brief Function handling dialog data exchange between GUI and variables.
30  */
31 void PropEditorSyntax::DoDataExchange(CDataExchange* pDX)
32 {
33         CDialog::DoDataExchange(pDX);
34
35         //{{AFX_DATA_MAP(PropEditor)
36         DDX_Control(pDX, IDC_SYNTAX_LIST, m_listSyntax);
37         //}}AFX_DATA_MAP
38 }
39
40
41 BEGIN_MESSAGE_MAP(PropEditorSyntax, OptionsPanel)
42         //{{AFX_MSG_MAP(PropEditor)
43         ON_BN_CLICKED(IDC_COMPARE_DEFAULTS, OnDefaults)
44         //}}AFX_MSG_MAP
45 END_MESSAGE_MAP()
46
47 /** 
48  * @brief Reads options values from storage to UI.
49  */
50 void PropEditorSyntax::ReadOptions()
51 {
52         Options::EditorSyntax::Load(GetOptionsMgr(), m_Extension);
53 }
54
55 /** 
56  * @brief Writes options values from UI to storage.
57  */
58 void PropEditorSyntax::WriteOptions()
59 {
60         if (m_init)
61                 for (int i = CrystalLineParser::SRC_ASP; i <= CrystalLineParser::SRC_XML; ++i)
62                 {
63                         m_Extension[i-1] = m_listSyntax.GetItemText(i-1, 1);
64                         WildcardRemoveDuplicatePatterns(m_Extension[i-1]);
65                 }
66
67         Options::EditorSyntax::Save(GetOptionsMgr(), m_Extension);
68 }
69
70 /** 
71  * @brief Called before propertysheet is drawn.
72  */
73 BOOL PropEditorSyntax::OnInitDialog()
74 {
75         OptionsPanel::OnInitDialog();
76
77         InitList();
78         m_init = true;
79
80         return TRUE;  // return TRUE unless you set the focus to a control
81                                   // EXCEPTION: OCX Property Pages should return FALSE
82 }
83
84 /**
85  * @brief Initialize listcontrol containing file type extension settings.
86  */
87 void PropEditorSyntax::InitList()
88 {
89         // Show selection across entire row.
90         // Also enable infotips.
91         m_listSyntax.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP);
92
93         const int lpx = CClientDC(this).GetDeviceCaps(LOGPIXELSX);
94         auto pointToPixel = [lpx](int point) { return MulDiv(point, lpx, 72); };
95
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));
100
101         m_listSyntax.SetReadOnlyColumn(0);
102         m_listSyntax.SetEditStyle(1, CSubeditList::EditStyle::WILDCARD_DROP_LIST);
103
104         int nLimitTextSize = (sizeof(CrystalLineParser::TextDefinition::exts) / sizeof(CrystalLineParser::TextDefinition::exts[0])) - 1;
105         m_listSyntax.SetLimitTextSize(1, nLimitTextSize);
106
107         String fixedPattern[CrystalLineParser::SRC_XML];
108         Options::EditorSyntax::GetDefaults(GetOptionsMgr(), fixedPattern);
109
110         for (int i = CrystalLineParser::SRC_ASP; i <= CrystalLineParser::SRC_XML; ++i)
111         {
112                 CrystalLineParser::TextDefinition* def = CrystalLineParser::GetTextType(i);
113                 
114                 ASSERT(def != nullptr);
115                 if (def != nullptr)
116                 {
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]);
120                 }
121         }
122 }
123
124 /**
125  * @brief Sets options to defaults
126  */
127 void PropEditorSyntax::OnDefaults()
128 {
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());
132 }