xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/EditPage.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // EditPage.cpp
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #include "EditPage.h"
6*f6dc9357SAndroid Build Coastguard Worker #include "EditPageRes.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker #include "BrowseDialog.h"
9*f6dc9357SAndroid Build Coastguard Worker #include "HelpUtils.h"
10*f6dc9357SAndroid Build Coastguard Worker #include "LangUtils.h"
11*f6dc9357SAndroid Build Coastguard Worker #include "RegistryUtils.h"
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker using namespace NWindows;
14*f6dc9357SAndroid Build Coastguard Worker 
15*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_LANG
16*f6dc9357SAndroid Build Coastguard Worker static const UInt32 kLangIDs[] =
17*f6dc9357SAndroid Build Coastguard Worker {
18*f6dc9357SAndroid Build Coastguard Worker   IDT_EDIT_EDITOR,
19*f6dc9357SAndroid Build Coastguard Worker   IDT_EDIT_DIFF
20*f6dc9357SAndroid Build Coastguard Worker };
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker static const UInt32 kLangIDs_Colon[] =
23*f6dc9357SAndroid Build Coastguard Worker {
24*f6dc9357SAndroid Build Coastguard Worker   IDT_EDIT_VIEWER
25*f6dc9357SAndroid Build Coastguard Worker };
26*f6dc9357SAndroid Build Coastguard Worker #endif
27*f6dc9357SAndroid Build Coastguard Worker 
28*f6dc9357SAndroid Build Coastguard Worker #define kEditTopic "FM/options.htm#editor"
29*f6dc9357SAndroid Build Coastguard Worker 
OnInit()30*f6dc9357SAndroid Build Coastguard Worker bool CEditPage::OnInit()
31*f6dc9357SAndroid Build Coastguard Worker {
32*f6dc9357SAndroid Build Coastguard Worker   _initMode = true;
33*f6dc9357SAndroid Build Coastguard Worker 
34*f6dc9357SAndroid Build Coastguard Worker   #ifdef Z7_LANG
35*f6dc9357SAndroid Build Coastguard Worker   LangSetDlgItems(*this, kLangIDs, Z7_ARRAY_SIZE(kLangIDs));
36*f6dc9357SAndroid Build Coastguard Worker   LangSetDlgItems_Colon(*this, kLangIDs_Colon, Z7_ARRAY_SIZE(kLangIDs_Colon));
37*f6dc9357SAndroid Build Coastguard Worker   #endif
38*f6dc9357SAndroid Build Coastguard Worker 
39*f6dc9357SAndroid Build Coastguard Worker   _ctrls[0].Ctrl = IDE_EDIT_VIEWER; _ctrls[0].Button = IDB_EDIT_VIEWER;
40*f6dc9357SAndroid Build Coastguard Worker   _ctrls[1].Ctrl = IDE_EDIT_EDITOR; _ctrls[1].Button = IDB_EDIT_EDITOR;
41*f6dc9357SAndroid Build Coastguard Worker   _ctrls[2].Ctrl = IDE_EDIT_DIFF;   _ctrls[2].Button = IDB_EDIT_DIFF;
42*f6dc9357SAndroid Build Coastguard Worker 
43*f6dc9357SAndroid Build Coastguard Worker   for (unsigned i = 0; i < 3; i++)
44*f6dc9357SAndroid Build Coastguard Worker   {
45*f6dc9357SAndroid Build Coastguard Worker     CEditPageCtrl &c = _ctrls[i];
46*f6dc9357SAndroid Build Coastguard Worker     c.WasChanged = false;
47*f6dc9357SAndroid Build Coastguard Worker     c.Edit.Attach(GetItem(c.Ctrl));
48*f6dc9357SAndroid Build Coastguard Worker     UString path;
49*f6dc9357SAndroid Build Coastguard Worker     if (i < 2)
50*f6dc9357SAndroid Build Coastguard Worker       ReadRegEditor(i > 0, path);
51*f6dc9357SAndroid Build Coastguard Worker     else
52*f6dc9357SAndroid Build Coastguard Worker       ReadRegDiff(path);
53*f6dc9357SAndroid Build Coastguard Worker     c.Edit.SetText(path);
54*f6dc9357SAndroid Build Coastguard Worker   }
55*f6dc9357SAndroid Build Coastguard Worker 
56*f6dc9357SAndroid Build Coastguard Worker   _initMode = false;
57*f6dc9357SAndroid Build Coastguard Worker 
58*f6dc9357SAndroid Build Coastguard Worker   return CPropertyPage::OnInit();
59*f6dc9357SAndroid Build Coastguard Worker }
60*f6dc9357SAndroid Build Coastguard Worker 
OnApply()61*f6dc9357SAndroid Build Coastguard Worker LONG CEditPage::OnApply()
62*f6dc9357SAndroid Build Coastguard Worker {
63*f6dc9357SAndroid Build Coastguard Worker   for (unsigned i = 0; i < 3; i++)
64*f6dc9357SAndroid Build Coastguard Worker   {
65*f6dc9357SAndroid Build Coastguard Worker     CEditPageCtrl &c = _ctrls[i];
66*f6dc9357SAndroid Build Coastguard Worker     if (c.WasChanged)
67*f6dc9357SAndroid Build Coastguard Worker     {
68*f6dc9357SAndroid Build Coastguard Worker       UString path;
69*f6dc9357SAndroid Build Coastguard Worker       c.Edit.GetText(path);
70*f6dc9357SAndroid Build Coastguard Worker       if (i < 2)
71*f6dc9357SAndroid Build Coastguard Worker         SaveRegEditor(i > 0, path);
72*f6dc9357SAndroid Build Coastguard Worker       else
73*f6dc9357SAndroid Build Coastguard Worker         SaveRegDiff(path);
74*f6dc9357SAndroid Build Coastguard Worker       c.WasChanged = false;
75*f6dc9357SAndroid Build Coastguard Worker     }
76*f6dc9357SAndroid Build Coastguard Worker   }
77*f6dc9357SAndroid Build Coastguard Worker 
78*f6dc9357SAndroid Build Coastguard Worker   return PSNRET_NOERROR;
79*f6dc9357SAndroid Build Coastguard Worker }
80*f6dc9357SAndroid Build Coastguard Worker 
OnNotifyHelp()81*f6dc9357SAndroid Build Coastguard Worker void CEditPage::OnNotifyHelp()
82*f6dc9357SAndroid Build Coastguard Worker {
83*f6dc9357SAndroid Build Coastguard Worker   ShowHelpWindow(kEditTopic);
84*f6dc9357SAndroid Build Coastguard Worker }
85*f6dc9357SAndroid Build Coastguard Worker 
86*f6dc9357SAndroid Build Coastguard Worker void SplitCmdLineSmart(const UString &cmd, UString &prg, UString &params);
87*f6dc9357SAndroid Build Coastguard Worker 
Edit_BrowseForFile(NWindows::NControl::CEdit & edit,HWND hwnd)88*f6dc9357SAndroid Build Coastguard Worker static void Edit_BrowseForFile(NWindows::NControl::CEdit &edit, HWND hwnd)
89*f6dc9357SAndroid Build Coastguard Worker {
90*f6dc9357SAndroid Build Coastguard Worker   UString cmd;
91*f6dc9357SAndroid Build Coastguard Worker   edit.GetText(cmd);
92*f6dc9357SAndroid Build Coastguard Worker 
93*f6dc9357SAndroid Build Coastguard Worker   UString param;
94*f6dc9357SAndroid Build Coastguard Worker   UString prg;
95*f6dc9357SAndroid Build Coastguard Worker 
96*f6dc9357SAndroid Build Coastguard Worker   SplitCmdLineSmart(cmd, prg, param);
97*f6dc9357SAndroid Build Coastguard Worker 
98*f6dc9357SAndroid Build Coastguard Worker   CObjectVector<CBrowseFilterInfo> filters;
99*f6dc9357SAndroid Build Coastguard Worker   CBrowseFilterInfo &bfi = filters.AddNew();
100*f6dc9357SAndroid Build Coastguard Worker   bfi.Description = "*.exe";
101*f6dc9357SAndroid Build Coastguard Worker   bfi.Masks.Add(UString("*.exe"));
102*f6dc9357SAndroid Build Coastguard Worker 
103*f6dc9357SAndroid Build Coastguard Worker   CBrowseInfo bi;
104*f6dc9357SAndroid Build Coastguard Worker   bi.FilterIndex = 0;
105*f6dc9357SAndroid Build Coastguard Worker   bi.FilePath = prg;
106*f6dc9357SAndroid Build Coastguard Worker   bi.hwndOwner = hwnd;
107*f6dc9357SAndroid Build Coastguard Worker 
108*f6dc9357SAndroid Build Coastguard Worker   if (bi.BrowseForFile(filters))
109*f6dc9357SAndroid Build Coastguard Worker   {
110*f6dc9357SAndroid Build Coastguard Worker     cmd = bi.FilePath;
111*f6dc9357SAndroid Build Coastguard Worker     cmd.Trim();
112*f6dc9357SAndroid Build Coastguard Worker     /*
113*f6dc9357SAndroid Build Coastguard Worker     if (!param.IsEmpty() && !resPath.IsEmpty())
114*f6dc9357SAndroid Build Coastguard Worker     {
115*f6dc9357SAndroid Build Coastguard Worker       cmd.InsertAtFront(L'\"');
116*f6dc9357SAndroid Build Coastguard Worker       cmd += L'\"';
117*f6dc9357SAndroid Build Coastguard Worker       cmd.Add_Space();
118*f6dc9357SAndroid Build Coastguard Worker       cmd += param;
119*f6dc9357SAndroid Build Coastguard Worker     }
120*f6dc9357SAndroid Build Coastguard Worker     */
121*f6dc9357SAndroid Build Coastguard Worker 
122*f6dc9357SAndroid Build Coastguard Worker     edit.SetText(cmd);
123*f6dc9357SAndroid Build Coastguard Worker     // Changed();
124*f6dc9357SAndroid Build Coastguard Worker   }
125*f6dc9357SAndroid Build Coastguard Worker }
126*f6dc9357SAndroid Build Coastguard Worker 
OnButtonClicked(unsigned buttonID,HWND buttonHWND)127*f6dc9357SAndroid Build Coastguard Worker bool CEditPage::OnButtonClicked(unsigned buttonID, HWND buttonHWND)
128*f6dc9357SAndroid Build Coastguard Worker {
129*f6dc9357SAndroid Build Coastguard Worker   for (unsigned i = 0; i < 3; i++)
130*f6dc9357SAndroid Build Coastguard Worker   {
131*f6dc9357SAndroid Build Coastguard Worker     CEditPageCtrl &c = _ctrls[i];
132*f6dc9357SAndroid Build Coastguard Worker     if (buttonID == c.Button)
133*f6dc9357SAndroid Build Coastguard Worker     {
134*f6dc9357SAndroid Build Coastguard Worker       Edit_BrowseForFile(c.Edit, *this);
135*f6dc9357SAndroid Build Coastguard Worker       return true;
136*f6dc9357SAndroid Build Coastguard Worker     }
137*f6dc9357SAndroid Build Coastguard Worker   }
138*f6dc9357SAndroid Build Coastguard Worker 
139*f6dc9357SAndroid Build Coastguard Worker   return CPropertyPage::OnButtonClicked(buttonID, buttonHWND);
140*f6dc9357SAndroid Build Coastguard Worker }
141*f6dc9357SAndroid Build Coastguard Worker 
OnCommand(unsigned code,unsigned itemID,LPARAM param)142*f6dc9357SAndroid Build Coastguard Worker bool CEditPage::OnCommand(unsigned code, unsigned itemID, LPARAM param)
143*f6dc9357SAndroid Build Coastguard Worker {
144*f6dc9357SAndroid Build Coastguard Worker   if (!_initMode && code == EN_CHANGE)
145*f6dc9357SAndroid Build Coastguard Worker   {
146*f6dc9357SAndroid Build Coastguard Worker     for (unsigned i = 0; i < 3; i++)
147*f6dc9357SAndroid Build Coastguard Worker     {
148*f6dc9357SAndroid Build Coastguard Worker       CEditPageCtrl &c = _ctrls[i];
149*f6dc9357SAndroid Build Coastguard Worker       if (itemID == c.Ctrl)
150*f6dc9357SAndroid Build Coastguard Worker       {
151*f6dc9357SAndroid Build Coastguard Worker         c.WasChanged = true;
152*f6dc9357SAndroid Build Coastguard Worker         Changed();
153*f6dc9357SAndroid Build Coastguard Worker         return true;
154*f6dc9357SAndroid Build Coastguard Worker       }
155*f6dc9357SAndroid Build Coastguard Worker     }
156*f6dc9357SAndroid Build Coastguard Worker   }
157*f6dc9357SAndroid Build Coastguard Worker 
158*f6dc9357SAndroid Build Coastguard Worker   return CPropertyPage::OnCommand(code, itemID, param);
159*f6dc9357SAndroid Build Coastguard Worker }
160