nwsnut.pp 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539
  1. {
  2. This file is part of the Free Pascal run time library
  3. for Netware.
  4. Copyright (c) 1999-2005 by the Free Pascal development team.
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. **********************************************************************}
  11. {$IFNDEF FPC_DOTTEDUNITS}
  12. unit nwsnut;
  13. {$ENDIF FPC_DOTTEDUNITS}
  14. interface
  15. {$mode objfpc}
  16. {$if defined (netware_clib)}
  17. uses nwserv;
  18. {$else}
  19. {$IFDEF FPC_DOTTEDUNITS}
  20. uses NetwareLibCApi.libc;
  21. {$ELSE FPC_DOTTEDUNITS}
  22. uses libc;
  23. {$ENDIF FPC_DOTTEDUNITS}
  24. {$endif}
  25. {$PACKRECORDS C}
  26. const
  27. External_library='nwsnut';
  28. { constants
  29. the constant CURRENT_NUT_VERSION is incremented when increased
  30. functionality is added. An NLM can check this value which is placed
  31. in the NUTInfo structure, version field, to determine if the NWSNUT
  32. NLM contains sufficient functionality to support its requirements }
  33. CURRENT_NUT_VERSION = 405;
  34. { the constant NUT_REVISION_LEVEL is incremented when a major change
  35. in the behavior of NWSNUT is made. This value is not used by the calling
  36. NLM, but rather by NWSNUT itself to determine what is expected of it
  37. by the calling NLM }
  38. NUT_REVISION_LEVEL = 1;
  39. SAVE = 1;
  40. NO_SAVE = 0;
  41. NOHEADER = 0;
  42. NOBORDER = 0;
  43. NO_HELP_CONTEXT = $ffff;
  44. SINGLE = 1;
  45. DOUBLE = 2;
  46. CURSOR_OFF = 0;
  47. CURSOR_ON = 1;
  48. VIRTUAL = 0;
  49. DIRECT = 1;
  50. SEVERITY_INFORM = 1;
  51. SEVERITY_WARNING = 2;
  52. SEVERITY_FATAL = 3;
  53. { text size minimization styles }
  54. SNORMAL = 0;
  55. SMINWIDTH = 1;
  56. SMINHEIGHT = 2;
  57. { palettes to set screen colors.
  58. background and foreground can be reversed with VREVERSE }
  59. BW_PALETTE = 0; // white and black
  60. NORMAL_PALETTE = 1; // white and dark blue
  61. INIT_PALETTE = 2; // light blue and dark blue
  62. HELP_PALETTE = 3; // green and black
  63. ERROR_PALETTE = 4; // red and black
  64. WARNING_PALETTE = 5; // pink and white
  65. OTHER_PALETTE = 6; // green and red
  66. { text and portal justification styles }
  67. JRIGHT = 0;
  68. JLEFT = 1;
  69. JTOP = 2;
  70. JBOTTOM = 3;
  71. JCENTER = 4;
  72. JTOPRIGHT = 5;
  73. JTOPLEFT = 6;
  74. JBOTTOMLEFT = 7;
  75. JBOTTOMRIGHT = 8;
  76. { video constants }
  77. V_UP = 6;
  78. V_DOWN = 7;
  79. LINE_OFFSET = 160;
  80. EXPLODE_RATE = 45;
  81. SCREEN_SPEED = 0;
  82. { video attributes }
  83. VNORMAL = 0;
  84. VINTENSE = 1;
  85. VREVERSE = 2;
  86. VBLINK = 3;
  87. VIBLINK = 4;
  88. VRBLINK = 5;
  89. { header types }
  90. NO_HEADER = 0;
  91. SMALL_HEADER = 1;
  92. NORMAL_HEADER = 2;
  93. LARGE_HEADER = 3;
  94. { keyboard constants }
  95. KS_OFF = 0;
  96. KS_ON = 1;
  97. KS_INT = 2;
  98. K_NORMAL = 0;
  99. K_F1 = 1;
  100. K_F2 = 2;
  101. K_F3 = 3;
  102. K_F4 = 4;
  103. K_F5 = 5;
  104. K_F6 = 6;
  105. K_F7 = 7;
  106. K_F8 = 8;
  107. K_F9 = 9;
  108. K_F10 = 10;
  109. K_SF1 = 11;
  110. K_SF2 = 12;
  111. K_SF3 = 13;
  112. K_SF4 = 14;
  113. K_SF5 = 15;
  114. K_SF6 = 16;
  115. K_SF7 = 17;
  116. K_SF8 = 18;
  117. K_SF9 = 19;
  118. K_SF10 = 20;
  119. K_CF1 = 21;
  120. K_CF2 = 22;
  121. K_CF3 = 23;
  122. K_CF4 = 24;
  123. K_CF5 = 25;
  124. K_CF6 = 26;
  125. K_CF7 = 27;
  126. K_CF8 = 28;
  127. K_CF9 = 29;
  128. K_CF10 = 30;
  129. K_AF1 = 31;
  130. K_AF2 = 32;
  131. K_AF3 = 33;
  132. K_AF4 = 34;
  133. K_AF5 = 35;
  134. K_AF6 = 36;
  135. K_AF7 = 37;
  136. K_AF8 = 38;
  137. K_AF9 = 39;
  138. K_AF10 = 40;
  139. K_HELP = 1;
  140. K_MODIFY = 3;
  141. K_MARK = 5;
  142. K_CANCEL = 7;
  143. K_MODE = 9;
  144. K_EXIT = 40;
  145. K_ESCAPE = 41;
  146. K_BACK = 42;
  147. K_INSERT = 43;
  148. K_DELETE = 44;
  149. K_SELECT = 45;
  150. K_CYCLE = 46;
  151. K_UP = 47;
  152. K_DOWN = 48;
  153. K_LEFT = 49;
  154. K_RIGHT = 50;
  155. K_SUP = 51;
  156. K_SDOWN = 52;
  157. K_SLEFT = 53;
  158. K_SRIGHT = 54;
  159. K_PUP = 55;
  160. K_PDOWN = 56;
  161. K_FRIGHT = 57;
  162. K_FLEFT = 58;
  163. K_DELETE_END = 59;
  164. {
  165. For NWSUngetKey of function keys, use UGK_FUNCTION_KEY for the "type"
  166. parameter and "K_F1" etc. for the "value" parameter
  167. }
  168. UGK_NORMAL_KEY = $00;
  169. UGK_FUNCTION_KEY = $01;
  170. {
  171. For other special keys listed below, use UGK_NORMAL_KEY for the "value"
  172. parameter, and the UGK_xxx for the "type" parameter.
  173. }
  174. UGK_ENTER_KEY = $02;
  175. UGK_ESCAPE_KEY = $03;
  176. UGK_BACKSPACE_KEY = $04;
  177. UGK_DELETE_KEY = $05;
  178. UGK_INSERT_KEY = $06;
  179. UGK_CURSOR_UP_KEY = $07;
  180. UGK_CURSOR_DOWN_KEY = $08;
  181. UGK_CURSOR_RIGHT_KEY = $09;
  182. UGK_CURSOR_LEFT_KEY = $0a;
  183. UGK_CURSOR_HOME_KEY = $0b;
  184. UGK_CURSOR_END_KEY = $0c;
  185. UGK_CURSOR_PUP_KEY = $0d;
  186. UGK_CURSOR_PDOWN_KEY = $0e;
  187. {
  188. Added in version 403
  189. A special key type to cause LISTs to refresh. K_REFRESH_KEY may be returned
  190. from an action procedure passed to NWSList, or another thread that wishes
  191. to cause a list to refresh may call NWSUngetKey with the UGK version of this,
  192. and it too will cause the list to be redrawn.
  193. Use "type" = UGK_SPECIAL_KEY, and "value" = UGK_REFRESH_KEY
  194. }
  195. UGK_SPECIAL_KEY = 3;
  196. UGK_REFRESH_KEY = $22222222;
  197. K_REFRESH_KEY = UGK_REFRESH_KEY;
  198. OLD_REFRESH_KEY = 222;
  199. { available action keys for list }
  200. M_ESCAPE = $0001;
  201. M_INSERT = $0002;
  202. M_DELETE = $0004;
  203. M_MODIFY = $0008;
  204. M_SELECT = $0010;
  205. { marked delete }
  206. M_MDELETE = $0020;
  207. M_CYCLE = $0040;
  208. { marked modify }
  209. M_MMODIFY = $0080;
  210. { marked select }
  211. M_MSELECT = $0100;
  212. { don't sort list }
  213. M_NO_SORT = $0200;
  214. { allow the list to be refreshed }
  215. M_REFRESH = $0400;
  216. { return values for EditString }
  217. E_ESCAPE = 1;
  218. E_SELECT = 2;
  219. E_EMPTY = 4;
  220. E_CHANGE = 8;
  221. { type values for EditString }
  222. EF_ANY = $0001;
  223. EF_DECIMAL = $0002;
  224. EF_HEX = $0004;
  225. EF_NOSPACES = $0008;
  226. EF_UPPER = $0010;
  227. EF_DATE = $0020;
  228. EF_TIME = $0040;
  229. EF_FLOAT = $0080;
  230. EF_SET = $0100;
  231. EF_NOECHO = $0200;
  232. EF_FILENAME = $0400;
  233. { added in version 404 }
  234. EF_MASK = $0800;
  235. { and in version 405 }
  236. EF_NOCONFIRM_EXIT = $1000;
  237. { scroll bar stuff for NWSEditTextWithScrollBars, and NWSViewTextWithScrollBars }
  238. { which scroll bars to show }
  239. SHOW_VERTICAL_SCROLL_BAR = 2;
  240. SHOW_HORIZONTAL_SCROLL_BAR = 4;
  241. { when to show the scroll bars. Use ONLY one of these }
  242. CONSTANT_SCROLL_BARS = $0200;
  243. TEXT_SENSITIVE_SCROLL_BARS = $0400;
  244. CONSIDER_LOCKED_FIELDS = $0800;
  245. { character and key constants }
  246. function F_H1 : longint;
  247. { Í } function F_H2 : longint;
  248. { ³ } function F_V1 : longint;
  249. { º } function F_V2 : longint;
  250. { Ú } function F_UL1 : longint;
  251. { ¿ } function F_UR1 : longint;
  252. { À } function F_LL1 : longint;
  253. { Ù } function F_LR1 : longint;
  254. { É } function F_UL2 : longint;
  255. { » } function F_UR2 : longint;
  256. { È } function F_LL2 : longint;
  257. { ¼ } function F_LR2 : longint;
  258. { Á } function F_UT1 : longint;
  259. { Â } function F_DT1 : longint;
  260. { ´ } function F_LT1 : longint;
  261. { Ã } function F_RT1 : longint;
  262. { Ê } function F_UT2 : longint;
  263. { Ë } function F_DT2 : longint;
  264. { ¹ } function F_LT2 : longint;
  265. { Ì } function F_RT2 : longint;
  266. { Å } function F_X1 : longint;
  267. { Î } function F_X2 : longint;
  268. {  } function F_UP : longint;
  269. {  } function F_DOWN : longint;
  270. {  } function F_LEFT : longint;
  271. {  } function F_RIGHT : longint;
  272. { ° } function F_BG1 : longint;
  273. { ± } function F_BG2 : longint;
  274. { ² } function F_BG3 : longint;
  275. { Û } function F_BG4 : longint;
  276. { form constants (control flags) }
  277. const
  278. F_NOVERIFY = $00;
  279. F_VERIFY = $10;
  280. F_FORCE = $20;
  281. { a flag to pass if no help is desired in the form }
  282. F_NO_HELP = $ffffffff;
  283. { fieldFlags Type masks }
  284. { normal editable field }
  285. NORMAL_FIELD = $00;
  286. { non accessable }
  287. LOCKED_FIELD = $01;
  288. { non editable }
  289. SECURE_FIELD = $02;
  290. { verify field on form exit }
  291. REQUIRED_FIELD = $04;
  292. { hidden fields are also locked }
  293. HIDDEN_FIELD = $09;
  294. { prompt fields are also locked }
  295. PROMPT_FIELD = $11;
  296. { field locked by user, not by NUT }
  297. ULOCKED_FIELD = $0100;
  298. { MASKED_FIELD added in version 402 }
  299. { display ' ' for text }
  300. MASKED_FIELD = $200;
  301. { flag to cause form deselection
  302. before action & verify routines
  303. are called }
  304. FORM_DESELECT = $20;
  305. { In case old flag was used }
  306. NO_FORM_DESELECT = $00;
  307. { normal field controlled justify }
  308. DEFAULT_FORMAT = $00;
  309. { right justification format }
  310. RIGHT_FORMAT = $40;
  311. { left justification format }
  312. LEFT_FORMAT = $80;
  313. { centering format }
  314. CENTER_FORMAT = $C0;
  315. MAXPORTALS = 50;
  316. MAXLISTS = 20;
  317. SAVELISTS = 20;
  318. MAXACTIONS = 60;
  319. MAXFUNCTIONS = MAXACTIONS;
  320. MAXHELP = 30;
  321. NO_MESSAGE = $ffff;
  322. DYNAMIC_MESSAGE_ONE = $fffe;
  323. DYNAMIC_MESSAGE_TWO = $fffd;
  324. DYNAMIC_MESSAGE_THREE = $fffc;
  325. DYNAMIC_MESSAGE_FOUR = $fffb;
  326. DYNAMIC_MESSAGE_FIVE = $fffa;
  327. DYNAMIC_MESSAGE_SIX = $fff9;
  328. DYNAMIC_MESSAGE_SEVEN = $fff8;
  329. DYNAMIC_MESSAGE_EIGHT = $fff7;
  330. DYNAMIC_MESSAGE_NINE = $fff6;
  331. DYNAMIC_MESSAGE_TEN = $fff5;
  332. DYNAMIC_MESSAGE_ELEVEN = $fff4;
  333. DYNAMIC_MESSAGE_TWELVE = $fff3;
  334. DYNAMIC_MESSAGE_THIRTEEN = $fff2;
  335. DYNAMIC_MESSAGE_FOURTEEN = $fff1;
  336. SYSTEM_MESSAGE = $8000;
  337. function IS_DYNAMIC_MESSAGE(a : longint) : boolean;
  338. type
  339. PNUTInfo_ = ^TNUTInfo_;
  340. PPCB_ = ^TPCB_;
  341. TPCB_ = record
  342. frameLine : longint;
  343. frameColumn : longint;
  344. frameHeight : longint;
  345. frameWidth : longint;
  346. virtualHeight : longint;
  347. virtualWidth : longint;
  348. cursorState : longint;
  349. borderType : longint;
  350. borderAttribute : longint;
  351. saveFlag : word;
  352. secondarySaveFlag : word;
  353. directFlag : longint;
  354. headerAttribute : longint;
  355. portalLine : longint;
  356. portalColumn : longint;
  357. portalHeight : longint;
  358. portalWidth : longint;
  359. virtualLine : longint;
  360. virtualColumn : longint;
  361. cursorLine : longint;
  362. cursorColumn : longint;
  363. firstUpdateFlag : longint;
  364. headerText : PAnsiChar;
  365. headerText2 : PAnsiChar;
  366. virtualScreen : pointer;
  367. saveScreen : pointer;
  368. screenID : TScr;
  369. nutInfo : PNUTInfo_;
  370. sequenceNumber : longint;
  371. reserved1 : longint;
  372. mtflags : longint;
  373. borderPalette : longint;
  374. showScrollBars : longint;
  375. lastLine : longint;
  376. longestLineLen : longint;
  377. verticalScroll : longint;
  378. horizontalScroll : longint;
  379. oldVertical : longint;
  380. oldHorizontal : longint;
  381. deHighlightFunction : procedure (para1:PNUTInfo_; para2:PPCB_);cdecl;
  382. reHighlightFunction : procedure (para1:PNUTInfo_; para2:PPCB_); cdecl;
  383. reportPortalUpdate : procedure (para1:PPCB_; para2:PNUTInfo_; updateType:longint); cdecl;
  384. end;
  385. TPCB = TPCB_;
  386. PPCB = ^TPCB;
  387. PHS_ = ^THS_;
  388. THS_ = record
  389. nextScreen : longint;
  390. previousScreen : longint;
  391. frameLine : longint;
  392. frameColumn : longint;
  393. frameHeight : longint;
  394. frameWidth : longint;
  395. virtualHeight : longint;
  396. virtualWidth : longint;
  397. cursorState : longint;
  398. borderType : longint;
  399. borderAttribute : longint;
  400. saveFlag : longint;
  401. directFlag : longint;
  402. headerAttribute : longint;
  403. headerText : PAnsiChar;
  404. text : PAnsiChar;
  405. end;
  406. THELP_SCREEN = THS_;
  407. PHELP_SCREEN = ^THELP_SCREEN;
  408. PLIST_STRUCT = ^TLIST_STRUCT;
  409. TLIST_STRUCT = record
  410. prev : PLIST_STRUCT;
  411. next : PLIST_STRUCT;
  412. otherInfo : pointer;
  413. marked : longint;
  414. flags : word;
  415. maxSkew : word;
  416. entryProcedure : procedure (listElement:PLIST_STRUCT; displayLine:longint; NUTInfoStructure:pointer);cdecl;
  417. extra : longint;
  418. text : array[0..0] of AnsiChar;
  419. end;
  420. TLIST = TLIST_STRUCT;
  421. PLIST = ^TLIST;
  422. PPLIST= ^PLIST;
  423. PLP_ = ^TLP_;
  424. TLP_ = record
  425. head : pointer;
  426. tail : pointer;
  427. sortProc : function :longint;cdecl;
  428. freeProcedure : procedure (memoryPointer:pointer);
  429. end;
  430. TLISTPTR = TLP_;
  431. PLISTPTR = ^TLISTPTR;
  432. PMI_ = ^TMI_;
  433. TMI_ = record
  434. dynamicMessageOne : PAnsiChar;
  435. dynamicMessageTwo : PAnsiChar;
  436. dynamicMessageThree : PAnsiChar;
  437. dynamicMessageFour : PAnsiChar;
  438. dynamicMessageFive : PAnsiChar;
  439. dynamicMessageSix : PAnsiChar;
  440. dynamicMessageSeven : PAnsiChar;
  441. dynamicMessageEight : PAnsiChar;
  442. dynamicMessageNine : PAnsiChar;
  443. dynamicMessageTen : PAnsiChar;
  444. dynamicMessageEleven : PAnsiChar;
  445. dynamicMessageTwelve : PAnsiChar;
  446. dynamicMessageThirteen : PAnsiChar;
  447. dynamicMessageFourteen : PAnsiChar;
  448. messageCount : longint;
  449. programMesgTable : PPAnsiChar;
  450. end;
  451. TMessageInfo = TMI_;
  452. PMessageInfo = ^TMessageInfo;
  453. PINT_ = ^TINT_;
  454. TINT_ = record
  455. interruptProc : procedure (handle:pointer);cdecl;
  456. key : longint;
  457. end;
  458. TINTERRUPT = TINT_;
  459. PINTERRUPT = ^TINTERRUPT;
  460. PMP_ = ^TMP_;
  461. TMP_ = record
  462. listAction : function (option:longint; parameter:pointer):longint;cdecl;
  463. parameter : pointer;
  464. end;
  465. TMENU_PARAMETER = TMP_;
  466. PMENU_PARAMETER = ^TMENU_PARAMETER;
  467. { environment structure }
  468. { always leave the following fields at the end of the struct. They
  469. should never be referenced directly by an application }
  470. TNUTInfo_ = record
  471. portal : array[0..(MAXPORTALS)-1] of PPCB;
  472. currentPortal : longint;
  473. headerHeight : longint;
  474. waitFlag : longint;
  475. listStack : array[0..(MAXLISTS)-1] of TLISTPTR;
  476. saveStack : array[0..(SAVELISTS)-1] of TLISTPTR;
  477. nextAvailList : longint;
  478. head : PLIST;
  479. tail : PLIST;
  480. defaultCompareFunction : function (el1:PLIST; el2:PLIST):longint;cdecl;
  481. freeProcedure : procedure (memoryPointer:pointer);
  482. interruptTable : array[0..(MAXFUNCTIONS)-1] of procedure ;
  483. functionKeyStatus : array[0..(MAXACTIONS)-1] of longint;
  484. messages : TMessageInfo;
  485. helpContextStack : array[0..(MAXHELP)-1] of longint;
  486. currentPreHelpMessage : longint;
  487. freeHelpSlot : longint;
  488. redisplayFormFlag : longint;
  489. preHelpPortal : longint;
  490. helpActive : smallint;
  491. errorDisplayActive : smallint;
  492. helpPortal : longint;
  493. waitPortal : longint;
  494. errorPortal : longint;
  495. resourceTag : pointer;
  496. screenID : pointer;
  497. helpScreens : pointer;
  498. helpOffset : longint;
  499. helpHelp : longint;
  500. allocChain : pointer;
  501. version : longint;
  502. reserved : array[0..9] of longint;
  503. moduleHandle : longint;
  504. customData : pointer;
  505. customDataRelease : procedure (theData:pointer; thisStructure:PNUTInfo_); cdecl;
  506. displayErrorLabel : longint;
  507. markBuffer : PAnsiChar;
  508. markBufferLength : longint;
  509. editBuffer : PAnsiChar;
  510. editBufferLength : longint;
  511. staticFlag : longint;
  512. processID : longint;
  513. mtflags : longint;
  514. saveCurrentPortal : longint;
  515. palette : longint;
  516. nutDataHandle : pointer;
  517. next : PNUTInfo_;
  518. prev : PNUTInfo_;
  519. listSortFunction : procedure (head:PLIST; tail:PLIST; thisStructure:PNUTInfo_); cdecl;
  520. compatibilityLevel : longint;
  521. end;
  522. TNUTInfo = TNUTInfo_;
  523. PNUTInfo = ^TNUTInfo;
  524. PPNUTInfo= ^PNUTInfo;
  525. { menu header message number }
  526. { menu center line }
  527. { menu center column }
  528. { len of longest menu option }
  529. { menu action routine }
  530. { list head for menu list }
  531. PMFC_ = ^TMFC_;
  532. TMFC_ = record
  533. headernum : longint;
  534. centerLine : longint;
  535. centerColumn : longint;
  536. maxoptlen : longint;
  537. action : function (option:longint; parameter:pointer):longint;cdecl;
  538. arg1 : longint;
  539. arg2 : longint;
  540. arg3 : longint;
  541. arg4 : longint;
  542. arg5 : longint;
  543. arg6 : longint;
  544. menuhead : TLISTPTR;
  545. nutInfo : PNUTInfo;
  546. end;
  547. TMFCONTROL = TMFC_;
  548. PMFCONTROL = ^TMFCONTROL;
  549. { list element that owns the field }
  550. { Control flags }
  551. { Line where field is located }
  552. { Column where field is located }
  553. { Maximum width of field }
  554. { Display attribute for field }
  555. { Keys that will activate the field }
  556. { Routine called when field selected }
  557. { Routine to verify Input }
  558. { Data & Xtra field release routine }
  559. { Pointer to data }
  560. { Additional control info }
  561. { help context for this field }
  562. { Pointer to field above }
  563. { Pointer to field below }
  564. { Pointer to field to left }
  565. { Pointer to field to right }
  566. { Pointer to previous field }
  567. { Pointer to next field }
  568. { if this value is set, this routine will be called upon
  569. entry to each field }
  570. { this allows the user to have any sort of custom data that
  571. he wants attached to the field. }
  572. { and this lets him release it. Note that these parameters
  573. match NWSFree which allows the use of NWSAlloc for
  574. this data (a further guarantee that the memory will be freed }
  575. { handle to keep track of who owns the field }
  576. Pfielddef = ^Tfielddef;
  577. Tfielddef = record
  578. element : PLIST;
  579. fieldFlags : longint;
  580. fieldLine : longint;
  581. fieldColumn : longint;
  582. fieldWidth : longint;
  583. fieldAttribute : longint;
  584. fieldActivateKeys : longint;
  585. fieldFormat : procedure (field:Pfielddef; text:PAnsiChar; buffLen:longint);cdecl;
  586. fieldControl : function (field:Pfielddef; selectKey:longint; fieldChanged:Plongint; handle:PNUTInfo):longint;
  587. fieldVerify : function (field:Pfielddef; data:PAnsiChar; handle:PNUTInfo):longint;
  588. fieldRelease : procedure (para1:Pfielddef);
  589. fieldData : PAnsiChar;
  590. fieldXtra : PAnsiChar;
  591. fieldHelp : longint;
  592. fieldAbove : Pfielddef;
  593. fieldBelow : Pfielddef;
  594. fieldLeft : Pfielddef;
  595. fieldRight : Pfielddef;
  596. fieldPrev : Pfielddef;
  597. fieldNext : Pfielddef;
  598. fieldEntry : procedure (intoField:Pfielddef; fieldData:pointer; handle:PNUTInfo);
  599. customData : pointer;
  600. customDataRelease : procedure (fieldCustomData:pointer; handle:PNUTInfo);
  601. nutInfo : PNUTInfo;
  602. end;
  603. TFIELD = Tfielddef;
  604. PFIELD = ^TFIELD;
  605. { Structures used for DisplayErrorCondition }
  606. PPCERR_ = ^TPCERR_;
  607. TPCERR_ = record
  608. ccodeReturned : longint;
  609. errorMessageNumber : longint;
  610. end;
  611. TPROCERROR = TPCERR_;
  612. PPROCERROR = ^TPROCERROR;
  613. PNA_ = ^TNA_;
  614. TNA_ = record
  615. address : pointer;
  616. next : pointer;
  617. end;
  618. TNUT_ALLOC = TNA_;
  619. PNUT_ALLOC = ^TNUT_ALLOC;
  620. function NWSInitializeNut
  621. (utility,
  622. version,
  623. headerType,
  624. compatibilityLevel : longint;
  625. messageTable : PPAnsiChar;
  626. helpScreens : PAnsiChar;
  627. screenID : TScr; // Clib/OS Screen Id
  628. resourceTag : TRtag; // OS ResourceTagStructure
  629. var handle : PNUTInfo) : longint;cdecl;external External_library name 'NWSInitializeNut';
  630. procedure NWSScreenSize(maxLines,maxColumns:plongint);cdecl;external External_library name 'NWSScreenSize';
  631. procedure NWSScreenSize(var maxLines,maxColumns:longint);cdecl;external External_library name 'NWSScreenSize';
  632. procedure NWSShowPortalLine(line,column:longint; text:PAnsiChar; length:longint; portal:PPCB);cdecl;external External_library name 'NWSShowPortalLine';
  633. procedure NWSShowPortalLineAttribute(line,column:longint; text:PAnsiChar; attribute,length:longint;
  634. portal:PPCB);cdecl;external External_library name 'NWSShowPortalLineAttribute';
  635. procedure NWSScrollPortalZone(line,column,height,width,attribute,
  636. count,direction:longint; portal:PPCB);cdecl;external External_library name 'NWSScrollPortalZone';
  637. procedure NWSFillPortalZone(line,column,height,width,fillCharacter,
  638. fillAttribute:longint; portal:PPCB);cdecl;external External_library name 'NWSFillPortalZone';
  639. procedure NWSFillPortalZoneAttribute(line,column,height,width,attribute:longint;
  640. portal:PPCB);cdecl;external External_library name 'NWSFillPortalZoneAttribute';
  641. function NWSGetMessage(message:longint; messages:PMessageInfo):PAnsiChar;cdecl;external External_library name 'NWSGetMessage';
  642. procedure NWSSetDynamicMessage(message:longint; text:PAnsiChar; messages:PMessageInfo);cdecl;external External_library name 'NWSSetDynamicMessage';
  643. procedure NWSSetDynamicMessage(message:longint; text:PAnsiChar; var messages:TMessageInfo);cdecl;external External_library name 'NWSSetDynamicMessage';
  644. function NWSCreatePortal
  645. (line,
  646. column,
  647. frameHeight,
  648. frameWidth,
  649. virtualHeight,
  650. virtualWidth,
  651. saveFlag:longint;
  652. headerText:PAnsiChar;
  653. headerAttribute,
  654. borderType,
  655. borderAttribute,
  656. cursorFlag,
  657. directFlag : longint;
  658. handle : PNUTInfo) : longint;cdecl;external External_library name 'NWSCreatePortal';
  659. procedure NWSDestroyPortal(portalNumber:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSDestroyPortal';
  660. procedure NWSPositionPortalCursor(line:longint; column:longint; portal:PPCB);cdecl;external External_library name 'NWSPositionPortalCursor';
  661. procedure NWSEnablePortalCursor(portal:PPCB);cdecl;external External_library name 'NWSEnablePortalCursor';
  662. procedure NWSDisablePortalCursor(portal:PPCB);cdecl;external External_library name 'NWSDisablePortalCursor';
  663. procedure NWSDeselectPortal(handle:PNUTInfo);cdecl;external External_library name 'NWSDeselectPortal';
  664. procedure NWSSelectPortal(portalNumber:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSSelectPortal';
  665. function NWSComputePortalPosition(centerLine:longint; centerColumn:longint; height:longint; width:longint; line:plongint;
  666. column:plongint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSComputePortalPosition';
  667. procedure NWSClearPortal(portal:PPCB);cdecl;external External_library name 'NWSClearPortal';
  668. type TFreeRoutine = procedure (memoryPointer:pointer); cdecl;
  669. procedure NWSInitList(handle:PNUTInfo; freeRoutine:TFreeRoutine);cdecl;external External_library name 'NWSInitList';
  670. function NWSPushList(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSPushList';
  671. function NWSPopList(handleNWS:PNUTInfo):longint;cdecl;external External_library name 'NWSPopList';
  672. function NWSSaveList(listIndex:longint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSSaveList';
  673. function NWSRestoreList(listIndex:longint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSRestoreList';
  674. procedure NWSDestroyList(handle:PNUTInfo);cdecl;external External_library name 'NWSDestroyList';
  675. procedure NWSDestroyMenu(handle:PNUTInfo);cdecl;external External_library name 'NWSDestroyMenu';
  676. procedure NWSDestroyForm(handle:PNUTInfo);cdecl;external External_library name 'NWSDestroyForm';
  677. function NWSAppendToList(text:PAnsiChar; otherInfo:pointer; handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSAppendToList';
  678. function NWSDeleteFromList(el:PLIST; handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSDeleteFromList';
  679. function NWSInsertInList(text:PAnsiChar; otherInfo:pointer; atElement:PLIST; handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSInsertInList';
  680. function NWSGetListElementText(element:PLIST):PAnsiChar;cdecl;external External_library name 'NWSGetListElementText';
  681. function NWSGetListHead(handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSGetListHead';
  682. function NWSGetListTail(handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSGetListTail';
  683. procedure NWSUnmarkList(handle:PNUTInfo);cdecl;external External_library name 'NWSUnmarkList';
  684. procedure NWSSetList(listPtr:PLISTPTR; handle:PNUTInfo);cdecl;external External_library name 'NWSSetList';
  685. procedure NWSGetList(listPtr:PLISTPTR; handle:PNUTInfo);cdecl;external External_library name 'NWSGetList';
  686. function NWSIsAnyMarked(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSIsAnyMarked';
  687. procedure NWSPushMarks(handle:PNUTInfo);cdecl;external External_library name 'NWSPushMarks';
  688. procedure NWSPopMarks(handle:PNUTInfo);cdecl;external External_library name 'NWSPopMarks';
  689. procedure NWSSortList(handle:PNUTInfo);cdecl;external External_library name 'NWSSortList';
  690. procedure NWSInitMenu(handle:PNUTInfo);cdecl;external External_library name 'NWSInitMenu';
  691. procedure NWSInitForm(handle:PNUTInfo);cdecl;external External_library name 'NWSInitForm';
  692. function NWSGetSortCharacter(charIndex:longint):longint;cdecl;external External_library name 'NWSGetSortCharacter';
  693. function NWSGetLineDrawCharacter(charIndex:longint):longint;cdecl;external External_library name 'NWSGetLineDrawCharacter';
  694. function NWSStrcat(_string, newStuff:PAnsiChar):longint;cdecl;external External_library name 'NWSStrcat';
  695. procedure NWSMemmove(dest:pointer; source:pointer; len:longint);cdecl;external External_library name 'NWSMemmove';
  696. function NWSToupper(ch:AnsiChar):AnsiChar;cdecl;external External_library name 'NWSToupper';
  697. function NWSIsdigit(ch:AnsiChar):longbool;cdecl;external External_library name 'NWSIsdigit';
  698. function NWSIsxdigit(ch:AnsiChar):longbool;cdecl;external External_library name 'NWSIsxdigit';
  699. function NWSAsciiToInt(data:PAnsiChar):longint;cdecl;external External_library name 'NWSAsciiToInt';
  700. function NWSAsciiToLONG(data:PAnsiChar):longint;cdecl;external External_library name 'NWSAsciiToLONG';
  701. function NWSAsciiHexToInt(data:PAnsiChar):longint;cdecl;external External_library name 'NWSAsciiHexToInt';
  702. procedure NWSWaitForEscape(handle:PNUTInfo);cdecl;external External_library name 'NWSWaitForEscape';
  703. function NWSWaitForEscapeOrCancel(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSWaitForEscapeOrCancel';
  704. procedure NWSGetKey(_type:plongint; value:PAnsiChar; handle:PNUTInfo);cdecl;external External_library name 'NWSGetKey';
  705. procedure NWSGetKey(var _type:longint; value:PAnsiChar; handle:PNUTInfo);cdecl;external External_library name 'NWSGetKey';
  706. function NWSKeyStatus(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSKeyStatus';
  707. function NWSUngetKey(_type:longint; value:longint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSUngetKey';
  708. procedure NWSEnableFunctionKey(key:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSEnableFunctionKey';
  709. procedure NWSDisableFunctionKey(key:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSDisableFunctionKey';
  710. procedure NWSDisableInterruptKey(key:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSDisableInterruptKey';
  711. type TInterruptProc = procedure (handle:pointer); cdecl;
  712. procedure NWSEnableInterruptKey(key:longint; interruptProc:TInterruptProc; handle:PNUTInfo);cdecl;external External_library name 'NWSEnableInterruptKey';
  713. procedure NWSSaveFunctionKeyList(keyList:PAnsiChar; handle:PNUTInfo);cdecl;external External_library name 'NWSSaveFunctionKeyList';
  714. procedure NWSEnableFunctionKeyList(keyList:PAnsiChar; handle:PNUTInfo);cdecl;external External_library name 'NWSEnableFunctionKeyList';
  715. procedure NWSSaveInterruptList(interruptList:PINTERRUPT; handle:PNUTInfo);cdecl;external External_library name 'NWSSaveInterruptList';
  716. procedure NWSEnableInterruptList(interruptList:PINTERRUPT; handle:PNUTInfo);cdecl;external External_library name 'NWSEnableInterruptList';
  717. procedure NWSDisableAllInterruptKeys(handle:PNUTInfo);cdecl;external External_library name 'NWSDisableAllInterruptKeys';
  718. procedure NWSDisableAllFunctionKeys(handle:PNUTInfo);cdecl;external External_library name 'NWSDisableAllFunctionKeys';
  719. procedure NWSEnableAllFunctionKeys(handle:PNUTInfo);cdecl;external External_library name 'NWSEnableAllFunctionKeys';
  720. function NWSDisplayTextInPortal(line,indentLevel:longint; text:PAnsiChar; attribute:longint; portal:PPCB):longint;cdecl;external External_library name 'NWSDisplayTextInPortal';
  721. function NWSDisplayInformation(header,pauseFlag,centerLine,centerColumn,palette,
  722. attribute:longint; displayText:PAnsiChar; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSDisplayInformation';
  723. procedure NWSStartWait(centerLine,centerColumn:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSStartWait';
  724. procedure NWSEndWait(handle:PNUTInfo);cdecl;external External_library name 'NWSEndWait';
  725. function NWSAlert(centerLine,centerColumn:longint; handle:PNUTInfo; message:longint; args:array of const):longint;cdecl;external External_library name 'NWSAlert';
  726. function NWSAlert(centerLine,centerColumn:longint; handle:PNUTInfo; message:longint):longint;cdecl;external External_library name 'NWSAlert';
  727. function NWSAlertWithHelp(centerLine,centerColumn:longint; handle:PNUTInfo; message,helpContext:longint;
  728. args:array of const):longint;cdecl;external External_library name 'NWSAlertWithHelp';
  729. function NWSAlertWithHelp(centerLine,centerColumn:longint; handle:PNUTInfo; message:longint; helpContext:longint):longint;cdecl;external External_library name 'NWSAlertWithHelp';
  730. function NWSTrace(handle:PNUTInfo; message:PAnsiChar; args:array of const):longint;cdecl;external External_library name 'NWSTrace';
  731. function NWSTrace(handle:PNUTInfo; message:PAnsiChar):longint;cdecl;external External_library name 'NWSTrace';
  732. procedure NWSDisplayErrorText(message:longint; severity:longint; handle:PNUTInfo; args:array of const);cdecl;external External_library name 'NWSDisplayErrorText';
  733. procedure NWSDisplayErrorText(message:longint; severity:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSDisplayErrorText';
  734. procedure NWSDisplayErrorCondition(procedureName:PAnsiChar; errorCode:longint; severity:longint; errorList:PPROCERROR; handle:PNUTInfo;
  735. args:array of const);cdecl;external External_library name 'NWSDisplayErrorCondition';
  736. procedure NWSDisplayErrorCondition(procedureName:PAnsiChar; errorCode:longint; severity:longint; errorList:PPROCERROR; handle:PNUTInfo);cdecl;external External_library name 'NWSDisplayErrorCondition';
  737. function NWSAppendToMenu(message:longint; option:longint; handle:PNUTInfo):PLIST;cdecl;external External_library name 'NWSAppendToMenu';
  738. type TActionFunc = function (option:longint; parameter:pointer) : longint; cdecl;
  739. function NWSMenu(header,
  740. centerLine,
  741. centerColumn:longint;
  742. defaultElement:PLIST;
  743. action:TActionFunc;
  744. handle:PNUTInfo;
  745. actionParameter:pointer):longint;cdecl;external External_library name 'NWSMenu';
  746. function NWSConfirm(header,centerLine,centerColumn,defaultChoice:longint;
  747. action:TActionFunc;
  748. handle:PNUTInfo;
  749. actionParameter:pointer):longint;cdecl;external External_library name 'NWSConfirm';
  750. function NWSPushHelpContext(helpContext:longint; handle:PNUTInfo):longint;cdecl;external External_library name 'NWSPushHelpContext';
  751. function NWSPopHelpContext(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSPopHelpContext';
  752. type TFormatFunc=function (element:PLIST; skew:longint; displayLine:PAnsiChar; width:longint):longint; cdecl;
  753. TNWSListActionFunc=function (keyPressed:longint; elementSelected:PPLIST; itemLineNumber:plongint; actionParameter:pointer):longint; cdecl;
  754. function NWSList(header:longint; centerLine:longint; centerColumn:longint; height:longint; width:longint;
  755. validKeyFlags:longint; element:PPLIST; handle:PNUTInfo; format:TFormatFunc; action:TNWSListActionFunc;
  756. actionParameter:pointer):longint;cdecl;external External_library name 'NWSList';
  757. type TInsertFunc = function (text:PAnsiChar; otherInfo:Ppointer; parameters:pointer):longint; cdecl;
  758. TFreeProcedure=function (otherInfo:pointer):longint; cdecl;
  759. function NWSInsertInPortalList(currentElement:PPLIST; currentLine:plongint; InsertProcedure:TInsertFunc; FreeProcedure:TFreeProcedure; handle:PNUTInfo;
  760. parameters:pointer):longint;cdecl;external External_library name 'NWSInsertInPortalList';
  761. type TModifyProcedure=function (text:PAnsiChar; parameters:pointer):longint; cdecl;
  762. function NWSModifyInPortalList(currentElement:PPLIST; currentLine:plongint; ModifyProcedure:TModifyProcedure; handle:PNUTInfo; parameters:pointer):longint;cdecl;external External_library name 'NWSModifyInPortalList';
  763. type TDeleteFunc = function (el:PLIST; handle:PNUTInfo; parameters:pointer):PLIST; cdecl;
  764. function NWSDeleteFromPortalList(currentElement:PPLIST; currentLine:plongint; DeleteProcedure:TDeleteFunc; deleteCurrentHeader:longint; deleteMarkedHeader:longint;
  765. handle:PNUTInfo; parameters:pointer):longint;cdecl;external External_library name 'NWSDeleteFromPortalList';
  766. type TNWSEditInsertFunc=function (buffer:PAnsiChar; maxLen:longint; parameters:pointer):longint; cdecl;
  767. TNWSEditActionFunc=function (action:longint; buffer:PAnsiChar; parameters:pointer):longint; cdecl;
  768. function NWSEditString(
  769. centerLine, centerColumn, editHeight, editWidth, header,
  770. prompt :longint;
  771. buf:PAnsiChar;
  772. maxLen, _type:longint; handle:PNUTInfo;
  773. insertProc:TNWSEditInsertFunc;
  774. actionProc:TNWSEditActionFunc;
  775. parameters:pointer):longint;cdecl;external External_library name 'NWSEditString';
  776. function NWSAppendIntegerField
  777. (line, column, fflag:longint; data:Plongint;
  778. minimum, maximum, help:longint;
  779. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendIntegerField';
  780. function NWSAppendIntegerField
  781. (line, column, fflag:longint; var data:longint;
  782. minimum, maximum, help:longint;
  783. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendIntegerField';
  784. function NWSAppendUnsignedIntegerField
  785. (line,
  786. column,
  787. fflag:longint;
  788. data:plongint;
  789. minimum, maximum, help:longint;
  790. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendUnsignedIntegerField';
  791. function NWSAppendUnsignedIntegerField
  792. (line,
  793. column,
  794. fflag:longint;
  795. var data:cardinal;
  796. minimum, maximum, help:longint;
  797. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendUnsignedIntegerField';
  798. function NWSAppendHexField
  799. (line,column,fflag:longint;
  800. data:Plongint;
  801. minimum, maximum, help:longint;
  802. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendHexField';
  803. procedure NWSDisplayPreHelp
  804. (line, column, message:longint;
  805. handle:PNUTInfo);cdecl;external External_library name 'NWSDisplayPreHelp';
  806. procedure NWSRemovePreHelp
  807. (handle:PNUTInfo);cdecl;external External_library name 'NWSRemovePreHelp';
  808. function NWSGetADisk
  809. (volName,prompt:PAnsiChar;
  810. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSGetADisk';
  811. procedure NWSInitListPtr(listPtr:PLISTPTR);cdecl;external External_library name 'NWSInitListPtr';
  812. function NWSEditForm
  813. (headernum,
  814. line,
  815. col,
  816. portalHeight,
  817. portalWidth,
  818. virtualHeight,
  819. virtualWidth,
  820. ESCverify,
  821. forceverify,
  822. confirmMessage : longint;
  823. handle : PNUTInfo):longint;cdecl;external External_library name 'NWSEditForm';
  824. function NWSEditPortalFormField
  825. (header,
  826. cline,
  827. ccol,
  828. formHeight,
  829. formWidth,
  830. controlFlags:longint;
  831. formHelp:CARDINAL;
  832. confirmMessage:longint;
  833. startField:PFIELD;
  834. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditPortalFormField';
  835. function NWSEditPortalForm
  836. (header,
  837. centerLine,
  838. centerColumn,
  839. formHeight,
  840. formWidth,
  841. controlFlags:longint;
  842. formHelp:CARDINAL;
  843. confirmMessage:longint;
  844. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditPortalForm';
  845. type TfFormat = procedure (field:Pfielddef; text:PAnsiChar; buffLen:longint); cdecl;
  846. TfControl = function (field:Pfielddef; selectKey:longint; var fieldChanged:longint; handle:PNUTInfo):longint; cdecl;
  847. TfVerify = function (field:Pfielddef; data:pointer; handle:PNUTInfo):longint; cdecl;
  848. TfRelease = procedure (field:Pfielddef); cdecl;
  849. { Data & Xtra field release routine }
  850. function NWSAppendToForm(
  851. fline,
  852. fcol,
  853. fwidth,
  854. fattr:longint;
  855. fFormat:TfFormat;
  856. fControl:TfControl;
  857. fVerify:TfVerify;
  858. fRelease:TfRelease;
  859. fData:pointer;
  860. fXtra:pointer;
  861. fflags:longint;
  862. fActivateKeys:longint;
  863. fhelp:longint;
  864. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendToForm';
  865. function NWSAppendPromptField(line,column,promptnum:longint; handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendPromptField';
  866. function NWSAppendCommentField(line,column:longint; prompt:PAnsiChar; handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendCommentField';
  867. function NWSAppendStringField
  868. (line,
  869. column,
  870. width,
  871. fflag:longint;
  872. data,cset:PAnsiChar;
  873. help:longint;
  874. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendStringField';
  875. function NWSAppendBoolField
  876. (line,
  877. column,
  878. fflag:longint;
  879. data:pointer;
  880. help:longint;
  881. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendBoolField';
  882. function NWSAppendBoolField
  883. (line,
  884. column,
  885. fflag:longint;
  886. var data:longbool;
  887. help:longint;
  888. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendBoolField';
  889. function NWSAppendGenericBoolField
  890. (line,
  891. column,
  892. fflag:longint;
  893. data:pointer;
  894. help:longint;
  895. yesString, noString:PAnsiChar;
  896. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendGenericBoolField';
  897. function NWSAppendGenericBoolField
  898. (line,
  899. column,
  900. fflag:longint;
  901. var data:longbool;
  902. help:longint;
  903. yesString, noString:PAnsiChar;
  904. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendGenericBoolField';
  905. type TSpotActionFunc = function (fp:PFIELD; selectKey:longint; var changedField:longint; handle:PNUTInfo):longint; cdecl;
  906. function NWSAppendHotSpotField
  907. (line,
  908. column,
  909. fflag:longint;
  910. displayString:PAnsiChar;
  911. SpotAction:TSpotActionFunc;
  912. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendHotSpotField';
  913. function NWSInitMenuField
  914. (headermsg,
  915. cLine,
  916. cCol:longint;
  917. action:TActionFunc;
  918. nutInfo:PNUTInfo;
  919. args:array of const):PMFCONTROL;cdecl;external External_library name 'NWSInitMenuField';
  920. function NWSInitMenuField
  921. (headermsg,
  922. cLine,
  923. cCol:longint;
  924. action:TActionFunc;
  925. nutInfo:PNUTInfo):PMFCONTROL;cdecl;external External_library name 'NWSInitMenuField';
  926. function NWSAppendToMenuField
  927. (m:PMFCONTROL;
  928. optiontext:longint;
  929. option:longint;
  930. nutInfo:PNUTInfo):longint;cdecl;external External_library name 'NWSAppendToMenuField';
  931. function NWSAppendMenuField
  932. (line,
  933. column,
  934. fflag:longint;
  935. data:Plongint;
  936. m:PMFCONTROL;
  937. help:longint;
  938. nutInfo:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendMenuField';
  939. function NWSAppendMenuField
  940. (line,
  941. column,
  942. fflag:longint;
  943. var data:longint;
  944. m:PMFCONTROL;
  945. help:longint;
  946. nutInfo:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendMenuField';
  947. function NWSEditText
  948. (centerLine,
  949. centerColumn,
  950. height,
  951. width,
  952. headerNumber:longint;
  953. textBuffer:PAnsiChar;
  954. maxBufferLength,
  955. confirmMessage,
  956. forceConfirm:longint;
  957. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditText';
  958. function NWSViewText
  959. (centerLine,
  960. centerColumn,
  961. height,
  962. width,
  963. headerNumber:longint;
  964. textBuffer:PAnsiChar;
  965. maxBufferLength:longint;
  966. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSViewText';
  967. procedure NWSDisplayHelpScreen
  968. (offset:longint;
  969. handle:PNUTInfo);cdecl;external External_library name 'NWSDisplayHelpScreen';
  970. // Allocates memory for NWSNUT purposes
  971. function NWSAlloc
  972. (numberOfBytes:longint;
  973. handle:PNUTInfo):pointer;cdecl;external External_library name 'NWSAlloc';
  974. procedure NWSFree
  975. (address:pointer;
  976. handle:PNUTInfo);cdecl;external External_library name 'NWSFree';
  977. // Displays justified text in an existing portal
  978. function NWSDisplayTextJustifiedInPortal
  979. (justify,
  980. line:longint; column:longint; textWidth:longint; text:PAnsiChar;
  981. attribute:longint; portal:PPCB):longint;cdecl;external External_library name 'NWSDisplayTextJustifiedInPortal';
  982. function NWSDisplayInformationInPortal
  983. (header,
  984. portalJustifyLine,
  985. portalJustifyColumn,
  986. portalJustifyType,
  987. portalPalette,
  988. portalBorderType,
  989. portalMaxWidth,
  990. portalMaxHeight,
  991. portalMinWidth,
  992. portalMinHeight,
  993. textLRJustifyType,
  994. textLRIndent,
  995. textTBJustifyType,
  996. textTBIndent,
  997. textAttribute,
  998. textMinimizeStyle:longint;
  999. text:PAnsiChar;
  1000. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSDisplayInformationInPortal';
  1001. procedure NWSRestoreNut(handle:PNUTInfo);cdecl;external External_library name 'NWSRestoreNut';
  1002. procedure NWSDrawPortalBorder(portal:PPCB);cdecl;external External_library name 'NWSDrawPortalBorder';
  1003. procedure NWSUpdatePortal(portal:PPCB);cdecl;external External_library name 'NWSUpdatePortal';
  1004. type TSSFEntryProc = procedure (para1:PFIELD; para2:pointer; para3:PNUTInfo); cdecl;
  1005. TSSFCustomDataReleaseProc = procedure (para1:pointer; para2:PNUTInfo); cdecl;
  1006. TSSFFormat=procedure (para1:PFIELD; text:PAnsiChar; para3:longint); cdecl;
  1007. TSSFControlFunc = function (para1:PFIELD; para2:longint; para3:Plongint; para4:PNUTInfo):longint; cdecl;
  1008. TSSFVerifyFunc = function (para1:PFIELD; para2:pointer; para3:PNUTInfo):longint; cdecl;
  1009. TSSFReleaseProc = procedure (para1:PFIELD); cdecl;
  1010. procedure NWSSetFieldFunctionPtr(fp:PFIELD;
  1011. Format : TSSFFormat;
  1012. Control: TSSFControlFunc;
  1013. Verify : TSSFVerifyFunc;
  1014. Release: TSSFReleaseProc;
  1015. Entry : TSSFEntryProc;
  1016. customDataRelease
  1017. : TSSFCustomDataReleaseProc);cdecl;external External_library name 'NWSSetFieldFunctionPtr';
  1018. type TCompareFunc = function (el1:PLIST; el2:PLIST):longint; cdecl;
  1019. procedure NWSSetDefaultCompare(handle:PNUTInfo;
  1020. defaultCompareFunction:TCompareFunc);cdecl;external External_library name 'NWSSetDefaultCompare';
  1021. procedure NWSGetDefaultCompare(handle:PNUTInfo; var defaultCompareFunction:TCompareFunc);cdecl;external External_library name 'NWSGetDefaultCompare';
  1022. type TlistSortFunction = procedure (head:PLIST; tail:PLIST; handle:PNUTInfo); cdecl;
  1023. { added in version 402 }
  1024. procedure NWSSetListSortFunction(handle:PNUTInfo;
  1025. listSortFunction:TlistSortFunction);cdecl;external External_library name 'NWSSetListSortFunction';
  1026. { added in version 402 }
  1027. procedure NWSGetListSortFunction(handle:PNUTInfo;
  1028. var listSortFunction:TlistSortFunction);cdecl;external External_library name 'NWSGetListSortFunction';
  1029. procedure NWSSetScreenPalette(newPalette:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSSetScreenPalette';
  1030. function NWSGetScreenPalette(handle:PNUTInfo):longint;cdecl;external External_library name 'NWSGetScreenPalette';
  1031. procedure NWSGetPCB(var _pPcb:PPCB; portalNumber:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSGetPCB';
  1032. type TentryProcedure = procedure (element:PLIST; displayLine:longint; handle:PNUTInfo); cdecl;
  1033. procedure NWSSetListNotifyProcedure(el:PLIST;
  1034. entryProcedure:TentryProcedure);cdecl;external External_library name 'NWSSetListNotifyProcedure';
  1035. procedure NWSGetListNotifyProcedure(el:PLIST;
  1036. var entryProcedure:TentryProcedure);cdecl;external External_library name 'NWSGetListNotifyProcedure';
  1037. type TcdReleaseProc = procedure (theData:pointer; handle:PNUTInfo); cdecl;
  1038. procedure NWSSetHandleCustomData(handle:PNUTInfo;
  1039. customData:pointer;
  1040. customDataRelease:TcdReleaseProc);cdecl;external External_library name 'NWSSetHandleCustomData';
  1041. procedure NWSGetHandleCustomData(handle:PNUTInfo;
  1042. customData:Ppointer;
  1043. customDataRelease:TcdReleaseProc);cdecl;external External_library name 'NWSGetHandleCustomData';
  1044. procedure NWSSetErrorLabelDisplayFlag(flag:longint;
  1045. handle:PNUTInfo);cdecl;external External_library name 'NWSSetErrorLabelDisplayFlag';
  1046. procedure NWSSetHelpHelp(helpIndex:longint;
  1047. handle:PNUTInfo);cdecl;external External_library name 'NWSSetHelpHelp';
  1048. { max length of passwordString, including NULL }
  1049. function NWSPromptForPassword
  1050. (passwordHeader,
  1051. line,
  1052. column,
  1053. maxPasswordLen : longint;
  1054. passwordString:PAnsiChar;
  1055. verifyEntry:longint;
  1056. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSPromptForPassword';
  1057. function NWSAppendPasswordField
  1058. (line,
  1059. column,
  1060. width,
  1061. fflag:longint; // field flags
  1062. data:PAnsiChar; // ptr to field text
  1063. maxDataLen, // including null
  1064. help, // help for field
  1065. verifyEntry, // force password verification
  1066. passwordPortalHeader,
  1067. maskCharacter:longint; // fill character for field
  1068. nhandle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendPasswordField';
  1069. function NWSAppendScrollableStringField
  1070. (line,
  1071. column,
  1072. width,
  1073. fflag:longint;
  1074. data:PAnsiChar;
  1075. maxLen:longint; // max len of data, allowing for null terminator
  1076. cset:pointer; // valid characters, if using EF_SET
  1077. editFlags, // NWSEditString flags (EF_UPPER etc.)
  1078. help:longint;
  1079. handle:PNUTInfo):PFIELD;cdecl;external External_library name 'NWSAppendScrollableStringField';
  1080. type TSSFInsertFunc = function (_string:PAnsiChar; maxLen:longint; parameters:pointer):longint; cdecl;
  1081. procedure NWSSetScrollableFieldInsertProc(fp:PFIELD; insertProc:TSSFInsertFunc);cdecl;external External_library name 'NWSSetScrollableFieldInsertProc';
  1082. { Returns 0 for success, -1 if none selected }
  1083. { if not NULL, returns portal number }
  1084. function NWSGetCurrentPortal(nutInfo:PNUTInfo; portalNumber:plongint; var portal:PPCB):longint;cdecl;external External_library name 'NWSGetCurrentPortal';
  1085. { if not NULL, returns PCB pointer }
  1086. function NWSWaitForKeyAndValue(handle:PNUTInfo;
  1087. nKeys:longint;
  1088. keyType:array of longint;
  1089. keyValue:array of longint):longint;cdecl;external External_library name 'NWSWaitForKeyAndValue';
  1090. procedure NWSShowLineAttribute(line,
  1091. column:longint;
  1092. text:PAnsiChar;
  1093. attribute,
  1094. length:longint;
  1095. screenID:TScr);cdecl;external External_library name 'NWSShowLineAttribute';
  1096. procedure NWSShowLine(line,column:longint; text:PAnsiChar; length:longint; screenID:TScr);cdecl;external External_library name 'NWSShowLine';
  1097. procedure NWSScrollZone
  1098. (line,
  1099. column,
  1100. height,
  1101. width,
  1102. attribute,
  1103. count,
  1104. direction:longint;
  1105. screenID:TScr);cdecl;external External_library name 'NWSScrollZone';
  1106. procedure NWSSaveZone
  1107. (line,
  1108. column,
  1109. height,
  1110. width:longint;
  1111. buffer:pointer;
  1112. screenID:TScr);cdecl;external External_library name 'NWSSaveZone';
  1113. procedure NWSSaveZone
  1114. (line,
  1115. column,
  1116. height,
  1117. width:longint;
  1118. var buffer;
  1119. screenID:TScr);cdecl;external External_library name 'NWSSaveZone';
  1120. procedure NWSRestoreZone
  1121. (line,
  1122. column,
  1123. height,
  1124. width:longint;
  1125. buffer:pointer;
  1126. screenID:TScr);cdecl;external External_library name 'NWSRestoreZone';
  1127. procedure NWSRestoreZone
  1128. (line,
  1129. column,
  1130. height,
  1131. width:longint;
  1132. var buffer;
  1133. screenID:TScr);cdecl;external External_library name 'NWSRestoreZone';
  1134. procedure NWSRestoreDisplay(screenID:TScr);cdecl;external External_library name 'NWSRestoreDisplay';
  1135. procedure NWSPositionCursor(line, column:longint; screenID:TScr);cdecl;external External_library name 'NWSPositionCursor';
  1136. procedure NWSGetNUTVersion(majorVersion, minorVersion, revision:plongint);cdecl;external External_library name 'NWSGetNUTVersion';
  1137. procedure NWSGetNUTVersion(var majorVersion, minorVersion, revision:longint);cdecl;external External_library name 'NWSGetNUTVersion';
  1138. procedure NWSSetFormRepaintFlag(value:longint; handle:PNUTInfo);cdecl;external External_library name 'NWSSetFormRepaintFlag';
  1139. procedure NWSSetFormNoWrap(handle:PNUTInfo);cdecl;external External_library name 'NWSSetFormNoWrap';
  1140. function NWSViewTextWithScrollBars
  1141. (centerLine,
  1142. centerColumn,
  1143. height,
  1144. width,
  1145. headerNumber:longint;
  1146. textBuffer:PAnsiChar;
  1147. maxBufferLength,
  1148. scrollBarFlag:longint;
  1149. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSViewTextWithScrollBars';
  1150. { length of document }
  1151. function NWSEditTextWithScrollBars
  1152. (centerLine,
  1153. centerColumn,
  1154. height,
  1155. width,
  1156. headerNumber:longint;
  1157. textBuffer:PAnsiChar;
  1158. maxBufferLength,
  1159. confirmMessage,
  1160. forceConfirm,
  1161. scrollBarFlag:longint;
  1162. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditTextWithScrollBars';
  1163. function NWSEditTextWithScrollBars
  1164. (centerLine,
  1165. centerColumn,
  1166. height,
  1167. width,
  1168. headerNumber:longint;
  1169. textBuffer:PAnsiChar;
  1170. maxBufferLength,
  1171. confirmMessage : longint;
  1172. forceConfirm : longbool;
  1173. scrollBarFlag : longint;
  1174. handle:PNUTInfo):longint;cdecl;external External_library name 'NWSEditTextWithScrollBars';
  1175. implementation
  1176. function F_H1 : longint;
  1177. begin
  1178. F_H1:=NWSGetLineDrawCharacter(0);
  1179. end;
  1180. function F_H2 : longint;
  1181. begin
  1182. F_H2:=NWSGetLineDrawCharacter(1);
  1183. end;
  1184. function F_V1 : longint;
  1185. begin
  1186. F_V1:=NWSGetLineDrawCharacter(2);
  1187. end;
  1188. function F_V2 : longint;
  1189. begin
  1190. F_V2:=NWSGetLineDrawCharacter(3);
  1191. end;
  1192. function F_UL1 : longint;
  1193. begin
  1194. F_UL1:=NWSGetLineDrawCharacter(4);
  1195. end;
  1196. function F_UR1 : longint;
  1197. begin
  1198. F_UR1:=NWSGetLineDrawCharacter(5);
  1199. end;
  1200. function F_LL1 : longint;
  1201. begin
  1202. F_LL1:=NWSGetLineDrawCharacter(6);
  1203. end;
  1204. function F_LR1 : longint;
  1205. begin
  1206. F_LR1:=NWSGetLineDrawCharacter(7);
  1207. end;
  1208. function F_UL2 : longint;
  1209. begin
  1210. F_UL2:=NWSGetLineDrawCharacter(8);
  1211. end;
  1212. function F_UR2 : longint;
  1213. begin
  1214. F_UR2:=NWSGetLineDrawCharacter(9);
  1215. end;
  1216. function F_LL2 : longint;
  1217. begin
  1218. F_LL2:=NWSGetLineDrawCharacter(10);
  1219. end;
  1220. function F_LR2 : longint;
  1221. begin
  1222. F_LR2:=NWSGetLineDrawCharacter(11);
  1223. end;
  1224. function F_UT1 : longint;
  1225. begin
  1226. F_UT1:=NWSGetLineDrawCharacter(12);
  1227. end;
  1228. function F_DT1 : longint;
  1229. begin
  1230. F_DT1:=NWSGetLineDrawCharacter(13);
  1231. end;
  1232. function F_LT1 : longint;
  1233. begin
  1234. F_LT1:=NWSGetLineDrawCharacter(14);
  1235. end;
  1236. function F_RT1 : longint;
  1237. begin
  1238. F_RT1:=NWSGetLineDrawCharacter(15);
  1239. end;
  1240. function F_UT2 : longint;
  1241. begin
  1242. F_UT2:=NWSGetLineDrawCharacter(24);
  1243. end;
  1244. function F_DT2 : longint;
  1245. begin
  1246. F_DT2:=NWSGetLineDrawCharacter(25);
  1247. end;
  1248. function F_LT2 : longint;
  1249. begin
  1250. F_LT2:=NWSGetLineDrawCharacter(26);
  1251. end;
  1252. function F_RT2 : longint;
  1253. begin
  1254. F_RT2:=NWSGetLineDrawCharacter(27);
  1255. end;
  1256. function F_X1 : longint;
  1257. begin
  1258. F_X1:=NWSGetLineDrawCharacter(36);
  1259. end;
  1260. function F_X2 : longint;
  1261. begin
  1262. F_X2:=NWSGetLineDrawCharacter(39);
  1263. end;
  1264. function F_UP : longint;
  1265. begin
  1266. F_UP:=NWSGetLineDrawCharacter(40);
  1267. end;
  1268. function F_DOWN : longint;
  1269. begin
  1270. F_DOWN:=NWSGetLineDrawCharacter(41);
  1271. end;
  1272. function F_LEFT : longint;
  1273. begin
  1274. F_LEFT:=NWSGetLineDrawCharacter(42);
  1275. end;
  1276. function F_RIGHT : longint;
  1277. begin
  1278. F_RIGHT:=NWSGetLineDrawCharacter(43);
  1279. end;
  1280. function F_BG1 : longint;
  1281. begin
  1282. F_BG1:=NWSGetLineDrawCharacter(44);
  1283. end;
  1284. function F_BG2 : longint;
  1285. begin
  1286. F_BG2:=NWSGetLineDrawCharacter(45);
  1287. end;
  1288. function F_BG3 : longint;
  1289. begin
  1290. F_BG3:=NWSGetLineDrawCharacter(46);
  1291. end;
  1292. function F_BG4 : longint;
  1293. begin
  1294. F_BG4:=NWSGetLineDrawCharacter(47);
  1295. end;
  1296. function IS_DYNAMIC_MESSAGE(a : longint) : boolean;
  1297. begin
  1298. IS_DYNAMIC_MESSAGE:=(a > $fff0) and (a < $ffff);
  1299. end;
  1300. end.