wpstk.pp 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. {
  2. Copyright (c) 2000-2003 by WPS Toolkit Project - Christian Langanke
  3. Copyright (c) 2003-2004 by Yuri Prokushev ([email protected])
  4. Workplace Toolkit API
  5. This file is part of the WPS Toolkit package and is free software.
  6. You can redistribute it and/or modify it under the terms of the GNU
  7. Library General Public License as published by the Free Software
  8. Foundation, in version 2 as it comes in the "COPYING.LIB" file
  9. of the WPS Toolkit main distribution. This library is distributed
  10. in the hope that it will be useful, but WITHOUT
  11. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
  13. License for more details.
  14. **********************************************************************}
  15. Unit wpstk;
  16. Interface
  17. {$Mode ObjFpc}
  18. Uses
  19. OS2Def, PMWin;
  20. // Please, rename wpstk.dll to another name to avoid version conflicts
  21. const
  22. wpstkdll='wpstk';
  23. Function WtkQueryVersion(pszBuffer: PChar; ulBuflen: Cardinal): Cardinal; cdecl;
  24. external wpstkdll name 'WtkQueryVersion';
  25. //*** handle types used by EA manager ***************************************/
  26. Type
  27. LHANDLE=Cardinal;
  28. HEA=LHANDLE;
  29. PHEA=^HEA;
  30. Const
  31. HEA_CREATE=HEA(-1);
  32. //*** EA type wildcard for WtkFindNextEaValue *******************************/
  33. WTK_EAT_ANY=-1;
  34. //*** get size of all values of an EA ***************************************/
  35. Function WtkQueryEaSize(pszName, pszEaName: PChar; var pulSize: Cardinal): Longint; cdecl;
  36. external wpstkdll name 'WtkQueryEaSize';
  37. //*** read complete ea into memory and scan it ******************************/
  38. Function WtkReadEa(pszName: PChar; pszEaName: PChar; P_HEA: PHEA): Longint; cdecl;
  39. external wpstkdll name 'WtkReadEa';
  40. Function WtkFindFirstEaValue(_HEA: HEA; var pulEaType: Cardinal; pszValue: PChar; var pulBuflen: Cardinal): Longint; cdecl;
  41. external wpstkdll name 'WtkFindFirstEaValue';
  42. Function WtkFindNextEaValue(_HEA: HEA; var pulEaType: Cardinal; pszValue: PChar; var pulBuflen: Cardinal): Longint; cdecl;
  43. external wpstkdll name 'WtkFindNextEaValue';
  44. //*** create new EA list in memory ******************************************/
  45. Function WtkCreateEa(pszName: PChar; pszEaName: PChar; _PHEA: PHEA): Longint; cdecl;
  46. external wpstkdll name 'WtkCreateEa';
  47. //*** append a value ********************************************************/
  48. Function WtkAppendEaValue(HEA_: HEA; ulMultiType: Cardinal; ulEaType: Cardinal; var pbValue: Byte; ulValuelen: Cardinal): Longint; cdecl;
  49. external wpstkdll name 'WtkAppendEaValue';
  50. //*** write EA to disk ******************************************************/
  51. Function WtkSaveEa(_HEA: HEA; fWriteThru: Longbool; fEA: Byte): Longint; cdecl;
  52. external wpstkdll name 'WtkSaveEa';
  53. //*** destroy EA in memory **************************************************/
  54. Function WtkCloseEa(_HEA: hea): Longint; cdecl;
  55. external wpstkdll name 'WtkCloseEa';
  56. //*** WtkGetNextFile alike API, does WtkReadEa/WtkFind*EaValue/WtkCloseEa in one API */
  57. Function WtkGetNextEaValue(pszName, pszEaName: PChar; var pulEaType: Cardinal; PHEA_: PHEA; pszValue: PChar; var pulBuflen: Cardinal): Longint; cdecl;
  58. external wpstkdll name 'WtkGetNextEaValue';
  59. //*** read/appendWrite EA in one step ***************************************/
  60. Function WtkPutEaValue(pszName, pszEaName: PChar; ulMultiType, ulEaType: Cardinal; var pbValue: Byte; ulValuelen: Cardinal; fWriteThru: Longbool; fEA: Byte): Longint; cdecl;
  61. external wpstkdll name 'WtkPutEaValue';
  62. //*** simplified APIs to read/write exatcly one string EA********************/
  63. Function WtkWriteStringEa(pszName, pszEaName, pszEaValue: PChar): Longint; cdecl;
  64. external wpstkdll name 'WtkWriteStringEa';
  65. Function WtkReadStringEa(pszName, pszEaName, pszEaValue: PChar; var pulBuflen: Cardinal): Longint; cdecl;
  66. external wpstkdll name 'WtkReadStringEa';
  67. Const
  68. WTK_CFGSYS_UPDATE_ADD=0;
  69. WTK_CFGSYS_UPDATE_DELETE=1;
  70. Function WtkUpdateConfigsys(pszUpdate: PChar; ulUpdateMode: Cardinal; pszBackupExtension: PChar): Longint; cdecl;
  71. external wpstkdll name 'WtkUpdateConfigsys';
  72. //* file handle type and structures */
  73. Type
  74. HINIT=LHANDLE;
  75. PHINIT=^HINIT;
  76. // structure to override default behaviour of parser
  77. TINITPARMS=record
  78. // specify all valid comment characters
  79. // - specify nil to use ';' as default and only comment character
  80. // - specify '/' to use "//" (c++ style comments)
  81. pszCommentChars: PChar;
  82. // specify all valid delimiter characters
  83. // - specify nil to use '=' as default and only delimiter character
  84. // - when multiple characters are specified, the first will be used
  85. // for new entries
  86. pszDelimiterChars: PChar;
  87. // define layout for keys in new files
  88. // (if keys already exist, the layout of
  89. // the last read key is used)
  90. //
  91. // [SECTION]
  92. //
  93. // newkeyname1 = keyvalue1
  94. // | | -> ulKeyIndent
  95. //
  96. // newkeyname2 = keyvalue2
  97. // | | -> ulKeyNameLen
  98. //
  99. // newkeyname3 = keyvalue3
  100. // | | -> ulValueIndent
  101. ulKeyIndent,
  102. ulKeyNameLen,
  103. ulValueIndent: Cardinal;
  104. end;
  105. PINITPARMS=^TINITPARMS;
  106. //* define open modes (WtkOpenInitProfile - ulOpenMode) */
  107. Const
  108. WTK_INIT_OPEN_READONLY=$0000;
  109. WTK_INIT_OPEN_READWRITE=$0001;
  110. WTK_INIT_OPEN_ALLOWERRORS=$8000;
  111. WTK_INIT_OPEN_INMEMORY=$FFFF;
  112. //* define update modes (WtkOpenInitProfile - ulUpdateMode) */
  113. WTK_INIT_UPDATE_DISCARDCOMMENTS=$0001;
  114. WTK_INIT_UPDATE_SOFTDELETEKEYS=$0002;
  115. //* open and close file */
  116. Function WtkOpenInitProfile(pszName: PChar; var phinit: HINIT; ulOpenMode: Cardinal;
  117. ulUpdateMode: Cardinal; pip: PINITPARMS): Longint; cdecl;
  118. external wpstkdll name 'WtkOpenInitProfile';
  119. Function WtkCloseInitProfile(HINIT: HINIT; fUpdate: Longbool): Longint; cdecl;
  120. external wpstkdll name 'WtkCloseInitProfile';
  121. const
  122. WTK_INIT_CLOSE_DISCARD=0;
  123. WTK_INIT_CLOSE_UPDATE=1;
  124. Function WtkCloseInitProfileBackup(_hinit: HINIT; fUpdateOriginal: Longbool; pszBackupFile: PChar): Longint; cdecl;
  125. external wpstkdll name 'WtkCloseInitProfileBackup';
  126. Function WtkInitProfileModified(_hinit: HINIT): Longbool; cdecl;
  127. external wpstkdll name 'WtkInitProfileModified';
  128. //* query values */
  129. Function WtkQueryInitProfileString(_HINIT: hinit; pszSectionName, pszKeyName, pszDefault, pszBuffer: PChar; ulBuflen: Cardinal): Cardinal; cdecl;
  130. external wpstkdll name 'WtkQueryInitProfileString';
  131. Function WtkQueryInitProfileSize(_HINIT: hinit; pszSectionName, pszKeyName: PChar; var pulDataLen: Cardinal): Longbool; cdecl;
  132. external wpstkdll name 'WtkQueryInitProfileSize';
  133. //* update or delete keys and/or sections */
  134. Function WtkWriteInitProfileString(_HINIT: hinit; pszSectionName, pszKeyName, pszNewValue: PChar): Longint; cdecl;
  135. external wpstkdll name 'WtkWriteInitProfileString';
  136. //* file handle type and structures */
  137. Type
  138. HSYSLEVEL = LHANDLE;
  139. PHSYSLEVEL = ^HSYSLEVEL;
  140. Const
  141. WTK_SYSLEVEL_MAXLEN_COMPID = 9;
  142. WTK_SYSLEVEL_MAXLEN_NAME = 79;
  143. WTK_SYSLEVEL_MAXLEN_PREFIX = 2;
  144. WTK_SYSLEVEL_MAXLEN_CSDNUM = 4;
  145. WTK_SYSLEVEL_MAXLEN_APPTYPE = 8;
  146. //* external data structure */
  147. //* NOTE: */
  148. //* - read/write version fields in hex */
  149. //* - use the WTK_SYSLEVEL_MAXLEN_* with */
  150. //* strncpy() to properly copy strings */
  151. //* to string fields (see sample !) */
  152. Type
  153. TSYLEVELINFO = record
  154. cbSize : Cardinal;
  155. usSysId : Word;
  156. szComponentId : array[0..(WTK_SYSLEVEL_MAXLEN_COMPID + 1)-1] of CHAR;
  157. szName : array[0..(WTK_SYSLEVEL_MAXLEN_NAME + 1)-1] of CHAR;
  158. bVersionMajor : BYTE;
  159. bVersionMinor : BYTE;
  160. bVersionRefresh : BYTE;
  161. szCsdPrefix : array[0..(WTK_SYSLEVEL_MAXLEN_PREFIX + 1)-1] of CHAR;
  162. chCsdLanguage : CHAR;
  163. szCurrentCsd : array[0..(WTK_SYSLEVEL_MAXLEN_CSDNUM + 1)-1] of CHAR;
  164. szPreviousCsd : array[0..(WTK_SYSLEVEL_MAXLEN_CSDNUM + 1)-1] of CHAR;
  165. usDate : Word;
  166. szAppType : array[0..(WTK_SYSLEVEL_MAXLEN_APPTYPE + 1)-1] of CHAR;
  167. end;
  168. PSYLEVELINFO = ^TSYLEVELINFO;
  169. Function WtkOpenSyslevel(pszName: PChar; var phsl: HSYSLEVEL): Longint; cdecl;
  170. external wpstkdll name 'WtkOpenSyslevel';
  171. Function WtkCloseSyslevel(hsl: HSYSLEVEL; ulUpdateMode: Cardinal): Longint; cdecl;
  172. external wpstkdll name 'WtkCloseSyslevel';
  173. Const
  174. WTK_SYSLEVEL_CLOSE_DISCARD = 0;
  175. WTK_SYSLEVEL_CLOSE_UPDATE = 1;
  176. Function WtkQuerySyslevelInfo(hsl: HSYSLEVEL; var psli: TSYLEVELINFO): Longint; cdecl;
  177. external wpstkdll name 'WtkCloseSyslevel';
  178. Function WtkSetSyslevelInfo(hsl: HSYSLEVEL; ulUpdateFlags: Cardinal; var psli: TSYLEVELINFO): Longint; cdecl;
  179. external wpstkdll name 'WtkCloseSyslevel';
  180. Const
  181. WTK_SYSLEVEL_UPDATE_ALL = -(1);
  182. WTK_SYSLEVEL_UPDATE_SYSID = $00000001;
  183. WTK_SYSLEVEL_UPDATE_COMPONENTID = $00000002;
  184. WTK_SYSLEVEL_UPDATE_NAME = $00000004;
  185. WTK_SYSLEVEL_UPDATE_VERSION = $00000008;
  186. WTK_SYSLEVEL_UPDATE_CSDPREFIX = $00000010;
  187. WTK_SYSLEVEL_UPDATE_CSDLANGUAGE = $00000020;
  188. WTK_SYSLEVEL_UPDATE_CURRENTCSD = $00000040;
  189. WTK_SYSLEVEL_UPDATE_PREVIOUSCSD = $00000080;
  190. WTK_SYSLEVEL_UPDATE_DATE = $00000010;
  191. WTK_SYSLEVEL_UPDATE_APPTYPE = $00000020;
  192. {* flags for MmfAlloc parm ulOpenFlags */ }
  193. {* NOTE: for all except MMF_ACCESS_READWRITE, only write by others is denied */ }
  194. {* otherwise both read and write by others is denied */ }
  195. MMF_ACCESS_READONLY = $00000000;
  196. MMF_ACCESS_WRITEONLY = $00000001;
  197. MMF_ACCESS_READWRITE = $00000002;
  198. MMF_OPENMODE_OPENFILE = $00000000;
  199. MMF_OPENMODE_RESETFILE = $00010000;
  200. {* some sizes for usage with MmfAlloc parameter ulMaxSize */ }
  201. MMF_MAXSIZE_KB = 1024;
  202. MMF_MAXSIZE_MB = 1048576;
  203. {* special NULL filename for MmfAlloc parameter pszFilename */ }
  204. MMF_FILE_INMEMORY = nil;
  205. {* define a handle type */ }
  206. //* define a handle type */
  207. Type
  208. THMMF = LHANDLE;
  209. PHMMF = ^THMMF;
  210. //* prototypes */
  211. Function WtkInitializeMmf(var phmmf: THMMF; ulMaxBuffer: Cardinal): Longint; cdecl;
  212. external wpstkdll name 'WtkInitializeMmf';
  213. Function WtkTerminateMmf(hmmf: THMMF): Longint; cdecl;
  214. external wpstkdll name 'WtkTerminateMmf';
  215. Function WtkAllocMmf(hmmf: THMMF; Var ppvdata: Pointer; pszFilename: PChar; ulOpenFlags, ulMaxSize: Cardinal): Longint; cdecl;
  216. external wpstkdll name 'WtkAllocMmf';
  217. Function WtkFreeMmf(hmmf: THMMF; pvData: Pointer): Longint; cdecl;
  218. external wpstkdll name 'WtkFreeMmfl';
  219. Function WtkUpdateMmf(hmmf: THMMF; pvData: Pointer): Longint; cdecl;
  220. external wpstkdll name 'WtkUpdateMmf';
  221. Function WtkSetMmfSize(hmmf: THMMF; pvData: Pointer; ulNewSize: Cardinal): Longint; cdecl;
  222. external wpstkdll name 'WtkSetMmfSize';
  223. Function WtkQueryMmfSize(hmmf: THMMF; pvData: Pointer; var pulSize: Cardinal): Longint; cdecl;
  224. external wpstkdll name 'WtkQueryMmfSize';
  225. //* only be used for string translation for indexed */
  226. //* values by callback STM_CALLBACK_QUERYSTRING */
  227. Const
  228. _STM_MAX_SETTINGSVALUE = 64;
  229. //*** handle types used by Setting manager **********************************/
  230. Type
  231. HSETTINGTABLE = LHANDLE;
  232. HVALUETABLE = LHANDLE;
  233. //*** callback procedure prototype ******************************************/
  234. Type
  235. TFnCB=Function(ulAction: Cardinal; pvData, pvObjectInstance, pvObjectData: Pointer): Longbool; cdecl;
  236. PFNCB = ^TFnCB;
  237. //*** callback actions ******************************************************/
  238. Const
  239. { reports that class is being initialized }
  240. STM_CALLBACK_REPORTINIT = $0000;
  241. { queries infos about (sub)value }
  242. STM_CALLBACK_QUERYVALUEINFO = $0001;
  243. { queries target buffer when creating value table }
  244. STM_CALLBACK_QUERYTARGETBUF = $0002;
  245. { ask WPS class to validate a (sub)value }
  246. STM_CALLBACK_VALIDATE = $0003;
  247. { reports the change of a setting }
  248. STM_CALLBACK_REPORTCHANGED = $0004;
  249. { asks for update of target buffers }
  250. STM_CALLBACK_QUERYVALUE = $0005;
  251. { translates strings to array indicees }
  252. STM_CALLBACK_QUERYINDEX = $0006;
  253. { translates strings to array indicees }
  254. STM_CALLBACK_QUERYSTRING = $0007;
  255. { asks for initialization of GUI controls, }
  256. STM_CALLBACK_INITCONTROL = $0008;
  257. { useful for listboxes comboboxes etc. }
  258. { reports errors from WtkValidateObjectValueTable }
  259. STM_CALLBACK_REPORTERROR = $0009;
  260. { reports that settings have been saved }
  261. STM_CALLBACK_REPORTSAVED = $000A;
  262. { reports that class settings table is destroyed }
  263. STM_CALLBACK_REPORTDESTROYED = $000B;
  264. //*** data structure for callback STM_CALLBACK_REPORTINIT *************/
  265. //*** Note: on this callback, pvObjectInstance and pvObjectData are NULL ****/
  266. Type
  267. TCBREPORTINIT = record
  268. fInitialized : Longbool; //* no data really required here yet */
  269. end;
  270. //*** data structures for callback STM_CALLBACK_QUERYVALUEINFO ********/
  271. //*** Note: on this callback, pvObjectInstance and pvObjectData are NULL ****/
  272. TCBQUERYVALUEINFO = record
  273. pszName : PChar; //* out - name of setting */
  274. ulSettingId : Cardinal; //* out - id of setting */
  275. ulValueIndex : Cardinal; //* out - index of subvalue */
  276. ulValueType : Cardinal; //* #in - type of value - see VALUETYPE_* */
  277. usDialogid : Word; //* in - id of dialog containing control */
  278. usControlid : Word; //* in - id of control */
  279. pfnwpSubclass : proc; //* in - subclass window proc for control */
  280. pszDetailsTitle : PChar; //* in - title of folderdetails view */
  281. end;
  282. PCBQUERYVALUEINFO = ^TCBQUERYVALUEINFO;
  283. //*** data structures for callback CALLBACK_QUERYTARGETBUF ************/
  284. //* values marked with # MUST be specified, all others are optional */
  285. Type
  286. TCBQUERYTARGETBUF = record
  287. pvObjectInstance : Pointer; //* out - somSelf of object instance */
  288. pszName : PChar; //* out - name of setting */
  289. ulSettingId : Cardinal; //* out - id of setting */
  290. ulValueIndex : Cardinal; //* out - index of subvalue (only > 0 for multivalue settings) */
  291. ulBufMax : Cardinal; //* #in - len of target buffer */
  292. pvTarget : Pointer; //* #in - target buffer */
  293. end;
  294. PCBQUERYTARGETBUF = ^TCBQUERYTARGETBUF;
  295. //* supported GUI controls: */
  296. //* - WC_ENTRYFIELD WC_MLE WC_BUTTON (checkbox and radio button) */
  297. //* - WC_LISTBOX WC_COMBOBOX WC_SPINBUTTON */
  298. //* - WC_SLIDER WC_CIRCULARSLIDER */
  299. //* types of possible values */
  300. //* */
  301. //* type validation target buffer possible GUI update */
  302. //* ------------- ---------- ------------- ------------------------------- */
  303. //* STRING NO CHAR[] <all supported> except WC_*SLIDER */
  304. //* - WC_COMBOBOX, WC_SPINBUTTON as listbox */
  305. //* INDEX YES LONG <all supported> */
  306. //* ITEM YES LONG selects item with WC_LISTBOX, WC_COMBOBOX, */
  307. //* behaves like LONG otherwise */
  308. //* LONG NO LONG <all supported> */
  309. //* TRUEFALSE YES BOOL <all supported> except WC_*SLIDER */
  310. //* YESNO YES BOOL <all supported> except WC_*SLIDER */
  311. //* ONOFF YES BOOL <all supported> except WC_*SLIDER */
  312. //*** value types for value target buffers **********************************/
  313. Const
  314. STM_VALUETYPE_STRING = 0;
  315. STM_VALUETYPE_INDEX = 1;
  316. STM_VALUETYPE_LONG = 2;
  317. STM_VALUETYPE_TRUEFALSE = 3;
  318. STM_VALUETYPE_YESNO = 4;
  319. STM_VALUETYPE_ONOFF = 5;
  320. { for details only ! }
  321. STM_VALUETYPE_CDATE = 6;
  322. { for details only ! }
  323. STM_VALUETYPE_CTIME = 7;
  324. STM_VALUETYPE_INDEXITEM = 8;
  325. //*** data structures for callback CALLBACK_VALIDATION ****************/
  326. Type
  327. TCBVALIDATE = record
  328. pvObjectInstance : Pointer; //* out - somSelf of object instance */
  329. ulSettingId : Cardinal; //* out - id of setting */
  330. pszName : PChar; //* out - name of setting */
  331. pszValue : PChar; //* out - name of value to be validated */
  332. ulValueIndex : Cardinal; //* out - index of subvalue */
  333. fResult : Longbool; //* in - result of validation */
  334. end; //* return TRUE if your callback validates, */
  335. PCBVALIDATE = ^TCBVALIDATE; //* FALSE for using standard validation */
  336. //*** data structures for callback CALLBACK_REPORTCHANGED ****************/
  337. Type
  338. TCBREPORTCHANGED = record
  339. pvObjectInstance : Pointer; //* out - somSelf of object instance */
  340. ulSettingId : Cardinal; //* out - id of setting */
  341. pszName : PChar; //* out - name of setting */
  342. end;
  343. PCBREPORTCHANGED = ^TCBREPORTCHANGED;
  344. //*** data structures for callback CALLBACK_QUERYVALUE ****************/
  345. TCBQUERYVALUE = record
  346. pvObjectInstance : Pointer; //* out - somSelf of object instance */
  347. ulSettingId : Cardinal; //* out - id of setting */
  348. pszName : PChar; //* out - name of setting */
  349. ulQueryIndex : Cardinal; //* out - index of query */
  350. end;
  351. PCBQUERYVALUE = ^TCBQUERYVALUE;
  352. //*** data structures for callback CALLBACK_QUERYINDEX ****************/
  353. TCBQUERYINDEX = record
  354. pvObjectInstance : Pointer; //* out - somSelf of object instance */
  355. ulSettingId : Cardinal; //* out - id of setting */
  356. pszName : PChar; //* out - name of setting */
  357. pszValue : PChar; //* out - string value to be translated */
  358. ulValueIndex : Cardinal; //* out - index of subvalue */
  359. ulStringIndex : Cardinal; //* in - index to be used */
  360. end; //* return TRUE if processed, else FALSE */
  361. PCBQUERYINDEX = ^TCBQUERYINDEX;
  362. //*** data structures for callback CALLBACK_QUERYSTRING ***************/
  363. TCBQUERYSTRING = record
  364. pvObjectInstance : Pointer; // out - somSelf of object instance */
  365. ulSettingId : Cardinal; // out - id of setting */
  366. pszName : PChar; // out - name of setting */
  367. ulStringIndex : Cardinal; // out - index to be translated */
  368. ulValueIndex : Cardinal; // out - index of subvalue */
  369. szValue : array[0..(_STM_MAX_SETTINGSVALUE)-1] of CHAR;// in - string value to be used */
  370. end; // return TRUE if processed, else FALSE */
  371. PCBQUERYSTRING = ^TCBQUERYSTRING;
  372. //*** data structures for callback CALLBACK_INITCONTROL ***************/
  373. TCBINITCONTROL = record
  374. usDialogid : Word; //* out - id of dialog */
  375. usControlid : Word; //* out - id of control */
  376. hwndDialog : HWND; //* out - handle of dialog */
  377. hwndControl : HWND; //* out - handle of control */
  378. end;
  379. PCBINITCONTROL = ^TCBINITCONTROL;
  380. //*** data structures for callback STM_CALLBACK_REPORTERROR ***********/
  381. TCBREPORTERROR = record
  382. pvObjectInstance : Pointer; //* out - somSelf of object instance */
  383. ulSettingId : Cardinal; //* out - id of setting */
  384. pszName : PChar; //* out - name of setting */
  385. usDialogid : Word; //* out - id of dialog */
  386. usControlid : Word; //* out - id of control */
  387. hwndDialog : HWND; //* out - handle of dialog */
  388. hwndControl : HWND; //* out - handle of control */
  389. end; //* return TRUE to ignore error */
  390. PCBREPORTERROR = ^TCBREPORTERROR;
  391. //*** data structures for callback STM_CALLBACK_REPORTSAVED ***********/
  392. TCBREPORTSAVED = record
  393. fSaved : Longbool; //* no data really required here yet */
  394. end;
  395. PCBREPORTSAVED = ^TCBREPORTSAVED;
  396. //*** data structures for callback STM_CALLBACK_DESTROYED *************/
  397. //*** Note: on this callback, pvObjectInstance and pvObjectData are NULL ***/
  398. TCBREPORTDESTROYED = record
  399. fDestroyed : Longbool; //* no data really required here yet */
  400. end;
  401. PCBREPORTDESTROYED = ^TCBREPORTDESTROYED;
  402. // ----------------------------------------
  403. // prototypes
  404. // ----------------------------------------
  405. //*** prototypes for (de)initializing the settings table for the metaclass **/
  406. Function WtkCreateClassSettingsTable(pvObjectClass: Pointer; pfnCallbackValue: PFNCB): HSETTINGTABLE; cdecl;
  407. external wpstkdll name 'WtkCreateClassSettingsTable';
  408. Function WtkDestroyClassSettingsTable(hst: HSETTINGTABLE): Longbool; cdecl;
  409. external wpstkdll name 'WtkDestroyClassSettingsTable';
  410. Function WtkAddClassSetting(hst: HSETTINGTABLE; ulSettingId: Cardinal; pszSetting: Pchar; ulQueryCount: Cardinal): Longbool; cdecl;
  411. external wpstkdll name 'WtkAddClassSetting';
  412. Function WtkAddClassDetail(hst: HSETTINGTABLE; ulSettingId: Cardinal): Longbool; cdecl;
  413. external wpstkdll name 'WtkAddClassDetail';
  414. Function WtkCloseClassSettingsTable(hst: HSETTINGTABLE): Longbool; cdecl;
  415. external wpstkdll name 'WtkCloseClassSettingsTable';
  416. Function WtkDumpClassSettingsTable(hst: HSETTINGTABLE): Longbool; cdecl; // for testing purposes only, dumps to console
  417. external wpstkdll name 'WtkDumpClassSettingsTable';
  418. //*** prototypes for maintaining setting values for object instances ********/
  419. Function WtkCreateObjectValueTable(hst: HSETTINGTABLE; pvObjectInstance, pvObjectData: Pointer): HVALUETABLE; cdecl;
  420. external wpstkdll name 'WtkCreateObjectValueTable';
  421. Function WtkDestroyObjectValueTable(hvt: HVALUETABLE): Longbool; cdecl;
  422. external wpstkdll name 'WtkDestroyObjectValueTable';
  423. Function WtkEvaluateObjectSettings(hvt: HVALUETABLE; pszSetup: PChar): Longbool; cdecl;
  424. external wpstkdll name 'WtkEvaluateObjectSettings';
  425. Function WtkQueryObjectSettings(hvt: HVALUETABLE; pszBuffer: PChar; var pulMaxlen: Cardinal): Longbool; cdecl;
  426. external wpstkdll name 'WtkQueryObjectSettings';
  427. //*** prototypes for providing automatic updates to GUI controls ************/
  428. Function WtkRegisterSettingsDialog(hvt: HVALUETABLE; hwndDialog: HWND): Longbool; cdecl;
  429. external wpstkdll name 'WtkRegisterSettingsDialog';
  430. Function WtkDeregisterSettingsDialog(hvt: HVALUETABLE; hwndDialog: HWND): Longbool; cdecl;
  431. external wpstkdll name 'WtkDeregisterSettingsDialog';
  432. Function WtkReadObjectValueTable(hvt: HVALUETABLE; hwndDialog: HWND): Longbool; cdecl;
  433. external wpstkdll name 'WtkReadObjectValueTable';
  434. Function WtkWriteObjectValueTable(hvt: HVALUETABLE; hwndDialog: HWND): Longbool; cdecl;
  435. external wpstkdll name 'WtkWriteObjectValueTable';
  436. Function WtkQueryGUIControlsChanged(hvt: HVALUETABLE; hwnd_: HWND; mp1, mp2:MPARAM; var pfOrgValue: Longbool): Longbool; cdecl;
  437. external wpstkdll name 'WtkQueryGUIControlsChanged';
  438. //*** prototype for using same dialog templates under WARP 3 and WARP 4 *****/
  439. Function WtkRelocateNotebookpageControls(hwndDialog: HWND): Longbool; cdecl;
  440. external wpstkdll name 'WtkRelocateNotebookpageControls';
  441. //*** prototypes for providing automatic validation of controls *************/
  442. //*** on close of settings notebook. *************/
  443. //*** NOTE: WtkValidateObjectValueTable needs not to be *************/
  444. //*** explicitely called for this, but is avaliable anyway. *************/
  445. Function WtkRegisterSettingsNotebook(hvt: HVALUETABLE; hwndNotebook: HWND): Longbool; cdecl;
  446. external wpstkdll name 'WtkRegisterSettingsNotebook';
  447. Function WtkValidateObjectValueTable(hvt: HVALUETABLE; hwndNotebook: HWND): Longbool; cdecl;
  448. external wpstkdll name 'WtkValidateObjectValueTable';
  449. //*** prototypes for providing details data *********************************/
  450. Function WtkQueryClassDetailsInfo(hst: HSETTINGTABLE; var ppClassFieldInfo: Pointer;
  451. var pSize: Cardinal; ulParentColumns: Cardinal): Longint; cdecl;
  452. external wpstkdll name 'WtkQueryClassDetailsInfo';
  453. Function WtkQueryObjectDetailsData(hvt: HVALUETABLE; var ppDetailsData: Pointer; var pcp: Cardinal): Longint; cdecl;
  454. external wpstkdll name 'WtkQueryObjectDetailsData';
  455. //*** prototypes for saving/restoring data in WPS repository ****************/
  456. Function WtkSaveObjectState(hvt: HVALUETABLE; pszClass: PChar): Longint; cdecl;
  457. external wpstkdll name 'WtkSaveObjectState';
  458. Function WtkRestoreObjectState(hvt: HVALUETABLE; pszClass: PChar): Longint; cdecl;
  459. external wpstkdll name 'WtkRestoreObjectState';
  460. //*** prototypes for saving/restoring data in extern ini file ***************/
  461. //*** NOTE: you have to make sure yourself that you save to ***************/
  462. //*** a unique place per object instance !!! ***************/
  463. //*** NOTE: specify USER or SYSTEM as filename to write to ***************/
  464. //*** HINI_USERPROFILE or HINI_SYSTEMPROFILE ***************/
  465. Function WtkSaveObjectSettings(hvt: HVALUETABLE; pszFilename, pszApp, pszKey: PChar): Longint; cdecl;
  466. external wpstkdll name 'WtkSaveObjectSettings';
  467. Function WtkRestoreObjectSettings(hvt: HVALUETABLE; pszFilename, pszApp, pszKey: PChar): Longint; cdecl;
  468. external wpstkdll name 'WtkRestoreObjectSettings';
  469. Function WtkGetTextMessage(var pTable: PChar; cTable: Cardinal;
  470. var pbBuffer: Byte; cbBuffer: Cardinal;
  471. pszMessageName, pszFile: PChar;
  472. var pcbMsg: Cardinal): Longint; cdecl;
  473. external wpstkdll name 'WtkGetTextMessage';
  474. // data structures for 32-bit memory model
  475. Type
  476. TBINDATA = record
  477. cbSize : Cardinal;
  478. bData : array[0..0] of BYTE;
  479. end;
  480. PBINDATA = ^TBINDATA;
  481. //*** prototypes for calculating CRC of data in memory *******************/
  482. //*** initialize pulCRC32 with -1 on first call **************************/
  483. Function WtkCalcMemCRC32(pvData: Pointer; ulDatalen: Cardinal; var pulCRC32: Cardinal): Longint; cdecl;
  484. external wpstkdll name 'WtkCalcMemCRC32';
  485. //*** prototypes for calculating CRC of files ****************************/
  486. Function WtkCalcFileCRC32(pszFilename: PChar; var pulCRC32: Cardinal): Longint; cdecl;
  487. external wpstkdll name 'WtkCalcFileCRC32';
  488. //*** prototypes for general functions **************************************/
  489. Function WtkQueryClassIndex(HWND_: hwnd): PChar; cdecl;
  490. external wpstkdll name 'WtkQueryClassIndex';
  491. Function WtkIsOfPublicPmClass(HWND_: hwnd; pszClassIndex: PChar; ulPrimaryWindowStyle: Cardinal): Longbool; cdecl;
  492. external wpstkdll name 'WtkIsOfPublicPmClass';
  493. //*** prototypes for specialized functions for certain window classes *******/
  494. Function WtkInitializeNumSpinbuttonArray(hwndSpinbutton: HWND; ulMinValue: Cardinal;
  495. ulMaxValue: Cardinal; ulStep: Cardinal): Longbool; cdecl;
  496. external wpstkdll name 'WtkInitializeNumSpinbuttonArray';
  497. Function WtkQueryNumSpinbuttonIndex(hwndSpinbutton: HWND; ulMinValue: Cardinal;
  498. ulMaxValue: Cardinal; ulStep: Cardinal; ulValue: Cardinal): Longint; cdecl;
  499. external wpstkdll name 'WtkQueryNumSpinbuttonIndex';
  500. //*** prototypes for filling MLEs from diverse resources ********************/
  501. Function WtkAddTextResourceToMLE(HWND_: hwnd; ulControlId: Cardinal;
  502. hmod: Cardinal; ulResourceType, ulResId: Cardinal): Longbool; cdecl;
  503. external wpstkdll name 'WtkAddTextResourceToMLE';
  504. //*** prototypes for PM error functions *************************************/
  505. Function WtkSetErrorInfo(rc: Cardinal): Longbool; cdecl;
  506. external wpstkdll name 'WtkSetErrorInfo';
  507. Const
  508. PMHERR_USE_EXISTING_ERRORINFO = -(1);
  509. //*** check existance of files & directories ********************************/
  510. Function WtkFileExists(pszName: PChar): Longbool;
  511. Function WtkDirExists(pszName: PChar): Longbool;
  512. Function WtkFileMaskExists(pszFileMask, pszFirstFile: PChar; ulBuflen: Cardinal): Longbool;
  513. Function WtkIsFile(pszName: PChar): Longbool; (* equivalent to WtkFileExists *)
  514. Function WtkIsDirectory(pszName: PChar): Longbool; (* equivalent to WtkDirExists *)
  515. //*** get fullname of directory or file *************************************/
  516. Function WtkQueryFullname(pszName, pszBuffer: PChar; ulBuflen: Cardinal): Longint;
  517. //*** extended file handling ************************************************/
  518. Function WtkDeleteFile(pszName: PChar): Longint;
  519. Function WtkMoveFile(pszOld, pszNew: PChar): Longint;
  520. //*** query disk and directory at one time **********************************/
  521. Function WtkQueryCurrentDir(ulDiskNum: Cardinal; pszBuffer: PChar; ulBuflen: Cardinal): Longint;
  522. Function WtkSetCurrentDir(pszDirectory: PChar): Longint;
  523. //*** create/delete path ****************************************************/
  524. Function WtkCreatePath(pszPath: PChar): Longint;
  525. Function WtkDeletePath(pszPath: PChar): Longint;
  526. //*** easy version of DosFindFirst/DosFindNext ******************************/
  527. Function WtkGetNextFile(pszFileMask: PChar; phdir: PHDIR;
  528. pszNextFile: PChar; ulBuflen: Cardinal): Longint;
  529. Function WtkGetNextDirectory(pszFileMask: PChar; phdir: PHDIR;
  530. pszNextDirectory: PChar; ulBuflen: Cardinal): Longint;
  531. //*** search part of filename ***********************************************/
  532. Function WtkFilespec(pszName: PChar; ulPart: Cardinal): PChar;
  533. Const
  534. WTK_FILESPEC_PATHNAME = 1;
  535. WTK_FILESPEC_NAME = 2;
  536. WTK_FILESPEC_EXTENSION = 3;
  537. //*** get specific information about file ***********************************/
  538. Function WtkFileModified(pszName: PChar; pfs3: PFILESTATUS3): Longbool;
  539. Function WtkQueryFileSize(pszName: PChar): Cardinal;
  540. //*** read file into memory ************************************************/
  541. Function WtkReadFile(pszName: PChar; ppszBuffer: PPChar; pulBuflen: PCardinal): Longint;
  542. Function WtkWriteFile(pszName, pszBuffer: PChar; ulBuflen: Cardinal; fAppend: Longbool): Longint;
  543. //*** create tmp file *******************************************************/
  544. Function WtkCreateTmpFile(pszFileMask, pszBuffer: PChar; ulBuflen: Cardinal): Longint;
  545. //*** check file contents ***************************************************/
  546. Function WtkFileIsEmpty(pszName: PChar): Longbool;
  547. //*** prototypes for opening devices ****************************************/
  548. Function WtkOpenDevice(pszName: PChar; phdevice: PHFILE; ulOpenMode: Cardinal): Longint;
  549. Const
  550. WTK_OPENDEVICE_SHARED = $0000;
  551. WTK_OPENDEVICE_EXCLUSIVE = $0001;
  552. WTK_OPENDEVICE_NOCACHE = $0002;
  553. { implicitely set, when pszName specifies drive }
  554. WTK_OPENDEVICE_BLOCKDEVICE = $0004;
  555. //*** prototypes for performing an I/o Control transaction ******************/
  556. Function WtkDevIOCtl(pszName: PChar; ulOpenMode: Cardinal;
  557. ulCategory: Cardinal; ulFunction: Cardinal;
  558. pvParams: Pointer; pcbParmLen: PCardinal;
  559. pvData: Pointer; pcbDataLen: PCardinal): Longint;
  560. //*** prototypes for module information functions ***************************/
  561. APIRET APIENTRY WtkGetPackageFilename( PFN pfn, PChar pszSubdir, PChar pszFilename,
  562. PChar pszFileext, PChar pszBuffer, ULONG ulBuflen);
  563. APIRET APIENTRY WtkGetModuleInfo( PFN pfn, PHMODULE phmod, PChar pszBuffer, ULONG ulBuflen);
  564. APIRET APIENTRY WtkGetModulePath( PFN pfn, PChar pszBuffer, ULONG ulBuflen);
  565. HMODULE APIENTRY WtkGetModuleHandle( PFN pfn);
  566. BOOL APIENTRY WtkIsRegularExpressionValid( PChar pszExpression);
  567. APIRET APIENTRY WtkMatchRegularExpression( PChar pszExpression, PChar pszText,
  568. PChar pszBuffer, ULONG ulBuflen);
  569. APIRET APIENTRY WtkSubstRegularExpressionMatch( PChar pszExpression, PChar pszText,
  570. PChar pszReplacePattern,
  571. PChar pszBuffer, ULONG ulBuflen);
  572. //*** prototypes for system configuration functions *************************/
  573. Function WtkIsWarp4: Longbool; cdecl;
  574. external wpstkdll name 'WtkIsWarp4';
  575. // distinct between OS/2 Warp and eComStation
  576. Function WtkQueryOperatingSystem: Cardinal; cdecl;
  577. external wpstkdll name 'WtkQueryOperatingSystem';
  578. Const
  579. WTK_OSTYPE_OS2 = $0000;
  580. WTK_OSTYPE_ECS = $0001;
  581. Function WtkIsOS2: Longbool; cdecl;
  582. external wpstkdll name 'WtkIsOS2';
  583. Function WtkIseComStation: Longbool; cdecl;
  584. external wpstkdll name 'WtkIseComStation';
  585. Function WtkQueryBootDrive: Char; cdecl;
  586. external wpstkdll name 'WtkQueryBootDrive';
  587. Function WtkQuerySysLanguage: PChar; cdecl;
  588. external wpstkdll name 'WtkQuerySysLanguage';
  589. Function WtkReboot: Cardinal; cdecl;
  590. external wpstkdll name 'WtkReboot';
  591. //*** prototypes for DATETIME struct handling ****************************/
  592. BOOL APIENTRY WtkSetDateTime( UCHAR uchDay, UCHAR uchMonth, USHORT usYear, UCHAR uchHours,
  593. UCHAR uchMinutes, UCHAR uchSeconds, PDATETIME pdt);
  594. BOOL APIENTRY WtkDateTimeToTime( PDATETIME pdt, time_t* ptime);
  595. BOOL APIENTRY WtkTimeToDateTime( time_t* ptime, PDATETIME pdt);
  596. //*** prototypes for FTIME FDATE struct handling *************************/
  597. BOOL APIENTRY WtkSetFDateTime( UCHAR uchDay, UCHAR uchMonth, USHORT usYear, UCHAR uchHours,
  598. UCHAR uchMinutes, UCHAR uchSeconds, PFDATE pfdate, PFTIME pftime);
  599. BOOL APIENTRY WtkFDateTimeToTime( PFDATE pfdate, PFTIME pftime, time_t* ptime);
  600. BOOL APIENTRY WtkTimeToFDateTime( time_t* ptime, PFDATE pfdate, PFTIME pftime);
  601. //*** prototypes for CDATE/CTIME struct handling ****************************/
  602. BOOL APIENTRY WtkSetCDateTime( UCHAR uchDay, UCHAR uchMonth, USHORT usYear, UCHAR uchHours,
  603. UCHAR uchMinutes, UCHAR uchSeconds, PCDATE pcdate, PCTIME pctime);
  604. BOOL APIENTRY WtkCDateTimeToTime( PCDATE pcdate, PCTIME pctime, time_t* ptime);
  605. BOOL APIENTRY WtkTimeToCDateTime( time_t* ptime, PCDATE pcdate, PCTIME pctime);
  606. //*** prototypes for getting a timestamp *********************************/
  607. Const
  608. WTK_TIMESTAMP_SORTEDDATETIME = 0;
  609. WTK_TIMESTAMP_SORTEDDATE = 1;
  610. WTK_TIMESTAMP_SORTEDTIME = 2;
  611. WTK_TIMESTAMP_NLSDATETIME = 3;
  612. WTK_TIMESTAMP_NLSDATE = 4;
  613. WTK_TIMESTAMP_NLSTIME = 5;
  614. APIRET APIENTRY WtkQueryDateTimeStamp( PDATETIME pdt, ULONG ulStampType,
  615. PChar pszBuffer, ULONG ulBuflen);
  616. APIRET APIENTRY WtkQueryFDateTimeStamp( PFDATE pfdate, PFTIME pftime, ULONG ulStampType,
  617. PChar pszBuffer, ULONG ulBuflen);
  618. APIRET APIENTRY WtkQueryCDateTimeStamp( PCDATE pcdate, PCTIME pctime, ULONG ulStampType,
  619. PChar pszBuffer, ULONG ulBuflen);
  620. //*** prototypes for getting last write time from a file or directory ****/
  621. APIRET APIENTRY WtkQueryFileDateTime( PDATETIME pdt, PChar pszName);
  622. APIRET APIENTRY WtkQueryFileFDateTime( PFDATE pfdate, PFTIME pftime, PChar pszName);
  623. APIRET APIENTRY WtkQueryFileCDateTime( PCDATE pcdate, PCTIME pctime, PChar pszName);
  624. implementation
  625. end.