xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Far/FarUtils.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // FarUtils.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_FAR_UTILS_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_FAR_UTILS_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "FarPlugin.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Registry.h"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker namespace NFar {
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker namespace NFileOperationReturnCode
13*f6dc9357SAndroid Build Coastguard Worker {
14*f6dc9357SAndroid Build Coastguard Worker   enum EEnum
15*f6dc9357SAndroid Build Coastguard Worker   {
16*f6dc9357SAndroid Build Coastguard Worker     kInterruptedByUser = -1,
17*f6dc9357SAndroid Build Coastguard Worker     kError = 0,
18*f6dc9357SAndroid Build Coastguard Worker     kSuccess = 1
19*f6dc9357SAndroid Build Coastguard Worker   };
20*f6dc9357SAndroid Build Coastguard Worker }
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker namespace NEditorReturnCode
23*f6dc9357SAndroid Build Coastguard Worker {
24*f6dc9357SAndroid Build Coastguard Worker   enum EEnum
25*f6dc9357SAndroid Build Coastguard Worker   {
26*f6dc9357SAndroid Build Coastguard Worker     kOpenError = 0,
27*f6dc9357SAndroid Build Coastguard Worker     kFileWasChanged = 1,
28*f6dc9357SAndroid Build Coastguard Worker     kFileWasNotChanged = 2,
29*f6dc9357SAndroid Build Coastguard Worker     kInterruptedByUser = 3
30*f6dc9357SAndroid Build Coastguard Worker   };
31*f6dc9357SAndroid Build Coastguard Worker }
32*f6dc9357SAndroid Build Coastguard Worker 
33*f6dc9357SAndroid Build Coastguard Worker struct CInitDialogItem
34*f6dc9357SAndroid Build Coastguard Worker {
35*f6dc9357SAndroid Build Coastguard Worker   DialogItemTypes Type;
36*f6dc9357SAndroid Build Coastguard Worker   int X1,Y1,X2,Y2;
37*f6dc9357SAndroid Build Coastguard Worker   bool Focus;
38*f6dc9357SAndroid Build Coastguard Worker   bool Selected;
39*f6dc9357SAndroid Build Coastguard Worker   UInt32 Flags; //FarDialogItemFlags Flags;
40*f6dc9357SAndroid Build Coastguard Worker   bool DefaultButton;
41*f6dc9357SAndroid Build Coastguard Worker   int DataMessageId;
42*f6dc9357SAndroid Build Coastguard Worker   const char *DataString;
43*f6dc9357SAndroid Build Coastguard Worker   const char *HistoryName;
44*f6dc9357SAndroid Build Coastguard Worker   // void InitToFarDialogItem(struct FarDialogItem &anItemDest);
45*f6dc9357SAndroid Build Coastguard Worker };
46*f6dc9357SAndroid Build Coastguard Worker 
47*f6dc9357SAndroid Build Coastguard Worker class CStartupInfo
48*f6dc9357SAndroid Build Coastguard Worker {
49*f6dc9357SAndroid Build Coastguard Worker   PluginStartupInfo m_Data;
50*f6dc9357SAndroid Build Coastguard Worker   AString m_RegistryPath;
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker   CSysString GetFullKeyName(const char *keyName) const;
53*f6dc9357SAndroid Build Coastguard Worker   LONG CreateRegKey(HKEY parentKey,
54*f6dc9357SAndroid Build Coastguard Worker     const char *keyName, NWindows::NRegistry::CKey &destKey) const;
55*f6dc9357SAndroid Build Coastguard Worker   LONG OpenRegKey(HKEY parentKey,
56*f6dc9357SAndroid Build Coastguard Worker     const char *keyName, NWindows::NRegistry::CKey &destKey) const;
57*f6dc9357SAndroid Build Coastguard Worker 
58*f6dc9357SAndroid Build Coastguard Worker public:
59*f6dc9357SAndroid Build Coastguard Worker   void Init(const PluginStartupInfo &pluginStartupInfo,
60*f6dc9357SAndroid Build Coastguard Worker       const char *pluginNameForRegistry);
61*f6dc9357SAndroid Build Coastguard Worker   const char *GetMsgString(int messageId);
62*f6dc9357SAndroid Build Coastguard Worker 
63*f6dc9357SAndroid Build Coastguard Worker   int ShowMessage(UInt32 flags, const char *helpTopic,
64*f6dc9357SAndroid Build Coastguard Worker       const char **items, unsigned numItems, int numButtons);
65*f6dc9357SAndroid Build Coastguard Worker   int ShowWarningWithOk(const char **items, unsigned numItems);
66*f6dc9357SAndroid Build Coastguard Worker 
67*f6dc9357SAndroid Build Coastguard Worker   void SetErrorTitle(AString &s);
68*f6dc9357SAndroid Build Coastguard Worker   int ShowErrorMessage(const char *message);
69*f6dc9357SAndroid Build Coastguard Worker   int ShowErrorMessage2(const char *m1, const char *m2);
70*f6dc9357SAndroid Build Coastguard Worker   // int ShowMessageLines(const char *messageLines);
71*f6dc9357SAndroid Build Coastguard Worker   int ShowMessage(int messageId);
72*f6dc9357SAndroid Build Coastguard Worker 
73*f6dc9357SAndroid Build Coastguard Worker   int ShowDialog(int X1, int Y1, int X2, int Y2,
74*f6dc9357SAndroid Build Coastguard Worker       const char *helpTopic, struct FarDialogItem *items, unsigned numItems);
75*f6dc9357SAndroid Build Coastguard Worker   int ShowDialog(int sizeX, int sizeY,
76*f6dc9357SAndroid Build Coastguard Worker       const char *helpTopic, struct FarDialogItem *items, unsigned numItems);
77*f6dc9357SAndroid Build Coastguard Worker 
78*f6dc9357SAndroid Build Coastguard Worker   void InitDialogItems(const CInitDialogItem *srcItems,
79*f6dc9357SAndroid Build Coastguard Worker       FarDialogItem *destItems, unsigned numItems);
80*f6dc9357SAndroid Build Coastguard Worker 
81*f6dc9357SAndroid Build Coastguard Worker   HANDLE SaveScreen(int X1, int Y1, int X2, int Y2);
82*f6dc9357SAndroid Build Coastguard Worker   HANDLE SaveScreen();
83*f6dc9357SAndroid Build Coastguard Worker   void RestoreScreen(HANDLE handle);
84*f6dc9357SAndroid Build Coastguard Worker 
85*f6dc9357SAndroid Build Coastguard Worker   void SetRegKeyValue(HKEY parentKey, const char *keyName,
86*f6dc9357SAndroid Build Coastguard Worker       const LPCTSTR valueName, LPCTSTR value) const;
87*f6dc9357SAndroid Build Coastguard Worker   void SetRegKeyValue(HKEY hRoot, const char *keyName,
88*f6dc9357SAndroid Build Coastguard Worker       const LPCTSTR valueName, UInt32 value) const;
89*f6dc9357SAndroid Build Coastguard Worker   void SetRegKeyValue(HKEY hRoot, const char *keyName,
90*f6dc9357SAndroid Build Coastguard Worker       const LPCTSTR valueName, bool value) const;
91*f6dc9357SAndroid Build Coastguard Worker 
92*f6dc9357SAndroid Build Coastguard Worker   CSysString QueryRegKeyValue(HKEY parentKey, const char *keyName,
93*f6dc9357SAndroid Build Coastguard Worker       LPCTSTR valueName, const CSysString &valueDefault) const;
94*f6dc9357SAndroid Build Coastguard Worker 
95*f6dc9357SAndroid Build Coastguard Worker   UInt32 QueryRegKeyValue(HKEY parentKey, const char *keyName,
96*f6dc9357SAndroid Build Coastguard Worker       LPCTSTR valueName, UInt32 valueDefault) const;
97*f6dc9357SAndroid Build Coastguard Worker 
98*f6dc9357SAndroid Build Coastguard Worker   bool QueryRegKeyValue(HKEY parentKey, const char *keyName,
99*f6dc9357SAndroid Build Coastguard Worker       LPCTSTR valueName, bool valueDefault) const;
100*f6dc9357SAndroid Build Coastguard Worker 
101*f6dc9357SAndroid Build Coastguard Worker   bool Control(HANDLE plugin, int command, void *param);
102*f6dc9357SAndroid Build Coastguard Worker   bool ControlRequestActivePanel(int command, void *param);
103*f6dc9357SAndroid Build Coastguard Worker   bool ControlGetActivePanelInfo(PanelInfo &panelInfo);
104*f6dc9357SAndroid Build Coastguard Worker   bool ControlSetSelection(const PanelInfo &panelInfo);
105*f6dc9357SAndroid Build Coastguard Worker   bool ControlGetActivePanelCurrentItemInfo(PluginPanelItem &pluginPanelItem);
106*f6dc9357SAndroid Build Coastguard Worker   bool ControlGetActivePanelSelectedOrCurrentItems(
107*f6dc9357SAndroid Build Coastguard Worker       CObjectVector<PluginPanelItem> &pluginPanelItems);
108*f6dc9357SAndroid Build Coastguard Worker 
109*f6dc9357SAndroid Build Coastguard Worker   bool ControlClearPanelSelection();
110*f6dc9357SAndroid Build Coastguard Worker 
111*f6dc9357SAndroid Build Coastguard Worker   int Menu(
112*f6dc9357SAndroid Build Coastguard Worker       int x,
113*f6dc9357SAndroid Build Coastguard Worker       int y,
114*f6dc9357SAndroid Build Coastguard Worker       int maxHeight,
115*f6dc9357SAndroid Build Coastguard Worker       unsigned flags,
116*f6dc9357SAndroid Build Coastguard Worker       const char *title,
117*f6dc9357SAndroid Build Coastguard Worker       const char *aBottom,
118*f6dc9357SAndroid Build Coastguard Worker       const char *helpTopic,
119*f6dc9357SAndroid Build Coastguard Worker       int *breakKeys,
120*f6dc9357SAndroid Build Coastguard Worker       int *breakCode,
121*f6dc9357SAndroid Build Coastguard Worker       FarMenuItem *items,
122*f6dc9357SAndroid Build Coastguard Worker       unsigned numItems);
123*f6dc9357SAndroid Build Coastguard Worker   int Menu(
124*f6dc9357SAndroid Build Coastguard Worker       unsigned flags,
125*f6dc9357SAndroid Build Coastguard Worker       const char *title,
126*f6dc9357SAndroid Build Coastguard Worker       const char *helpTopic,
127*f6dc9357SAndroid Build Coastguard Worker       FarMenuItem *items,
128*f6dc9357SAndroid Build Coastguard Worker       unsigned numItems);
129*f6dc9357SAndroid Build Coastguard Worker 
130*f6dc9357SAndroid Build Coastguard Worker   int Menu(
131*f6dc9357SAndroid Build Coastguard Worker       unsigned flags,
132*f6dc9357SAndroid Build Coastguard Worker       const char *title,
133*f6dc9357SAndroid Build Coastguard Worker       const char *helpTopic,
134*f6dc9357SAndroid Build Coastguard Worker       const AStringVector &items,
135*f6dc9357SAndroid Build Coastguard Worker       int selectedItem);
136*f6dc9357SAndroid Build Coastguard Worker 
Editor(const char * fileName,const char * title,int X1,int Y1,int X2,int Y2,DWORD flags,int startLine,int startChar)137*f6dc9357SAndroid Build Coastguard Worker   int Editor(const char *fileName, const char *title,
138*f6dc9357SAndroid Build Coastguard Worker       int X1, int Y1, int X2, int Y2, DWORD flags, int startLine, int startChar)
139*f6dc9357SAndroid Build Coastguard Worker       { return m_Data.Editor(const_cast<char *>(fileName), const_cast<char *>(title), X1, Y1, X2, Y2,
140*f6dc9357SAndroid Build Coastguard Worker         flags, startLine, startChar); }
Editor(const char * fileName)141*f6dc9357SAndroid Build Coastguard Worker   int Editor(const char *fileName)
142*f6dc9357SAndroid Build Coastguard Worker       { return Editor(fileName, NULL, 0, 0, -1, -1, 0, -1, -1); }
143*f6dc9357SAndroid Build Coastguard Worker 
Viewer(const char * fileName,const char * title,int X1,int Y1,int X2,int Y2,DWORD flags)144*f6dc9357SAndroid Build Coastguard Worker   int Viewer(const char *fileName, const char *title,
145*f6dc9357SAndroid Build Coastguard Worker       int X1, int Y1, int X2, int Y2, DWORD flags)
146*f6dc9357SAndroid Build Coastguard Worker       { return m_Data.Viewer(const_cast<char *>(fileName), const_cast<char *>(title), X1, Y1, X2, Y2, flags); }
Viewer(const char * fileName)147*f6dc9357SAndroid Build Coastguard Worker   int Viewer(const char *fileName)
148*f6dc9357SAndroid Build Coastguard Worker       { return Viewer(fileName, NULL, 0, 0, -1, -1, VF_NONMODAL); }
149*f6dc9357SAndroid Build Coastguard Worker 
150*f6dc9357SAndroid Build Coastguard Worker };
151*f6dc9357SAndroid Build Coastguard Worker 
152*f6dc9357SAndroid Build Coastguard Worker class CScreenRestorer
153*f6dc9357SAndroid Build Coastguard Worker {
154*f6dc9357SAndroid Build Coastguard Worker   bool m_Saved;
155*f6dc9357SAndroid Build Coastguard Worker   HANDLE m_HANDLE;
156*f6dc9357SAndroid Build Coastguard Worker public:
CScreenRestorer()157*f6dc9357SAndroid Build Coastguard Worker   CScreenRestorer(): m_Saved(false) {}
158*f6dc9357SAndroid Build Coastguard Worker   ~CScreenRestorer();
159*f6dc9357SAndroid Build Coastguard Worker   void Save();
160*f6dc9357SAndroid Build Coastguard Worker   void Restore();
161*f6dc9357SAndroid Build Coastguard Worker };
162*f6dc9357SAndroid Build Coastguard Worker 
163*f6dc9357SAndroid Build Coastguard Worker 
164*f6dc9357SAndroid Build Coastguard Worker extern CStartupInfo g_StartupInfo;
165*f6dc9357SAndroid Build Coastguard Worker 
166*f6dc9357SAndroid Build Coastguard Worker 
167*f6dc9357SAndroid Build Coastguard Worker int PrintErrorMessage(const char *message, unsigned code);
168*f6dc9357SAndroid Build Coastguard Worker int PrintErrorMessage(const char *message, const char *text);
169*f6dc9357SAndroid Build Coastguard Worker int PrintErrorMessage(const char *message, const wchar_t *name, unsigned maxLen = 70);
170*f6dc9357SAndroid Build Coastguard Worker 
171*f6dc9357SAndroid Build Coastguard Worker #define  MY_TRY_BEGIN  try {
172*f6dc9357SAndroid Build Coastguard Worker 
173*f6dc9357SAndroid Build Coastguard Worker #define  MY_TRY_END1(x)  }\
174*f6dc9357SAndroid Build Coastguard Worker   catch(unsigned n) { PrintErrorMessage(x, n);  return; }\
175*f6dc9357SAndroid Build Coastguard Worker   catch(const CSysString &s) { PrintErrorMessage(x, s); return; }\
176*f6dc9357SAndroid Build Coastguard Worker   catch(const char *s) { PrintErrorMessage(x, s); return; }\
177*f6dc9357SAndroid Build Coastguard Worker   catch(...) { g_StartupInfo.ShowErrorMessage(x);  return; }
178*f6dc9357SAndroid Build Coastguard Worker 
179*f6dc9357SAndroid Build Coastguard Worker #define  MY_TRY_END2(x, y)  }\
180*f6dc9357SAndroid Build Coastguard Worker   catch(unsigned n) { PrintErrorMessage(x, n); return y; }\
181*f6dc9357SAndroid Build Coastguard Worker   catch(const AString &s) { PrintErrorMessage(x, s); return y; }\
182*f6dc9357SAndroid Build Coastguard Worker   catch(const char *s) { PrintErrorMessage(x, s); return y; }\
183*f6dc9357SAndroid Build Coastguard Worker   catch(const UString &s) { PrintErrorMessage(x, s); return y; }\
184*f6dc9357SAndroid Build Coastguard Worker   catch(const wchar_t *s) { PrintErrorMessage(x, s); return y; }\
185*f6dc9357SAndroid Build Coastguard Worker   catch(...) { g_StartupInfo.ShowErrorMessage(x); return y; }
186*f6dc9357SAndroid Build Coastguard Worker 
187*f6dc9357SAndroid Build Coastguard Worker 
188*f6dc9357SAndroid Build Coastguard Worker int ShowSysErrorMessage(DWORD errorCode);
189*f6dc9357SAndroid Build Coastguard Worker int ShowSysErrorMessage(DWORD errorCode, const wchar_t *name);
190*f6dc9357SAndroid Build Coastguard Worker int ShowLastErrorMessage();
191*f6dc9357SAndroid Build Coastguard Worker 
ShowSysErrorMessage(HRESULT errorCode)192*f6dc9357SAndroid Build Coastguard Worker inline int ShowSysErrorMessage(HRESULT errorCode)
193*f6dc9357SAndroid Build Coastguard Worker   { return ShowSysErrorMessage((DWORD)errorCode); }
ShowSysErrorMessage(HRESULT errorCode,const wchar_t * name)194*f6dc9357SAndroid Build Coastguard Worker inline int ShowSysErrorMessage(HRESULT errorCode, const wchar_t *name)
195*f6dc9357SAndroid Build Coastguard Worker   { return ShowSysErrorMessage((DWORD)errorCode, name); }
196*f6dc9357SAndroid Build Coastguard Worker 
197*f6dc9357SAndroid Build Coastguard Worker bool WasEscPressed();
198*f6dc9357SAndroid Build Coastguard Worker 
199*f6dc9357SAndroid Build Coastguard Worker void ReduceString(UString &s, unsigned size);
200*f6dc9357SAndroid Build Coastguard Worker 
201*f6dc9357SAndroid Build Coastguard Worker }
202*f6dc9357SAndroid Build Coastguard Worker 
203*f6dc9357SAndroid Build Coastguard Worker #endif
204