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