Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / UI / FileManager / EditPage.cpp
1 // EditPage.cpp\r
2 \r
3 #include "StdAfx.h"\r
4 \r
5 #include "EditPage.h"\r
6 #include "EditPageRes.h"\r
7 \r
8 #include "BrowseDialog.h"\r
9 #include "HelpUtils.h"\r
10 #include "LangUtils.h"\r
11 #include "RegistryUtils.h"\r
12 \r
13 using namespace NWindows;\r
14 \r
15 static CIDLangPair kIDLangPairs[] =\r
16 {\r
17   { IDC_EDIT_STATIC_EDITOR, 0x03010201},\r
18   { IDC_EDIT_STATIC_DIFF, 0x03010202}\r
19 };\r
20 \r
21 static LPCWSTR kEditTopic = L"FM/options.htm#editor";\r
22 \r
23 bool CEditPage::OnInit()\r
24 {\r
25   LangSetDlgItemsText(HWND(*this), kIDLangPairs, sizeof(kIDLangPairs) / sizeof(kIDLangPairs[0]));\r
26 \r
27   _editor.Attach(GetItem(IDC_EDIT_EDIT_EDITOR));\r
28   _diff.Attach(GetItem(IDC_EDIT_EDIT_DIFF));\r
29   \r
30   {\r
31     UString path;\r
32     ReadRegEditor(path);\r
33     _editor.SetText(path);\r
34   }\r
35   {\r
36     UString path;\r
37     ReadRegDiff(path);\r
38     _diff.SetText(path);\r
39   }\r
40   return CPropertyPage::OnInit();\r
41 }\r
42 \r
43 LONG CEditPage::OnApply()\r
44 {\r
45   {\r
46     UString path;\r
47     _editor.GetText(path);\r
48     SaveRegEditor(path);\r
49   }\r
50   {\r
51     UString path;\r
52     _diff.GetText(path);\r
53     SaveRegDiff(path);\r
54   }\r
55   return PSNRET_NOERROR;\r
56 }\r
57 \r
58 void CEditPage::OnNotifyHelp()\r
59 {\r
60   ShowHelpWindow(NULL, kEditTopic);\r
61 }\r
62 \r
63 static void Edit_BrowseForFile(NWindows::NControl::CEdit &edit, HWND hwnd)\r
64 {\r
65   UString path;\r
66   edit.GetText(path);\r
67   UString resPath;\r
68   if (MyBrowseForFile(hwnd, 0, path, L"*.exe", resPath))\r
69   {\r
70     edit.SetText(resPath);\r
71     // Changed();\r
72   }\r
73 }\r
74 \r
75 bool CEditPage::OnButtonClicked(int buttonID, HWND buttonHWND)\r
76 {\r
77   switch (buttonID)\r
78   {\r
79     case IDC_EDIT_BUTTON_EDITOR:\r
80       Edit_BrowseForFile(_editor, *this);\r
81       return true;\r
82     case IDC_EDIT_BUTTON_DIFF:\r
83       Edit_BrowseForFile(_diff, *this);\r
84       return true;\r
85   }\r
86   return CPropertyPage::OnButtonClicked(buttonID, buttonHWND);\r
87 }\r
88 \r
89 bool CEditPage::OnCommand(int code, int itemID, LPARAM param)\r
90 {\r
91   if (code == EN_CHANGE &&\r
92       (itemID == IDC_EDIT_EDIT_EDITOR ||\r
93       itemID == IDC_EDIT_EDIT_DIFF))\r
94   {\r
95     Changed();\r
96     return true;\r
97   }\r
98   return CPropertyPage::OnCommand(code, itemID, param);\r
99 }\r