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