wpstk.pp 35 KB

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