home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 January / pcwk_01_1999_B.iso / Lotus123 / SPANISH / INSTALL.DSK / CALLBACK.LSS < prev    next >
Text File  |  1996-06-19  |  117KB  |  3,462 lines

  1. ''*********************************************************************
  2. ''
  3. ''   Module Name:   cominst\toolkit\callback.lss
  4. ''
  5. ''   Module Code:   COMINST
  6. ''
  7. ''   Author:        Dave Dupre
  8. ''
  9. ''   Creation Date: Wednesday January 5, 1994
  10. ''
  11. ''   Copyright Lotus Development Corporation, (c) 1994
  12. ''
  13. ''
  14. ''   Description:
  15. ''      
  16. ''
  17. ''   Additional authors: MZ
  18. ''
  19. ''   Change History:
  20. ''   $Log:   //CIT/VOL1/CFLOG/logfiles/cominst/toolkit/callback.l@s  $
  21. '' 
  22. ''    Rev 1.194   19 Jun 1996 07:41:58   jdonohue
  23. '' Added looking for readnet.wri filename w/o path since other two tests fail for
  24. '' unknown reasons in LAUNCHNAGCB
  25. '' 
  26. ''    Rev 1.193   17 Jun 1996 11:11:34   jdonohue
  27. '' Ref SPR:     KYEE36MSLU    
  28. '' Removed call to MakePath in LAUNCHNAGCB callback, since MakePath doesn't like
  29. '' embedded dots in path (LOTUSTMP.000)
  30. '' 
  31. ''    Rev 1.192   14 Jun 1996 17:53:16   dfristro
  32. '' Simplified error message for excessive path length (SID_ERR_PATHLEN) to
  33. '' fix SPR RWIS36HHHN.
  34. '' 
  35. ''    Rev 1.189   10 Jun 1996 15:06:52   mhishinu
  36. '' Replaced six LEFT calls with LEFTBP to fix DBCS bug.
  37. '' 
  38. ''    Rev 1.188   22 May 1996 15:24:36   jdonohue
  39. '' Replaced LEFTBP calls with LEFT
  40. '' 
  41. ''    Rev 1.187   16 May 1996 12:53:04   jdonohue
  42. '' Changed notepad.exe and readme.txt to write.exe and readme.wri, and changed
  43. '' corresponding string symbolic names to be consistent
  44. '' 
  45. ''    Rev 1.186   15 May 1996 13:34:32   glutz
  46. '' SrvNodeOptionsCB and NodeNodeOptionsCB were not veryfying the number
  47. '' of member check boxes accociated with each group box.
  48. '' 
  49. ''    Rev 1.185   07 May 1996 11:16:32   glutz
  50. '' Changed dirChanged% to static in nodenodeoptionscb.
  51. '' 
  52. ''    Rev 1.184   07 May 1996 10:18:36   glutz
  53. '' Fixed up logic for displaying personal dir and node options dialog 
  54. '' SPR#CDWT34NSKG
  55. '' 
  56. ''    Rev 1.183   12 Apr 1996 15:43:58   glutz
  57. '' Fixed problem in node options callbacks with member boxes being checked.
  58. '' 
  59. ''    Rev 1.182   09 Apr 1996 15:42:24   glutz
  60. '' Srvnodeoptions group boxes are not selected if no members are selected.
  61. '' 
  62. ''    Rev 1.181   09 Apr 1996 14:52:00   glutz
  63. '' in nodenodeoptions and srvnodeoptions toggling off all member boxes
  64. '' will turn off group box.
  65. '' 
  66. ''    Rev 1.180   28 Mar 1996 08:36:48   jdonohue
  67. '' Install fonts to  "win\fonts" on server
  68. '' 
  69. ''    Rev 1.178   27 Mar 1996 13:16:14   jdonohue
  70. '' Changed LOTUSFONTSDIR handling to mimic WIN/WINSYS fonts go to win directory
  71. '' on server
  72. '' 
  73. ''    Rev 1.177   14 Mar 1996 14:00:36   jdonohue
  74. '' Don't put up any node options if product not selected in NODENODEOPTIONSCB
  75. '' 
  76. ''    Rev 1.176   13 Mar 1996 13:42:26   jdonohue
  77. '' Changed GetListItem argument for "IDC_TREE" to 1 instead of Inst%, since there
  78. '' is only one list item ever
  79. '' 
  80. ''    Rev 1.175   11 Mar 1996 09:06:02   jdonohue
  81. '' Added sticky settings to SRVNODEOPTIONSCB and NODENODEOPTIONSCB
  82. '' 
  83. ''    Rev 1.174   06 Mar 1996 12:29:22   jdonohue
  84. '' Ref SPR: LSCR32FVVK  
  85. '' Caused edit control for new program group to be highlighted by tabbing out of
  86. '' and back into control
  87. '' 
  88. ''    Rev 1.173   04 Mar 1996 08:31:50   jdonohue
  89. '' Remove 16 bit shared component support -- pass 1 : eliminate LOTUSAPP
  90. '' 
  91. ''    Rev 1.172   29 Feb 1996 15:37:14   glutz
  92. '' Callbacks that have combo/edit pairs now use ComboSelChanged and 
  93. '' GetPathFromComboEdit for path handling.
  94. '' 
  95. ''    Rev 1.171   23 Jan 1996 16:02:20   cmoy
  96. '' Merged FE changes
  97. '' 
  98. ''    Rev 1.170   17 Jan 1996 14:22:54   glutz
  99. '' modified NODENODEOPTIONSCB for LCBs.
  100. '' 
  101. ''    Rev 1.169   17 Jan 1996 11:47:12   jdonohue
  102. '' Backed out shared windows handling -- copy to normal server location as well
  103. '' 
  104. ''    Rev 1.168   15 Jan 1996 15:05:34   jdonohue
  105. '' Added function Lot_SharedWindowsDlg for Shared Windows Server installs
  106. '' 
  107. ''    Rev 1.167   12 Jan 1996 14:10:56   jdonohue
  108. '' Added special handling of SYM_LOTUSFONTSDIR$ and SYM_WINSYSDIR$) in dialogs
  109. '' 
  110. ''    Rev 1.166   12 Jan 1996 10:02:08   jdonohue
  111. '' Added flag for server install to shared windows location
  112. '' 
  113. ''    Rev 1.165   22 Dec 1995 10:13:04   jdonohue
  114. '' Removed all references to SYM_PARENTDIR$ -- is now SYM_BASEDIR$ for all
  115. '' 
  116. ''    Rev 1.164   Oct 24 1995 16:54:26   cmoy
  117. '' removed eof char
  118. '' 
  119. ''    Rev 1.163   22 Oct 1995 17:40:24   cmoy
  120. '' HISHI: Changed GetGroupName and PROGMANGROUPCB
  121. '' They call GetDBCSSymbolValue and GetDBCSListItem.
  122. '' GetGroupName doesn't call FDBCSCharLen.
  123. '' 
  124. ''    Rev 1.162   28 Sep 1995 10:26:40   amontalv
  125. '' Changed how the default folder is gotten to allow clients to change it when they
  126. '' change default program group name.  This broke when I changed the UI for folders.
  127. '' 
  128. ''    Rev 1.161   27 Sep 1995 16:40:52   amontalv
  129. '' Don't allow entries of illegal characters or blank fields for program folders.
  130. '' 
  131. ''    Rev 1.160   26 Sep 1995 13:01:48   amontalv
  132. '' Having problem redisplaying item that was previously clicked on after clicking on
  133. '' tab, so reset gPrevInst% when you click on tab.
  134. '' 
  135. ''    Rev 1.159   26 Sep 1995 12:40:00   amontalv
  136. '' Changed check for invalid characters.
  137. '' 
  138. ''    Rev 1.158   25 Sep 1995 17:45:42   amontalv
  139. '' Added code to check for valid folder item.  If invalid do not allow user to
  140. '' change selection or hit okay.
  141. '' 
  142. ''    Rev 1.157   Sep 25 1995 10:58:40   cmoy
  143. '' Fixed declaration errors
  144. '' 
  145. ''    Rev 1.156   22 Sep 1995 16:44:24   tveerapp
  146. '' Fixed spr# LSCR2VZVGB. GETLOTUSAPPDIRCB changes.
  147. '' 
  148. ''    Rev 1.155   22 Sep 1995 15:07:12   jdonohue
  149. '' Remove SYM_LOTUSUSERDIR$ processing
  150. '' 
  151. ''    Rev 1.154   22 Sep 1995 12:17:10   amontalv
  152. '' Check for focus before making change to Program Folder entry in tree from edit line.
  153. '' 
  154. ''    Rev 1.153   21 Sep 1995 15:40:10   amontalv
  155. '' Fixed notebook focus issues.  Had to call text1 and bitmap window directly.
  156. '' Also changed check for updating these.
  157. '' 
  158. ''    Rev 1.152   21 Sep 1995 09:33:56   jdonohue
  159. '' Disable browse buttons 2 and 3 for a language install
  160. '' 
  161. ''    Rev 1.151   20 Sep 1995 13:38:08   glutz
  162. '' CUSTOM2CB disables the path change button if the selected component
  163. '' belongs in the component dir.
  164. '' 
  165. ''    Rev 1.150   19 Sep 1995 15:30:00   amontalv
  166. '' After creating new folder, put focus in edit box.
  167. '' 
  168. ''    Rev 1.149   Sep 14 1995 18:30:06   cmoy
  169. '' fixed focus problem (Mak Inada)
  170. '' 
  171. ''    Rev 1.148   14 Sep 1995 12:26:20   cmoy
  172. '' fixed folder to foldername
  173. '' 
  174. ''    Rev 1.147   13 Sep 1995 16:31:34   amontalv
  175. '' Resourced New folder name.
  176. '' 
  177. ''    Rev 1.146   13 Sep 1995 16:26:36   amontalv
  178. '' Changed processing for program folder input dialog.
  179. '' 
  180. ''    Rev 1.145   07 Sep 1995 15:21:50   amontalv
  181. '' Added check to make sure folders names are not blank.
  182. '' 
  183. ''    Rev 1.144   05 Sep 1995 16:39:26   amontalv
  184. '' Added logic to get readnet.txt out of temp directory if it exists.
  185. '' 
  186. ''    Rev 1.143   31 Aug 1995 15:09:22   callanan
  187. '' Displaying tip in custom dlg using the setsymbol, to avoid losing bitmap.  Also added param to SetCustomInfo
  188. '' 
  189. ''    Rev 1.142   29 Aug 1995 08:29:10   jdonohue
  190. '' Changed symbol of USERDIR to LOTUSUSERDIR
  191. '' 
  192. ''    Rev 1.141   25 Aug 1995 14:22:56   amontalv
  193. '' Always calculate size when item gets clicked.
  194. '' 
  195. ''    Rev 1.140   24 Aug 1995 07:55:18   jdonohue
  196. '' Added SYM_USERDIR and set it
  197. '' 
  198. ''    Rev 1.139   23 Aug 1995 15:33:14   cmoy
  199. '' Moved MAX_NO_DRIVECOMBOS to toolkit.lss
  200. '' 
  201. ''    Rev 1.138   21 Aug 1995 14:24:48   tveerapp
  202. '' Made MAX_NO_DRIVECOMBOS a POUBLIC CONST.
  203. '' 
  204. ''    Rev 1.137   18 Aug 1995 17:27:44   tveerapp
  205. '' Fixed ResetWinWinSys to fix spr#JHAE2V7UNL.(This involved backing out
  206. '' Jdonahue's change on July29.)
  207. '' 
  208. ''    Rev 1.136   18 Aug 1995 16:38:24   glutz
  209. '' Took out a print statement.
  210. '' 
  211. ''    Rev 1.135   18 Aug 1995 16:35:54   glutz
  212. '' Had to make sure SetCustomInfo does not enable IDC_B1 if it is not
  213. '' visible.
  214. '' 
  215. ''    Rev 1.134   18 Aug 1995 11:13:34   callanan
  216. '' If item in custom dlg has no bmp set ID_BMP1 to null string, this will cause
  217. '' the bitmap symbol handler to clear out the old bmp.
  218. '' 
  219. ''    Rev 1.133   17 Aug 1995 14:16:54   callanan
  220. '' Changed the default way to handle bitmaps in dialogs
  221. '' 
  222. ''    Rev 1.132   14 Aug 1995 10:35:00   callanan
  223. '' Changed CUSTOM2CB to only display bitmap once when select
  224. '' 
  225. ''    Rev 1.131   11 Aug 1995 10:44:16   jdonohue
  226. '' Disable path change for server language install
  227. '' 
  228. ''    Rev 1.130   08 Aug 1995 17:03:06   tveerapp
  229. '' Added the browse functionality to GETLOTUSAPPDIRCB.
  230. '' 
  231. ''    Rev 1.129   08 Aug 1995 16:18:54   glutz
  232. '' Had to make sure in sizeofinstallcb the edit boxes only get validated
  233. '' if they exist.
  234. '' 
  235. ''    Rev 1.128   07 Aug 1995 08:28:24   mmeth
  236. '' Part 2 of fix for  SPR# JHOH2M4HZL:
  237. '' In WELCOMECB changed the length of the truncations from 30 to 80.
  238. '' 
  239. ''    Rev 1.127   05 Aug 1995 15:51:36   tveerapp
  240. '' Removed a space that was put in when the second path was being validated
  241. '' in SIZEOFINSTALLCB.
  242. '' 
  243. ''    Rev 1.126   05 Aug 1995 15:05:12   tveerapp
  244. '' Fixed an spr. Changed SIZEOFINSTALLCB. For server components dir use
  245. '' IDC_EDIT3 and IDC_COMBO3 to be consistent with the dialog templates.
  246. '' 
  247. ''    Rev 1.125   04 Aug 1995 16:39:30   glutz
  248. '' ParentDirCB and SizeofInstallCB always start out with dirchanged true.
  249. '' 
  250. ''    Rev 1.124   04 Aug 1995 11:15:06   jdonohue
  251. '' Don't allow user path changes for a language install
  252. '' 
  253. ''    Rev 1.123   01 Aug 1995 16:01:30   glutz
  254. '' Commented out 4 lines in SetCustomInfo so paths would show for tabs in
  255. '' server install.
  256. '' 
  257. ''    Rev 1.122   30 Jul 1995 07:51:20   glutz
  258. '' Added unc paths to Lot_SetSpaceDirTip.
  259. '' 
  260. ''    Rev 1.121   29 Jul 1995 17:44:12   jdonohue
  261. '' Set WINDIR and WINSYSDIR back to defaults if change from server to other
  262. '' 
  263. ''    Rev 1.120   29 Jul 1995 15:39:08   jdonohue
  264. '' PARENTDIRCB set dirChanged to true always for server since we fiddle with 
  265. '' drives list
  266. '' 
  267. ''    Rev 1.119   28 Jul 1995 16:47:56   pdonahue
  268. '' modified sizeofinstall in case of server to use IDC_Edit3 for lotusapp.
  269. '' 
  270. ''    Rev 1.118   27 Jul 1995 13:00:04   amontalv
  271. '' Changed the program manager group name to not do certain check if we 
  272. '' are in Win95.
  273. '' 
  274. ''    Rev 1.117   26 Jul 1995 10:36:52   pdonahue
  275. '' added error message for invalid folder name in case of win95 install.
  276. '' 
  277. ''    Rev 1.116   25 Jul 1995 12:43:10   jdonohue
  278. '' Grey out change path when on tab and item not selected
  279. '' 
  280. ''    Rev 1.115   20 Jul 1995 15:52:00   glutz
  281. '' SetCustomInfo now calls GetFreeSpaceForDrive every time a tab changes.
  282. '' 
  283. ''    Rev 1.114   20 Jul 1995 10:55:24   glutz
  284. '' GetFreeSpaceForDrive now returns K bytes so I made changes accordingly.
  285. '' 
  286. ''    Rev 1.113   17 Jul 1995 16:39:44   glutz
  287. '' Callback functions that have browse buttons now call ValidateBrowse if 
  288. '' IDC_BROWSE is the callback message.
  289. '' 
  290. ''    Rev 1.112   17 Jul 1995 13:17:30   amontalv
  291. '' Added check to see if current folder existed after the removal of a folder.
  292. '' If the folder exists then the Remove Folder button must be disabled, which it
  293. '' is, but the focus must be moved off this disabled button.  This part was
  294. '' missing and I added it here.
  295. '' 
  296. ''    Rev 1.111   14 Jul 1995 14:50:08   glutz
  297. '' SetCustomInfo had wrong return val type for call to LcbGetChapterCost.
  298. '' 
  299. ''    Rev 1.110   11 Jul 1995 12:04:56   glutz
  300. '' In CUSTOM1CB if it's a server install IDC_TEXT4 and IDC_B1 are hidden
  301. '' and IDC_TEXT8 is made visible.
  302. '' 
  303. ''    Rev 1.109   11 Jul 1995 08:53:08   glutz
  304. '' Disable IDC_B1 in CUSTOM1CB when the control is hidden.
  305. '' 
  306. ''    Rev 1.108   10 Jul 1995 15:02:16   glutz
  307. '' Set IDC_TEXT2 after browse in DISTSIZEINSTALLCB.
  308. '' 
  309. ''    Rev 1.107   05 Jul 1995 14:24:52   amontalv
  310. '' Added test to check if path already exists before accepting it on New Folder.
  311. '' 
  312. ''    Rev 1.106   30 Jun 1995 22:11:14   amontalv
  313. '' Added code to display Current Folder in Select Folder dialog.  And ended up adding
  314. '' a hack to allow me to display this when the dialog first comes up.
  315. '' 
  316. ''    Rev 1.105   30 Jun 1995 10:49:20   glutz
  317. '' Straightend out some problems with second path in sizeofinstallcb.
  318. '' 
  319. ''    Rev 1.104   29 Jun 1995 11:47:28   jdonohue
  320. '' Took out print statement
  321. '' 
  322. ''    Rev 1.103   28 Jun 1995 19:57:30   amontalv
  323. '' Changed the possible length of program group from 30 to 254 characters.
  324. '' 
  325. ''    Rev 1.102   28 Jun 1995 19:49:22   amontalv
  326. '' Added check to make sure you couldn't create a folder
  327. '' with just spaces.
  328. '' 
  329. ''    Rev 1.101   26 Jun 1995 19:06:28   amontalv
  330. '' Added check for length of path for folders.
  331. '' 
  332. ''    Rev 1.100   22 Jun 1995 16:44:12   glutz
  333. '' SIZEOFINSTALLCB has to differentiate between dirChanged and dischanged2.
  334. '' 
  335. ''    Rev 1.99   22 Jun 1995 15:30:08   tveerapp
  336. '' Changed WELCOMECB. case IDC_BACK (which is called when the esc. key is hit).
  337. '' Allow the user to quit from the Welcome dialog when the esc. key is hit.
  338. '' 
  339. ''    Rev 1.98   22 Jun 1995 10:21:56   pdonahue
  340. '' fixed merge error
  341. '' 
  342. ''    Rev 1.97   22 Jun 1995 09:31:06   pdonahue
  343. '' fixed bug in additional directory code,
  344. '' 
  345. ''    Rev 1.96   21 Jun 1995 14:28:46   glutz
  346. '' Simplified UNC and browse validations in callbacks
  347. '' 
  348. ''    Rev 1.95   19 Jun 1995 10:25:36   amontalv
  349. '' Put in code to add function to New Folder button and Remove Folder button.  Also
  350. '' fixed some of the selection problems in the tree list.
  351. '' 
  352. ''    Rev 1.94   16 Jun 1995 13:53:36   glutz
  353. '' Don't set drvIndex if SelectDriveCombo returns false
  354. '' 
  355. ''    Rev 1.93   16 Jun 1995 11:50:02   amontalv
  356. '' Made program groups list box get entries form Common Program Groups instead of
  357. '' Current user program groups.  Also made it so that it would be easier to display
  358. '' both if necessary.
  359. '' 
  360. ''    Rev 1.92   14 Jun 1995 22:12:10   amontalv
  361. '' Gave program folder a new look.
  362. '' 
  363. ''    Rev 1.91   14 Jun 1995 16:31:38   amontalv
  364. '' Fixed problem with NT Program Groups.  Look through the registry for
  365. '' program groups and display them for the user.  Most of the code
  366. '' is in C in lotusui.c.  Put calls to registry functions in regwrap.
  367. '' 
  368. ''    Rev 1.90   12 Jun 1995 17:40:36   cmoy
  369. '' fixed bug in changing paths
  370. '' 
  371. ''    Rev 1.89   12 Jun 1995 14:36:54   amontalv
  372. '' SPR KHAN2SSMDL - Resourced name of program group and added to end.
  373. '' 
  374. ''    Rev 1.88   09 Jun 1995 16:41:04   glutz
  375. '' Fixed bug with browse not chaging drive letter
  376. '' 
  377. ''    Rev 1.87   07 Jun 1995 20:59:26   amontalv
  378. '' Moved setting of Tree item around so that it would be set correctly
  379. '' 
  380. ''    Rev 1.86   07 Jun 1995 17:51:28   amontalv
  381. '' Don't set the selected folder again at OK of callback.
  382. '' 
  383. ''    Rev 1.85   07 Jun 1995 16:30:34   amontalv
  384. '' Changed the Win95 start folder so that it initializes
  385. '' earlier in the program.  This should make automation
  386. '' easier to implement for it.  There are still a couple of
  387. '' bugs that I need to work out, but I feel that I should
  388. '' check what I have now.
  389. '' 
  390. ''    Rev 1.84   02 Jun 1995 14:51:06   tveerapp
  391. '' Changed IDC_HELP to IDC_CITHELP.
  392. '' 
  393. ''    Rev 1.83   01 Jun 1995 11:10:44   amontalv
  394. '' Added API function CreateLink to create shortcuts.  Also added functions
  395. '' to save and get the link path to support the CreateLink.  I also changed
  396. '' the startup program folder code to use the default dialog proc and changed
  397. '' the default dialog proc to process directory trees.
  398. '' 
  399. ''    Rev 1.82   30 May 1995 15:03:40   amontalv
  400. '' Needed to lower case drive letter before looking for cost.
  401. '' 
  402. ''    Rev 1.81   25 May 1995 20:54:56   amontalv
  403. '' Added Win95 Program folder dialog and supporting code.  Still need to write code
  404. '' that creates the link files.
  405. '' 
  406. ''    Rev 1.80   22 May 1995 19:19:06   mzgripce
  407. '' delete print messages 
  408. '' 
  409. ''    Rev 1.79   21 May 1995 17:21:28   mzgripce
  410. '' display the DB_SIZEOFINSTALL# depending on components support and
  411. '' set the components symbol when SIZEOFINSTALLCB runs
  412. '' 
  413. ''    Rev 1.78   20 May 1995 20:11:12   glutz
  414. '' Added UNC and Browse to DISTSIZEOFINSTALLCB and NODENODEOPTIONSCB
  415. '' 
  416. ''    Rev 1.77   19 May 1995 18:20:26   glutz
  417. '' SIZEOFINSTALLCD now supports Browse and UNC in multiple
  418. '' Combo and Edit controls
  419. '' 
  420. ''    Rev 1.76   19 May 1995 14:58:48   glutz
  421. '' Added UNC and Browse to PARENTDIRCB
  422. '' 
  423. ''    Rev 1.75   18 May 1995 12:11:26   tveerapp
  424. '' Fixed a Numdirs% in sizeofinstallcb
  425. '' 
  426. ''    Rev 1.74   18 May 1995 12:05:24   tveerapp
  427. '' 1. Added call to SetTheComponentsDir to PARENTDIRCB.
  428. '' 2. Fixed SIZEOFINSTALLCB added check for extra directory.
  429. '' 
  430. ''    Rev 1.73   17 May 1995 15:11:44   mzgripce
  431. '' change >= with > in GetListLength in SIZEOFINSTALLCB 
  432. '' 
  433. ''    Rev 1.72   16 May 1995 17:09:32   glutz
  434. '' Changed USE to AUTOMATE
  435. '' 
  436. ''    Rev 1.71   16 May 1995 12:53:00   mzgripce
  437. '' added PARENTDIRCB subroutine
  438. '' 
  439. ''    Rev 1.70   16 May 1995 11:57:50   glutz
  440. '' Added UNC paths to CHANGEPRODUCTDIRCB, SIZEOFINSTALLCB and SetCustomInfo
  441. '' 
  442. ''    Rev 1.69   16 May 1995 09:47:54   pdonahue
  443. '' fixed typo
  444. '' 
  445. ''    Rev 1.68   16 May 1995 09:39:04   pdonahue
  446. '' added support for additional directories.
  447. '' 
  448. ''    Rev 1.67   03 May 1995 13:04:58   amontalv
  449. '' Upped the number of tabs from 8 to 9.
  450. '' 
  451. ''    Rev 1.66   02 May 1995 12:52:30   cmoy
  452. '' Merged c2 into cf build
  453. '' 
  454. ''    Rev 1.68   18 Apr 1995 17:31:04   mheerman
  455. '' SetFocus now returns a long.  I changed the variables which catch its
  456. '' return value to long to avoid an overflow.
  457. '' 
  458. ''    Rev 1.67   11 Apr 1995 14:23:02   amontalv
  459. '' Deleted debug print
  460. '' 
  461. ''    Rev 1.66   07 Apr 1995 19:35:44   amontalv
  462. '' LSS 32 bit port merge changes.
  463. '' 
  464. ''    Rev 1.65   06 Apr 1995 17:43:28   tveerapp
  465. '' Script port changes to CBs and Window calls.
  466. '' 
  467. ''    Rev 1.64   05 Apr 1995 20:21:18   amontalv
  468. '' Porting to 32 bit.
  469. '' 
  470. ''    Rev 1.63   02 Feb 1995 14:32:40   cmoy
  471. '' 
  472. '' Added Thangaraj's fix to Pipeline Problem
  473. '' 
  474. ''    Rev 1.62   29 Dec 1994 10:31:08   tveerapp
  475. '' 
  476. '' Commented out the Restart processing (IDC_CONTINUE) in INSTALLCOMPLETECB.
  477. '' 
  478. ''    Rev 1.61   09 Dec 1994 14:38:38   cmoy
  479. '' No change.
  480. '' 
  481. ''    Rev 1.60   06 Dec 1994 09:48:00   cmoy
  482. '' No change.
  483. '' 
  484. ''    Rev 1.59   18 Nov 1994 16:12:56   amontalv
  485. '' Japan DBCS: Added some resources to
  486. '' 
  487. ''    Rev 1.58   14 Oct 1994 11:40:12   tveerapp
  488. '' Fixed spr#1022903. The fix is in SRVNODEOPTIONSCB.
  489. '' 
  490. ''    Rev 1.57   11 Oct 1994 15:21:20   tveerapp
  491. '' 
  492. '' Added check to see if the prod. was not deselected to account
  493. '' for the min. and max size in SIZEOFINSTALLCB. This fixes spr#
  494. '' 32162.
  495. '' 
  496. ''    Rev 1.56   30 Sep 1994 14:48:20   cmoy
  497. '' Added InvChar("(") to the list of invalid chars.
  498. '' 
  499. ''    Rev 1.55   27 Sep 1994 14:07:44   cmoy
  500. '' 
  501. '' Changed find window inside INSTALLCOMPLETECB to use resourced
  502. '' string SID_INST_WINDOW_TITLE
  503. '' the WndTitle field in install.lst must match this field for reboot
  504. '' and restart functionality to work properly.
  505. '' 
  506. ''    Rev 1.54   27 Sep 1994 13:06:22   cmoy
  507. '' 
  508. '' moved rebooting and restarting constants to toolkit.lss
  509. '' 
  510. ''    Rev 1.53   26 Sep 1994 16:30:00   cmoy
  511. '' 
  512. '' Added Constant UM_RESTARTWINDOWS=1528
  513. '' 
  514. ''    Rev 1.52   16 Sep 1994 11:53:34   tveerapp
  515. '' Changed ProgmanCB. failed% =1. This change should have been made with
  516. '' the previous change.
  517. '' 
  518. ''    Rev 1.51   15 Sep 1994 16:17:14   tveerapp
  519. '' Changed ProgmangroupCb to accept characters that can be allowed to create
  520. '' program groups. InvChar is now a list.
  521. '' 
  522. ''    Rev 1.50   25 Aug 1994 16:46:22   mzgripce
  523. '' Gray out the Change Path button for win and winsys dir 
  524. '' 
  525. ''    Rev 1.49   02 Aug 1994 16:46:52   mzgripce
  526. '' put a check for Lot_IsTheNodeOptionsAvailtoNode() bfore turning 
  527. '' the options on in NODENODEOPTIONSCB
  528. '' 
  529. ''    Rev 1.48   24 Jun 1994 11:30:08   thangv
  530. '' Reverted back to using the old value (fixedin lcb.c by james) of
  531. '' Lot_LCBGetItem(..LCBITEM_SELECTED) in SRVNODEOPTIONSCB. The change was in
  532. '' line 1991 and 1999 in the check for the Selection% variable.
  533. '' 
  534. ''    Rev 1.47   21 Jun 1994 13:00:18   thangv
  535. '' Added code(lines 2010 and 2011) to get the groups chapter$. This was not
  536. '' having the right chapter number(had only the options for the group).This
  537. '' should fix the tip not showing up.(spr# 30277).
  538. '' 
  539. ''    Rev 1.46   21 Jun 1994 10:41:20   thangv
  540. '' Added code to CHANGEPRODUCTDIRCB (981-985) to restore the original
  541. '' value of the path if the product group rejects the path in their
  542. '' PathCahnge function.
  543. '' 
  544. ''    Rev 1.45   20 Jun 1994 14:49:36   thangv
  545. '' Changed the value of Selection% being checked in line 1970,1978 in
  546. '' SRVNODEOPTIONSCB to fix spr#31525. Lot_LCBGetItem returns the present state
  547. '' and not after the checkbox has been refreshed.
  548. '' 
  549. ''    Rev 1.44   16 Jun 1994 10:16:42   thangv
  550. '' 
  551. '' Added code to ungrey IDC_TEXT4 andIDC_TEXT5 in SIZEOFINSTALLCB,
  552. '' lines 1249 and 1250 to fix the bug for organizer(product with only full
  553. '' install and lotusapp support).
  554. '' 
  555. ''    Rev 1.43   08 Jun 1994 17:19:26   thangv
  556. '' The NODENODEOPTIONSCB was not calling the pathchange function for
  557. '' the products. Added the Lot_CallOneProd... function in the callback.
  558. '' This fixes Amipro's problem.
  559. '' 
  560. ''    Rev 1.42   06 Jun 1994 14:09:04   cmoy
  561. '' In SetCustomInfo refreshed the drive space available box more often.
  562. '' 
  563. ''    Rev 1.41   05 Jun 1994 20:11:46   ptilton
  564. '' Added calls to update OracleHomeDir and NotesDataDir Symbols in copylist
  565. '' 
  566. ''    Rev 1.40   02 Jun 1994 12:49:04   thangv
  567. '' 
  568. '' Removed an extra , in line 1759.
  569. '' 
  570. ''    Rev 1.39   02 Jun 1994 12:43:38   thangv
  571. '' 
  572. '' Added TrimNetlotusapp code to NODELOTUSAPPCB.
  573. '' 
  574. ''    Rev 1.38   01 Jun 1994 16:54:36   mmeth
  575. '' Check The return code from change path, and don't bring down the
  576. '' dialog, if the calling function returns gBACK
  577. '' 
  578. ''    Rev 1.37   26 May 1994 17:14:12   thangv
  579. '' 
  580. '' Added a check to ungrey IDC_TEXT3 in SIZEOFINSTALLCB for a simple
  581. '' product (like organizer) that supports only full install.
  582. '' 
  583. ''    Rev 1.36   25 May 1994 14:32:46   cmoy
  584. '' 
  585. '' removed rebooting feature instead a msg is sent to install.c
  586. '' 
  587. ''    Rev 1.35   18 May 1994 14:56:34   tingmann
  588. '' add SetYieldActive calls around lcb handling
  589. '' 
  590. ''    Rev 1.34   09 May 1994 15:11:36   ddupre
  591. '' Moved RegisterCallback call inside while loop in Custom1cb subroutine. JG
  592. '' 
  593. ''    Rev 1.33   06 May 1994 14:17:56   mzgripce
  594. '' 
  595. '' change progmancb to work for server
  596. '' 
  597. ''    Rev 1.32   06 May 1994 08:32:38   ddupre
  598. '' Added Lot_LCBSetSel to the SRVNODEOPTIONSCB SUB to select the first lb item
  599. '' 
  600. ''    Rev 1.31   05 May 1994 15:42:50   thangv
  601. '' Fixed the problem with the size of installcb not putting
  602. '' the correct focus on the radio button.
  603. '' 
  604. ''    Rev 1.30   05 May 1994 15:35:22   mzgripce
  605. '' fixed spr #28876
  606. '' 
  607. ''    Rev 1.29   02 May 1994 13:55:26   mmeth
  608. '' Jame's fix for set focus
  609. '' 
  610. ''    Rev 1.27   26 Apr 1994 18:33:14   mzgripce
  611. '' fixed spr 28121
  612. '' 
  613. ''    Rev 1.26   15 Apr 1994 13:15:06   mmeth
  614. '' added space between notepad.exe and readme.txt
  615. '' 
  616. ''    Rev 1.25   13 Apr 1994 14:07:22   cmoy
  617. '' 
  618. '' Modified callbacks to unbold text.
  619. '' 
  620. ''    Rev 1.24   13 Apr 1994 12:40:20   thangv
  621. '' Removed the extra `character in line 2010.
  622. '' 
  623. ''    Rev 1.23   13 Apr 1994 09:24:02   cmoy
  624. '' Added AUTOEXECCB and INSTALLCOMPLETECB
  625. '' 
  626. ''    Rev 1.22   12 Apr 1994 16:51:10   thangv
  627. '' Changed SIZEOFINSTALLCB: Removed the truncation of lotusapp
  628. '' in the display.Now lotusapp will be displayed.(lines 1033,1034 old
  629. '' code.). Fixed the bug.
  630. '' 
  631. ''    Rev 1.21   31 Mar 1994 10:30:38   thangv
  632. '' 
  633. '' Size of Install Callback for a single product with no lotusapp
  634. '' was trying to validate lotusappdir. put the check to see if the
  635. '' product supported share. fixed it.
  636. '' 
  637. ''    Rev 1.20   28 Mar 1994 17:10:02   thangv
  638. '' 
  639. '' resourced Notepad.exe and readnet.txt to SID_NOTEPADEXE and
  640. '' SID_READNETTXT
  641. '' 
  642. ''    Rev 1.19   28 Mar 1994 15:39:46   mzgripce
  643. '' change SIZEOFINSTALLCB to not add lotusapp word to the lotusapp directory for
  644. '' server
  645. '' 
  646. ''    Rev 1.18   28 Mar 1994 14:29:08   mmeth
  647. '' Changes with Christopher, obsoleteing dialosg
  648. '' 
  649. ''    Rev 1.17   28 Mar 1994 10:01:12   mmeth
  650. '' Greying out Change Directory Boutton for Shared Components
  651. '' 
  652. ''    Rev 1.16   25 Mar 1994 14:14:12   mzgripce
  653. '' added getlotusappdircb
  654. '' 
  655. ''    Rev 1.15   15 Mar 1994 12:30:18   jbrodeur
  656. '' Fix Node Inst Error
  657. '' 
  658. ''    Rev 1.14   11 Mar 1994 17:07:26   thangv
  659. '' 
  660. '' Set the SYM_NETWORK symbol to gDISTRIBUTION and checked
  661. '' to incorporate this WELCOMECB
  662. '' 
  663. ''    Rev 1.13   08 Mar 1994 14:47:22   mmeth
  664. '' 
  665. '' Hide the path button in custom1cb
  666. '' 
  667. ''    Rev 1.12   08 Mar 1994 14:35:14   mzgripce
  668. '' move ResetWinWinsys... call out of single prod if in SIZEOFINSTALLCB
  669. '' 
  670. ''    Rev 1.11   08 Mar 1994 10:55:28   mmeth
  671. '' fixed the Welcome Box
  672. '' 
  673. ''    Rev 1.10   07 Mar 1994 18:08:38   cmoy
  674. '' Added DISTSIZEINSTALLCB callback
  675. '' 
  676. ''    Rev 1.9   07 Mar 1994 17:56:04   mzgripce
  677. '' make resetWinWinsys SUB public
  678. '' 
  679. ''    Rev 1.8   07 Mar 1994 15:31:12   mzgripce
  680. '' fixed NODENODEDEOPTIONSCB
  681. '' 
  682. ''    Rev 1.7   02 Mar 1994 09:18:14   mzgripce
  683. '' Fixed SRVNODEOPTIONSCB using Reg_ReSet... and counting for customize
  684. '' 
  685. ''    Rev 1.6   01 Mar 1994 11:29:46   mmeth
  686. '' Fixed misspelling in SYM_SMARTSUITE....
  687. '' 
  688. ''    Rev 1.5   01 Mar 1994 10:33:06   mmeth
  689. '' ELSE IF --> ELSEIF
  690. '' 
  691. ''    Rev 1.4   28 Feb 1994 17:21:10   cmoy
  692. '' Added DB_SIZEOFINSTALL6 & 7 for server and standard
  693. '' installs in Lot_GetSizeofInstall
  694. '' 
  695. ''    Rev 1.3   25 Feb 1994 18:37:12   mzgripce
  696. '' add Lot_SetSpaceDirTip(), SRVNODEOPTIONSCB AND NODENODEOPTIONSCB
  697. '' 
  698. ''    Rev 1.2   18 Feb 1994 13:29:52   mmeth
  699. '' 
  700. '' Now check for Listlength of Reg_GetDirSymbolList
  701. '' 
  702. ''    Rev 1.1   15 Feb 1994 15:01:50   mmeth
  703. '' added pvcs line for toolkit.lss &
  704. '' 
  705. ''    Rev 1.0   11 Feb 1994 10:56:22   jbrodeur
  706. '' Initial Revision
  707. ''----------------------------------------------------------------------
  708. ''   Date     Vers. Pgmr  SPR#  Change
  709. ''----------------------------------------------------------------------
  710. '' 02-04-94   0018  MMETH      changed characters allowed in progrmangroup
  711. '' 02-04-94   0017  MMETH      SIZEOFINSTALLCB now support distribtuin dialog also
  712. ''!
  713. '' 02-01-94   0016  MZ         Added PROGMANGROUPCB
  714. '' 02-02-94   0015  MMETH      added NODELOTUSAPP stuff
  715. '' 01-24-94   0014  TQI        Capture all function returns (lsi36)
  716. '' 01-21-94   0013  DND         Custom2 shows the tips in normal text.
  717. '' 01-21-94   0012  MZ          Add SRV_SUCCESSCB
  718. '' 01-21-94   0011  MMETH       Added gNext parm to Lot_Call1Product
  719. '' 01-21-94   0010  DND         The path change dialogs now work correctly
  720. ''                              for server.
  721. '' 01-20-94   0009  DND         SIZEOFINSTALL should work for SmartSuite.
  722. ''                              Call the PathChange callbacks
  723. '' 01-19-94   0008  DND         Finish SINGLESIZEOFINSTALLCB. Added
  724. ''                              Lot_GetSizeOfInstall
  725. '' 01-19-94   0007  MMeth       Move SYM_UPDATELIST$ abd SYM_NORMALFONT
  726. '' 01-13-94   0006  DND         Add ability to change the currently shown
  727. ''                              path. Removed CHNGPATHBASE, PROGRAMPATHCB,
  728. ''                              Lot_DetectVersionPriorToDarwinA,
  729. ''                              PathChange123A, Lot_CheckProductDirs.
  730. '' 01-12-94   0005  DND         The custom dialogs now show the path
  731. ''                              based on what LCB item is selected.
  732. ''                              IN PROCESS
  733. '' 01-12-94   0004  MMETH       Changed Return code of CallProd to string
  734. '' 01-12-94   0003  MMETH       Commented out call to PathChang123A
  735. '' 01-11-94   0002  TQI         Option declare
  736. '' 01-10-94   0001  MZ          Make all symbols Constants and put them
  737. ''                              in GLOBALS.LSS
  738. '' 01-05-94   0000  DND         Initial checkin
  739. ''----------------------------------------------------------------------
  740. ''
  741. ''**********************************************************************
  742.  
  743. USE "AUTOMATE"
  744. OPTION DECLARE
  745.  
  746. '** Constants ----------------------------------------------------------
  747.  
  748.  
  749. CONST MAX_PAGES          = 9     '** Match LT_MAXPAGES from notebook.h
  750. CONST LCBITEM_ENTIRE     = 0
  751. CONST LCBITEM_SELECTED   = 1
  752. CONST LCBITEM_TEXT       = 2
  753. CONST LCBITEM_SIZE       = 3
  754. CONST LCBITEM_CHAPTER    = 4
  755.  
  756. CONST SYM_CUSTOMCOST$    = "CustomCostList"  '** Use only in this module
  757.  
  758. CONST UM_SETBITMAP       = WM_USER+100
  759.  
  760. '** Module globals -----------------------------------------------------
  761.  
  762. '** Structure to contain static information of a page (Custom)
  763. TYPE PAGEINFO
  764.    szChapter AS STRING     '** Chapter that started the page
  765.    idPage    AS INTEGER    '** Page ID
  766.    hDlgPage  AS LONG       '** Page dialog handle
  767.    nSel      AS INTEGER    '** Current Selection in page
  768. END TYPE
  769.  
  770. '** These module globals are used for CUSTOM1 and CUSTOM2
  771. DIM ghdlg&                             '** Save the parent dialog
  772. DIM gCurrentPageIndex%                 '** The current page index (into array)
  773. DIM gNumPages%                         '** Number of pages in gPageArray
  774. DIM gPageArray(MAX_PAGES) AS PAGEINFO  '** Page info for up to 8 pages
  775. '** Folder
  776. DIM gEntered$
  777. '** Focus problems
  778. DIM gPrevInst%
  779.  
  780. '** Declares -----------------------------------------------------------
  781.  
  782. DECLARE PUBLIC FUNCTION Lot_ConfirmNamesDlg  () AS STRING
  783. DECLARE PUBLIC FUNCTION Lot_GetSizeOfInstall () AS STRING
  784. DECLARE PUBLIC SUB      ResetWinWinsysSymbols()
  785. DECLARE PUBLIC FUNCTION Lot_SharedWindowsDlg (Id%) AS STRING
  786.  
  787. DECLARE SUB      SetCustomInfo(fOnTab%,fNewSpace%,fUpdateAll%)
  788. DECLARE FUNCTION DoesFileExistInDir (dirlist$) AS INTEGER
  789. DECLARE SUB      Lot_SetSpaceDirTip(hDlg&,chpt$,index%,ProdNum%,tiponly%)
  790.  
  791. '*************************************************************************
  792. '************************* Public Functions ******************************
  793. '*************************************************************************
  794.  
  795. '*************************************************************************
  796. '** PUBLIC FUNCTION Lot_ConfirmNamesDlg () AS STRING
  797. '** Purpose:   This function puts up the DB_CONFIRMNAME dlg box.
  798. '**     
  799. '**     
  800. '** Author:
  801. '** Arguments:
  802. '**     
  803. '** Returns:
  804. '**     
  805. '*************************************************************************
  806.  
  807. PUBLIC FUNCTION Lot_ConfirmNamesDlg () AS STRING
  808.  
  809.    AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT3)
  810.    AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT4)
  811.    AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  812.     
  813.    SetListItem "IDC_TEXT", 1, GetSymbolValue(SYM_NAME$)
  814.    SetListItem "IDC_TEXT", 2, GetSymbolValue(SYM_COMPANY$)
  815.  
  816.    Lot_ConfirmNamesDlg = PopupModalDlg (DB_CONFIRMNAMES, DB_CONFIRMNAMES)
  817.  
  818. END FUNCTION
  819.  
  820. '*************************************************************************
  821. '** PUBLIC FUNCTION Lot_GetSizeOfInstall () AS STRING
  822. '** Purpose:   Bring up the appropriate size dialog. When this dialog
  823. '**            comes in, all products are set to the value in
  824. '**            SYM_SIZEOFINSTALL$. Before leaving all products are
  825. '**            set again to the value in SYM_SIZEOFINSTALL$
  826. '**     
  827. '** Author: DND
  828. '** Arguments:
  829. '** Symbols:   SYM_SIZEOFINSTALL$ - The default install type. Reset
  830. '**                                 to the selected when done.
  831. '**     
  832. '** Returns: Value from PopupModalDlg
  833. '**     
  834. '*************************************************************************
  835. PUBLIC FUNCTION Lot_GetSizeOfInstall () AS STRING
  836.  
  837.    DIM   IdDlg%, i%, nProds%, network$, size$, notused%, NumDirs%
  838.  
  839.    '** Set all the applications to start with the default
  840.    size$   = GetSymbolValue(SYM_SIZEOFINSTALL$)
  841.    nProds% = Reg_GetNumberOfProducts()
  842.    FOR i% = 1 to nProds%
  843.       Reg_SetSelectedInstallType i%, size$
  844.    NEXT
  845.  
  846.    '** Bring up the size of install dialog
  847.    network$ = GetSymbolValue(SYM_NETWORK$)
  848.  
  849.    NumDirs% = Reg_GetProdSupportForExtraProdDirs(1)
  850.  
  851.  IF NumDirs < 1 Then
  852.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  853.       '** Check for the case where the product only does full install
  854.       IF Reg_GetProdSupportForFullInstall(1) <> FALSE AND _
  855.      Reg_GetProdSupportForMinInstall (1) =  FALSE AND _
  856.      Reg_GetProdSupportForCustInstall(1) =  FALSE THEN
  857.      '** This product only allows full install. If server then
  858.      '** Ask for two paths. If not, then ask for one.
  859.      IF network$ = gSERVER$ THEN
  860.     IF Reg_GetProdSupportForShare32(1) <> FALSE Then
  861.        IdDlg% = DB_SIZEOFINSTALL2
  862.     ELSE
  863.        IdDlg% = DB_SIZEOFINSTALL1
  864.     END IF
  865.  
  866.      ELSE
  867.     IdDlg% = DB_SIZEOFINSTALL1
  868.      END IF
  869.       ELSEIF network$ = gSERVER$ THEN
  870.  
  871.      '** For server, only Full and Custom are allowed. Both the
  872.      '** main path and lotusapp are asked for
  873.      IF Reg_GetProdSupportForShare32(1) <> FALSE Then
  874.     IdDlg% = DB_SIZEOFINSTALL3
  875.      ELSE
  876.     IdDlg% = DB_SIZEOFINSTALL5
  877.      END IF
  878.  
  879.       ELSE
  880.  
  881.      '** Use the dialog with three choices and choices are grayed.
  882.      '** Only the main path is asked for.
  883.      IdDlg% = DB_SIZEOFINSTALL4
  884.  
  885.       END IF
  886.  
  887.     '** SmartSuite
  888.    ELSEIF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  889.  
  890.     IF network$ = gSERVER$ THEN
  891.         IdDlg% = DB_SIZEOFINSTALL6 '** server
  892.     ELSE
  893.         IdDlg% = DB_SIZEOFINSTALL7 '** standard or node
  894.     END IF
  895.  
  896.     ELSE
  897.       '** TEMPORARY ???MMETH
  898.       IdDlg% = DB_SIZEOFINSTALL4
  899.  
  900.    END IF
  901.  
  902.  ELSE
  903.  
  904.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  905.  
  906.       '** Check for the case where the product only does full install
  907.       IF Reg_GetProdSupportForFullInstall(1) <> FALSE AND _
  908.      Reg_GetProdSupportForMinInstall (1) =  FALSE AND _
  909.      Reg_GetProdSupportForCustInstall(1) =  FALSE THEN
  910.  
  911.      '** This product only allows full install. If server then
  912.      '** Ask for two paths. If not, then ask for one.
  913.  
  914.      IF network$ = gSERVER$ THEN
  915.     IF Reg_GetProdSupportForShare32(1) <> FALSE Then
  916.        IdDlg% = DB_SIZEOFINSTALL9
  917.     ELSE
  918.        IdDlg% = DB_SIZEOFINSTALL8
  919.     END IF
  920.      ELSE
  921.     IdDlg% = DB_SIZEOFINSTALL8
  922.      END IF
  923.  
  924.       ELSEIF network$ = gSERVER$ THEN
  925.  
  926.      '** For server, only Full and Custom are allowed. Both the
  927.      '** main path and lotusapp are asked for
  928.      IF Reg_GetProdSupportForShare32(1) <> FALSE Then
  929.     IdDlg% = DB_SIZEOFINSTALL10
  930.      ELSE
  931.     IdDlg% = DB_SIZEOFINSTALL12
  932.      END IF
  933.  
  934.       ELSE
  935.  
  936.      '** Use the dialog with three choices and choices are grayed.
  937.      '** Only the main path is asked for.
  938.      IdDlg% = DB_SIZEOFINSTALL11
  939.  
  940.       END IF
  941.  
  942.     '** SmartSuite
  943.    ELSEIF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  944.     IF network$ = gSERVER$ THEN
  945.         IdDlg% = DB_SIZEOFINSTALL6 '** server
  946.     ELSE
  947.         IdDlg% = DB_SIZEOFINSTALL7 '** standard or node
  948.     END IF
  949.  
  950.     ELSE
  951.       '** TEMPORARY ???MMETH
  952.       IdDlg% = DB_SIZEOFINSTALL11
  953.      END IF
  954.  
  955.  END IF
  956.  
  957.    '** Ask the user for the selected size
  958.    notused% = RegisterCallback("CALLBACK", "SIZEOFINSTALLCB")
  959.    Lot_GetSizeOfInstall = PopupModalDlg (IdDlg%, CLNG(IdDlg%))
  960.  
  961.    '** Reset all the sizes
  962.    size$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  963.    FOR i% = 1 to nProds%
  964.       Reg_SetSelectedInstallType i%, size$
  965.    NEXT
  966.  
  967. END FUNCTION
  968.  
  969. '*************************************************************************
  970. '** PUBLIC FUNCTION GetGroupName () AS STRING
  971. '** Purpose:   Get the group name from the dialog and verify it.
  972. '**     
  973. '** Author: 
  974. '** Arguments:
  975. '**             fDisplayErr%            - TRUE if the error needs to be displayed.
  976. '** Symbols:   
  977. '**     
  978. '** Returns: Program Group Name
  979. '**     
  980. '*************************************************************************
  981. FUNCTION GetGroupName () AS STRING
  982.     DIM count%, charlen%, failed%, inloopset%
  983.     DIM CheckName$, targetstr$, EnteredName$
  984.  
  985.    DIM InvChar LIST AS STRING
  986.    
  987.    IF LENBP(GetListItem ("IDC_EDIT", 1)) < 254 THEN
  988.         EnteredName$=GetListItem("IDC_EDIT",1)
  989.    ELSE
  990.         targetstr$ = GetListItem ("IDC_EDIT", 1)
  991.  
  992.         IF IsDBCSFirstAtOffset (targetstr$, 254) = 1 THEN
  993.         EnteredName$=LEFTBP(GetListItem ("IDC_EDIT", 1), 253)
  994.         ELSE
  995.         EnteredName$=LEFTBP(GetListItem ("IDC_EDIT", 1), 254)
  996.         END IF
  997.     END IF
  998.  
  999.     IF EnteredName$ = "" AND NOT IsNewShell() THEN
  1000.        EnteredName$=Reg_GetProgManagerGroupName(1)
  1001.     END IF
  1002.  
  1003.     
  1004.    InvChar("\") = "1"
  1005.    InvChar("/") = "1"
  1006.    InvChar("<") = "1"
  1007.    InvChar(">") = "1"
  1008.    InvChar("*") = "1"
  1009.    InvChar("?") = "1"
  1010.    InvChar(|"|) = "1"
  1011.    InvChar("|") = "1"
  1012.    InvChar(":") = "1"
  1013.  
  1014.    failed% = 0
  1015.  
  1016.    IF IsNewShell() THEN
  1017.       ' Look for invalid char.  Fail if any are invalid
  1018.  
  1019.       CheckName$ = EnteredName$  
  1020.       FOR count% = 1 TO LEN(EnteredName$)
  1021. '                       charlen% = FDBCSCharLen(CheckName$,0)
  1022.             IF ISELEMENT(InvChar(LEFT$(CheckName$,1))) = TRUE THEN
  1023.             failed% = 1
  1024.             EXIT FOR
  1025.             END IF 
  1026. '                       count% = count% + charlen% - 1
  1027.             CheckName$ = RIGHT$(Checkname$,LEN(CheckName$)-1)
  1028.       NEXT
  1029.  
  1030.       InvChar(" ") = "1"
  1031.    END IF
  1032.  
  1033.    IF NOT IsNewShell() THEN
  1034.      InvChar("+") = "1"
  1035.      InvChar("=") = "1"
  1036.      InvChar("[") = "1"
  1037.      InvChar("]") = "1"
  1038.      InvChar(";") = "1"
  1039.      InvChar(",") = "1"
  1040.      InvChar(")") = "1"
  1041.      InvChar("(") = "1"
  1042.      InvChar(".") = "1"  '* MMETH; I believe that this is a valid character
  1043.  
  1044.      'TV: These are also invalid characters.
  1045.      InvChar("'") = "1" 
  1046.      InvChar("@") = "1" 
  1047.      InvChar("{") = "1" 
  1048.      InvChar("}") = "1" 
  1049.      InvChar("#") = "1" 
  1050.      InvChar("%") = "1" 
  1051.      InvChar("!") = "1" 
  1052.      InvChar("`") = "1" 
  1053.      InvChar("$") = "1" 
  1054.      InvChar("^") = "1" 
  1055.      InvChar("~") = "1" 
  1056.      InvChar("-") = "1" 
  1057.      InvChar("_") = "1" 
  1058.      InvChar("&") = "1" 
  1059.    END IF
  1060.  
  1061.    IF failed% = 0 THEN
  1062.       failed% = 1
  1063.  
  1064.       ' Validate the name if it is a new one
  1065.       ' The ilegal characters in the name are:
  1066.       ' * + | : " < > ? + { } \ ; ,  /  MMETH removed the period
  1067.       ' if the path consists only of " then the group name will be )]
  1068.       ' if the path consists only of ) or ] or , the group is not created
  1069.  
  1070.       '** TV: Reject only if the group name consists entirely of Invalid 
  1071.       '**characters
  1072.       CheckName$ = EnteredName$  
  1073.       FOR count% = 1 TO LEN(EnteredName$)
  1074. '        charlen% = FDBCSCharLen(CheckName$,0)
  1075.      IF ISELEMENT(InvChar(LEFT$(CheckName$,1))) = FALSE THEN
  1076.         failed% = 0
  1077.         EXIT FOR
  1078.      END IF 
  1079. '        count% = count% + charlen% - 1
  1080.      CheckName$ = RIGHT$(Checkname$,LEN(CheckName$)-1)
  1081.       NEXT
  1082.    END IF
  1083.  
  1084.    '*** TV: The " character cannot be permitted.
  1085.    '** This breaks the script execution later!!
  1086.    IF INSTR(1,EnteredName$,|"|) <> 0 THEN
  1087.       failed% = 1
  1088.    END IF 
  1089.  
  1090.  
  1091.  IF IsNewShell() THEN
  1092.    IF failed% <> 0 THEN
  1093.       ShowPathErrorNoDlgExit SID_ERR_INVALIDFOLDERNAME,SID_ERR_INVALIDFOLDERNAMEDESC95,EnteredName$
  1094.       GetGroupName = ""
  1095.    ELSE
  1096.       GetGroupName = EnteredName$
  1097.    END IF
  1098.  ELSE   
  1099.    IF failed% <> 0 THEN
  1100.        ShowPathErrorNoDlgExit SID_ERR_INVALIDGROUPNAME,SID_ERR_INVALIDGROUPNAMEDESC,EnteredName$
  1101.       GetGroupName = ""
  1102.    ELSE
  1103.       GetGroupName = EnteredName$
  1104.    END IF
  1105.  END IF
  1106.  
  1107. END FUNCTION
  1108.  
  1109. PUBLIC CONST WM_NEXTDLGCTL = 40 ' 0x0028
  1110.  
  1111. '*************************************************************************
  1112. '************************* Callbacks *************************************
  1113. '*************************************************************************
  1114. '*************************************************************************
  1115. '** PROGMANGROUPCB
  1116. '** Purpose:    This is a for the Program Group selection
  1117. '** IN SYMBOLS  
  1118. '**     
  1119. '** Author:
  1120. '** Arguments:
  1121. '**     
  1122. '**     
  1123. '** Returns:
  1124. '**     
  1125. '*************************************************************************
  1126. SUB PROGMANGROUPCB (hDlg&, CtrlId%, Classes$, LInst&)
  1127.    DIM ProgManIni$, Group$, GroupId%, Index%,notused%,DefaultGroup$
  1128.    DIM EnteredName$,order%,RootFolder$
  1129.    DIM Inst%
  1130.  
  1131.    ' *** script port to win32
  1132.    Inst% = CINT(LInst&) 
  1133.  
  1134.    SELECT CASE Classes$
  1135.  
  1136.    CASE "__DLGINIT"
  1137.  
  1138.     AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  1139.     AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  1140.  
  1141.     IF NOT IsNewShell() THEN
  1142.     ProgManIni$=GetWindowsDir()+"progman.ini"
  1143.     END IF
  1144.     DefaultGroup$=Reg_GetProgManagerGroupName(1)
  1145.     IF DefaultGroup$="" THEN
  1146.        DefaultGroup$=LdString(SID_TKT_DEF_PROGMANGRP)
  1147.     END IF
  1148.  
  1149.     SetListItem "IDC_EDIT", 1, DefaultGroup$
  1150.     IF IsNewShell() THEN
  1151.     SetListItem "IDC_TREE",1, Reg_GetSelectedFolder(1)
  1152.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1153.     AddListItem SYM_UPDATELIST$, "IDC_TREE"
  1154.     AddListItem SYM_UPDATELIST$, "IDC_B1"
  1155.     AddListItem SYM_UPDATELIST$, "IDC_B2"
  1156.     AddListItem SYM_UPDATELIST$, "IDC_B3"
  1157.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B1), TRUE))
  1158.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B2), FALSE))
  1159.     ELSE
  1160.     if (GetListLength("IDC_LIST1") > 1) THEN
  1161.         RemoveSymbol("IDC_LIST1")
  1162.     END IF
  1163.     SetListItem "IDC_LIST1",1, DefaultGroup$
  1164.     notused% = CInt(FAddProgramGroupsToList(HKEY_LOCAL_MACHINE&, gPROGMANREGNAME, "IDC_LIST1", DefaultGroup$))
  1165.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1166.     AddListItem SYM_UPDATELIST$, "IDC_LIST1"
  1167.     END IF
  1168.  
  1169.    CASE "IDC_EDIT"
  1170.     IF IsNewShell() THEN
  1171.         IF GetFocus() = GetDlgItem(hDlg, IDC_EDIT1) THEN
  1172.             EnteredName$ = GetGroupName()
  1173.             IF EnteredName$ = "" THEN
  1174.                 notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B1), FALSE))
  1175.                 notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1176.                 SetFocus(GetDlgItem(hDlg&,IDC_EDIT1))
  1177.             ELSE
  1178.                 notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B1), TRUE))
  1179.                 notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1180.                 gEntered$=GetListItem("IDC_EDIT",1)
  1181.                 notused%=FChangeNameCurrTreeItem(hDlg&, gEntered$)
  1182.                 Reg_SetProgManagerGroup 1,gEntered
  1183.             END IF
  1184.       END IF
  1185.     END IF
  1186.  
  1187.    CASE "IDC_TREE"
  1188.         EnteredName$=GetGroupName()
  1189.         IF EnteredName$ = "" THEN
  1190.           SetListItem "__LASTSTATUS", 1, "Q"
  1191.             SetFocus(GetDlgItem(hDlg&,IDC_EDIT1))
  1192.             EXIT SUB
  1193.         END IF
  1194.  
  1195.    DISPLAYTEXT:
  1196.     EnteredName$ = GetListItem("IDC_TREE", 1)
  1197.     Reg_SetSelectedFolder 1,EnteredName$
  1198.         IF DoesDirExist (Reg_GetSelectedFolder(1)) THEN
  1199.             notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), FALSE))
  1200.             notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B2), FALSE))
  1201.     ELSE
  1202.             notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), TRUE))
  1203.             notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B2), TRUE))
  1204.     END IF
  1205.     RootFolder = Reg_GetRootFolder()
  1206.     order% = 1
  1207.     DO
  1208.     Index% = order%
  1209.     order% = InStr(Index%+1,RootFolder,"\")
  1210.     LOOP UNTIL order% = 0
  1211.     Group$ = RIGHT$(EnteredName$,LEN(EnteredName$)-Index%)
  1212.     SetListItem "IDC_TEXT",3,Group$
  1213.     AddListItem SYM_UPDATELIST$, "IDC_TEXT3"
  1214.         gEntered = GetLastPathComponent(Group$)
  1215.     SetListItem "IDC_EDIT", 1, gEntered
  1216.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1217.  
  1218.    CASE "IDC_LIST1"
  1219.     EnteredName$=GetListItem("IDC_LIST1",Inst%)
  1220.     SetListItem "IDC_EDIT", 1, EnteredName$
  1221.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1222.  
  1223.    CASE "IDC_B"
  1224.     IF CtrlId% = cIDC_B1 THEN
  1225.         IF GetSymbolValue("USEDEFAULTGRP")<>"" THEN
  1226.             EnteredName$=Reg_GetProgManagerGroupName(1)
  1227.             IF EnteredName$="" THEN
  1228.          EnteredName$=LdString(SID_TKT_DEF_PROGMANGRP)
  1229.             END IF
  1230.             RemoveSymbol("USEDEFAULTGRP")
  1231.          ELSE
  1232.             EnteredName$=LdString(SID_TKT_DEF_NEWFOLDERNAME)
  1233.         END IF
  1234.       Group$ = GetListItem("IDC_TREE", 1)+"\"+EnteredName$
  1235.       IF LENBP(Group$) > (MAX_DIR_PATH - 11) THEN
  1236.         '** This is only about the path length and might need a new message
  1237.             ErrorMsg SID_ERR_PATHLEN, ""
  1238.       ELSE
  1239.            Index% = 0
  1240.             DO WHILE DoesDirExist (Group$)
  1241.                Index% = Index%+1
  1242.               Group$ = GetListItem("IDC_TREE", 1)+"\"+EnteredName$+"("+CSTR(Index%)+")"
  1243.             LOOP
  1244.             If Index% > 0 Then
  1245.                 EnteredName$ = EnteredName$+"("+CSTR(Index%)+")"
  1246.             End If
  1247.             Reg_SetProgManagerGroup 1,EnteredName$
  1248.             notused% = FAddItemToTree(hDlg&, EnteredName$)
  1249.             SetFocus(GetDlgItem(hDlg&,IDC_EDIT1))
  1250. 'JMD: LSCR32FVVK: Change focus off and back will highlight selection
  1251.             notused% = SendMessage (hDlg&,WM_NEXTDLGCTL, 1, 0)
  1252.             notused% = SendMessage (hDlg&,WM_NEXTDLGCTL, 0, 0)
  1253.         END IF
  1254.     ELSEIF CtrlId% = cIDC_B1+1 THEN
  1255.         notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B1), TRUE))
  1256.         notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1257.         notused%=FDeleteCurrTreeItem(hDlg&)
  1258.         IF DoesDirExist(GetListItem("IDC_TREE",1)) THEN
  1259.             SetFocus(GetDlgItem(hDlg&,IDC_B1))
  1260.         END IF
  1261.     ELSE
  1262.         Inst% = 1
  1263.         GOTO DISPLAYTEXT
  1264.    END IF
  1265.  
  1266.    CASE "IDC_OK"
  1267.     IF IsNewShell() THEN
  1268.         Reg_SetSelectedFolder 1,GetListItem("IDC_TREE", 1)
  1269.     ELSE
  1270.     Reg_SetProgManagerGroup 1,GetGroupName()
  1271.     END IF
  1272.  
  1273.    CASE "IDC_BACK"
  1274.    CASE "IDC_CITHELP"
  1275.    CASE "IDC_EXIT"
  1276.  
  1277.    END SELECT   
  1278.  
  1279. END SUB
  1280.  
  1281. '*************************************************************************
  1282. '** WELCOMECB
  1283. '** Purpose:    This is a for the Welcome Dialog Boxes
  1284. '**             there are two distinct types of dialogs:
  1285. '**             A STANDARD/SERVER dialog vs a NODE dialog.
  1286. '**
  1287. '** IN SYMBOLS  NAME, COMPANY, NETWORK  
  1288. '**     
  1289. '** Author:
  1290. '** Arguments:
  1291. '**     
  1292. '**     
  1293. '** Returns:
  1294. '**     
  1295. '*************************************************************************
  1296. SUB WELCOMECB (hDlg&, CtrlId%, Classes$, LInst&)
  1297.    DIM lname$, company$, network$, i%, notused%
  1298.    DIM sz$
  1299.  
  1300.    ' Changes from Japan for DBCS        
  1301.    DIM targetstr$, Inst%
  1302.  
  1303.    Inst% = CINT(LInst&)
  1304.    ' End: Changes from Japan for DBCS   
  1305.  
  1306.    SELECT CASE Classes$
  1307.  
  1308.    CASE "__DLGINIT"
  1309.  
  1310.       '** Set the product bitmap
  1311.       SetListItem "IDC_BMP", 1, STR$(IDD_TKT_PROD_BMP)
  1312.  
  1313.       lname$   = GetSymbolValue(SYM_NAME$)
  1314.       company$ = GetSymbolValue(SYM_COMPANY$)
  1315.       SetListItem "IDC_EDIT", 1, lname$
  1316.       SetListItem "IDC_EDIT", 2, company$
  1317.  
  1318.       '** Set text to normal font
  1319.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT4)
  1320.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT5)
  1321.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT6)
  1322.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT7)
  1323.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT8)
  1324.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  1325.       AddListItem SYM_UPDATELIST$, "IDC_BMP1"
  1326.       AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1327.       AddListItem SYM_UPDATELIST$, "IDC_EDIT2"
  1328.  
  1329.       network$ = GetSymbolValue(SYM_NETWORK$)
  1330.       IF network$ = "" THEN
  1331.      SetSymbolValue SYM_NETWORK$, gSTANDARD$
  1332.       ELSEIF network$ = gNODE$ Then
  1333.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT2), FALSE))
  1334.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_TEXT3), FALSE))
  1335.       ELSEIF network$ = gSERVER$ OR network$ = gDISTRIBUTION$ THEN
  1336.      SetListItem "IDC_B", 1, "T"
  1337.      AddListItem SYM_UPDATELIST$, "IDC_B1"
  1338.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), FALSE))
  1339.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_TEXT2), FALSE))
  1340.       END IF
  1341.  
  1342.       '** if userName OR companyName is empty inctivate the next button
  1343.       IF network$ = gSTANDARD$ THEN
  1344.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 OR _ 
  1345.     LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1346.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1347.      ELSE
  1348.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1349.      END IF
  1350.  
  1351.       ELSEIF network$ = gNODE$ THEN
  1352.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 THEN
  1353.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1354.      ELSE
  1355.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1356.      END IF
  1357.  
  1358.       ELSEIF network$ = gSERVER$ THEN
  1359.      IF LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1360.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1361.      ELSE
  1362.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1363.      END IF
  1364.  
  1365.       ELSE
  1366.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1367.       END IF
  1368.  
  1369.    CASE "IDC_B"
  1370.  
  1371.       If GetListItem("IDC_B",1) = "F" Then
  1372.      SetSymbolValue SYM_NETWORK$, gSTANDARD$
  1373.       Else
  1374.      '*** if both Srv and Dist are supported then Srv overrides
  1375.      If Reg_GetProdSupportForSrv(1) = 1 Then
  1376.     SetSymbolValue SYM_NETWORK$, gSERVER$
  1377.      ElseIf Reg_GetProdSupportForDist(1) = 1 Then
  1378.     SetSymbolValue SYM_NETWORK$, gDISTRIBUTION$
  1379.      End If 
  1380.       End If
  1381.  
  1382.       '** If Server checkbox is selected, grey out the User name. 
  1383.       IF IsDlgButtonChecked(hDlg&,IDC_B1) <> FALSE THEN
  1384.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), FALSE))
  1385.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_TEXT2), FALSE))
  1386.       ELSE
  1387.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), TRUE))
  1388.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_TEXT2), TRUE))
  1389.       END IF
  1390.  
  1391.       network$ = GetSymbolValue(SYM_NETWORK$)
  1392.       IF network$ = gSTANDARD$ THEN
  1393.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 OR _ 
  1394.     LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1395.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1396.      ELSE
  1397.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1398.      END IF
  1399.  
  1400.       ELSEIF network$ = gNODE$ THEN
  1401.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 THEN
  1402.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1403.      ELSE
  1404.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1405.      END IF
  1406.  
  1407.       ELSEIF network$ = gSERVER$ THEN
  1408.      IF LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1409.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1410.      ELSE
  1411.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1412.      END IF
  1413.  
  1414.       ELSE
  1415.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1416.       END IF
  1417.  
  1418.    CASE "IDC_EDIT"
  1419.  
  1420.       network$ = GetSymbolValue(SYM_NETWORK$)
  1421.       IF network$ = gSTANDARD$ THEN
  1422.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 OR _ 
  1423.     LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1424.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1425.      ELSE
  1426.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1427.      END IF
  1428.  
  1429.       ELSEIF network$ = gNODE$ THEN
  1430.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 THEN
  1431.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1432.      ELSE
  1433.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1434.      END IF
  1435.  
  1436.       ELSEIF network$ = gSERVER$ THEN
  1437.      IF LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1438.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1439.      ELSE
  1440.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1441.      END IF
  1442.  
  1443.       ELSE
  1444.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1445.       END IF
  1446.  
  1447.    CASE "IDC_OK"
  1448.       network$ = GetSymbolValue(SYM_NETWORK$)
  1449.       FOR i% = 1 TO 2
  1450.      IF network$ = gNODE$ AND i% = 2 THEN
  1451.     Exit For
  1452.      END IF
  1453.      IF network$ = gSERVER$ AND i% = 1 THEN
  1454.     GOTO NEXTFIELD
  1455.      END IF
  1456.  
  1457.      IF LEN(GetListItem ("IDC_EDIT", i%)) < 1 THEN
  1458.     ErrorMsgNoDlgExit SID_TKT_ERR_NEEDNAMES, ""
  1459.     EXIT FOR
  1460.       END IF
  1461.  
  1462.      NEXTFIELD:
  1463.  
  1464.       NEXT
  1465.  
  1466.      ' Changes from Japan for DBCS  
  1467.      ' This code is intimately related to code in
  1468.      ' callback.lss:Lot_ReadDefaultsfromRi &
  1469.      ' lcomstf\userreg.cpp:ReadDefaultsfromRi
  1470.      IF LENBP(GetListItem ("IDC_EDIT", 1)) < 80 THEN
  1471.      SetSymbolValue SYM_NAME$,    GetListItem ("IDC_EDIT", 1)
  1472.      ELSE
  1473.      targetstr$ = GetListItem ("IDC_EDIT", 1)
  1474.      IF IsDBCSFirstAtOffset (targetstr$, 80) = 1 THEN
  1475.         SetSymbolValue SYM_NAME$,    LEFTBP(GetListItem ("IDC_EDIT", 1), 79)
  1476.      ELSE
  1477.         SetSymbolValue SYM_NAME$,    LEFTBP(GetListItem ("IDC_EDIT", 1), 80)
  1478.      END IF
  1479.      END IF
  1480.  
  1481.      IF LENBP(GetListItem ("IDC_EDIT", 2)) < 80 THEN
  1482.      SetSymbolValue SYM_COMPANY$, GetListItem ("IDC_EDIT", 2)
  1483.      ELSE
  1484.      targetstr$ = GetListItem ("IDC_EDIT", 2)
  1485.      IF IsDBCSFirstAtOffset (targetstr$, 80) = 1 THEN
  1486.        SetSymbolValue SYM_COMPANY$,    LEFTBP(GetListItem ("IDC_EDIT", 2), 79)
  1487.      ELSE
  1488.        SetSymbolValue SYM_COMPANY$,    LEFTBP(GetListItem ("IDC_EDIT", 2), 80)
  1489.      END IF
  1490.      END IF
  1491.      ' End: Changes from Japan for DBCS     
  1492.  
  1493.    '** Allow the user to exit without hitting the button
  1494.    Case "IDC_BACK"
  1495.       sz$ = PopupModalDlg (DB_EXITHISTORY, DB_EXITHISTORY)
  1496.       If sz$ = "BACK" Then
  1497.       SetListItem "__LASTSTATUS", 1, "Q"
  1498.    End If
  1499.  
  1500.    END SELECT   
  1501.  
  1502. END SUB
  1503.  
  1504. '************************************************************************
  1505. '*                   Routines to handle Custom                          *
  1506. '************************************************************************
  1507.  
  1508. '*************************************************************************
  1509. '** SUB CUSTOM1CB (hDlg&, CtrlId%, Classes$, LInst&)
  1510. '**
  1511. '** Purpose: Customize a product. This is main dialog proc. Each dialog
  1512. '**          page uses CUSTOM2CB.
  1513. '**
  1514. '**          This dialog callback can be used only once! Do not display
  1515. '**          more than one dialog at a time with this callback!
  1516. '**            
  1517. '** Author:    DND
  1518. '** Arguments: Callback args
  1519. '** Returns:   NONE
  1520. '*************************************************************************
  1521.  
  1522. SUB CUSTOM1CB (hDlg&, CtrlId%, Classes$, LInst&)
  1523.  
  1524.    DIM chpt$, product_name$, child$, dirsym$, network$
  1525.    DIM page%, tab_handle&
  1526.    DIM RC$, i%, notused%, Inst%, unused&
  1527.  
  1528.    Inst% = CINT(LInst&)
  1529.  
  1530.    SELECT CASE Classes$
  1531.  
  1532.    case "__DLGINIT"
  1533.  
  1534.       '** Set some globals
  1535.       gNumPages% = 0
  1536.       ghdlg& = hDlg&
  1537.  
  1538.       ''Display bmps with transparent background
  1539.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "STRETCH"
  1540.  
  1541.       '** make text normal
  1542.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT6)
  1543.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  1544.  
  1545.       '** Hide the Path Button for a server or a language install
  1546.       network$ = GetSymbolValue(SYM_NETWORK$)
  1547.       If network$ = gSERVER$ OR _
  1548.      GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ _   
  1549.       Then 
  1550.     notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_B1), SW_HIDE))
  1551.     notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_TEXT4), SW_HIDE))
  1552.     notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_TEXT8), SW_SHOW))
  1553.       End If
  1554.       notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), FALSE))
  1555.  
  1556.       '** Set the starting chapter based on the current product
  1557.       i%    = Lot_GetCurrentProduct()
  1558.       chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(i%) + gTOP$)
  1559.       chpt$ = Lot_GetFirstChild(chpt$, F_DISPLAY + F_CUSTOM)
  1560.  
  1561.       '** DND: If no first chapter then we need to do somthing
  1562.  
  1563.       WHILE (chpt$ <> "")
  1564.      product_name$ = Lot_GetChapterValStr(chpt$, F_NAME) 
  1565.      child$        = Lot_GetFirstChild(chpt$, F_DISPLAY + F_CUSTOM)
  1566.  
  1567.      '** Add new page to notebook
  1568.      notused% = RegisterCallback("CALLBACK","CUSTOM2CB")
  1569.      page% = Lot_AddPagetoNotebook(hDlg&,IDC_NOTEBOOK1,DBNM_1,product_name$)
  1570.      tab_handle& = Lot_GetPagehandle(hDlg&,IDC_NOTEBOOK1,page%)
  1571.        IF FPopulateLCB(tab_handle&, child$) = FALSE THEN
  1572.     ErrorMsg SID_ERR_POPULATELCB, ""
  1573.     ERROR STFQUIT
  1574.      END IF
  1575.  
  1576.      '** Store the page information
  1577.      gNumPages% = gNumPages% + 1
  1578.      gPageArray(gNumPages%).szChapter = chpt$
  1579.      gPageArray(gNumPages%).idPage    = page%
  1580.      gPageArray(gNumPages%).hDlgPage  = tab_handle&
  1581.      gPageArray(gNumPages%).nSel      = 1
  1582.  
  1583.      '** Make sure to save the page id of the first page. For now,
  1584.      '** use gCurrentPageIndex to save the page id of first page.
  1585.      IF gNumPages% = 1 THEN gCurrentPageIndex% = page%
  1586.  
  1587.      '** Goto next sibling of chpt$
  1588.      chpt$ = Lot_GetNextSibling(chpt$, F_DISPLAY + F_CUSTOM)  
  1589.       WEND
  1590.  
  1591.       Lot_TurnToPage hDlg&, IDC_NOTEBOOK1, gCurrentPageIndex%
  1592.       gCurrentPageIndex% = 1
  1593.       SetCustomInfo TRUE, TRUE, TRUE
  1594.  
  1595.    case "IDC_B"
  1596.       chpt$ = Lot_LCBGetItem(gPageArray(gCurrentPageIndex%).hDlgPage, _
  1597.          gPageArray(gCurrentPageIndex%).nSel,     _
  1598.          LCBITEM_CHAPTER)
  1599.       dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  1600.       SetSymbolValue SYM_CHANGEDIRSYMBOL$,  dirsym$
  1601.  
  1602.       IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ THEN
  1603.  
  1604.             IF (dirsym$ <> SYM_WINDIR$ AND _
  1605.             dirsym$ <> SYM_LOTUSFONTSDIR$ AND _
  1606.             dirsym$ <> SYM_WINSYSDIR$) THEN
  1607.                 notused% = RegisterCallback ("CALLBACK", "CHANGEPRODUCTDIRCB")
  1608.                 RC$ = PopupModalDlg (DBM_CHANGEDIR, DBM_CHANGEDIR)
  1609.             END IF
  1610.  
  1611.       ELSE
  1612.  
  1613.             dirSym$ = Reg_GetDirSymbolList(Lot_GetCurrentProduct())
  1614.             '** SHOULD NEVER BE IN THIS CODE ANYWAY
  1615.             If GetListLength(dirSym$) >= 1 Then
  1616.                 dirSym$ = GetListItem(dirSym$, 1)
  1617.                 SetSymbolValue SYM_CHANGEDIRSYMBOL$,  dirsym$
  1618.                 notused% = RegisterCallback ("CALLBACK", "CHANGEPRODUCTDIRCB")
  1619.                 RC$ = PopupModalDlg (DBM_CHANGEDIR, DBM_CHANGEDIR)
  1620.             End If
  1621.  
  1622.       END IF
  1623.  
  1624. ''      SELECT CASE RC$
  1625. ''
  1626. ''      case "OK"
  1627. ''      SetCustomInfo FALSE, TRUE, TRUE
  1628. ''      unused& = SetFocus(GetDlgItem(hDlg&, IDC_B1))
  1629. ''
  1630. ''      case "BACK"
  1631. ''      SetCustomInfo TRUE, TRUE, TRUE
  1632. ''      unused& = SetFocus(GetDlgItem(hDlg&, IDC_B1))
  1633. ''
  1634. ''      END SELECT
  1635.     SetCustomInfo FALSE, TRUE, TRUE
  1636.  
  1637.    case "IDC_NOTEBOOK"
  1638.       FOR i% = 1 TO gNumPages%
  1639.             IF gPageArray(i%).idPage = Inst% THEN
  1640.                 gCurrentPageIndex% = i%
  1641.                 gPrevInst% = -1
  1642.                 SetCustomInfo TRUE, FALSE, TRUE
  1643.             EXIT FOR
  1644.         END IF
  1645.       NEXT
  1646.  
  1647.    case "IDC_OK"
  1648.       ''**Display bitmaps the default way from now on
  1649.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1650.  
  1651.       ResetWinWinsysSymbols
  1652.  
  1653.    case "__DLGDESTROY"
  1654.       ''**Display bitmaps the default way from now on
  1655.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1656.  
  1657.       RemoveSymbol SYM_CUSTOMCOST$
  1658.       RemoveSymbol SYM_CHANGEDIRSYMBOL$
  1659.  
  1660.    END SELECT
  1661.  
  1662. END SUB
  1663.  
  1664. '*************************************************************************
  1665. '** SUB CUSTOM2CB (hDlg&, CtrlId%, Classes$, LInst&)
  1666. '**
  1667. '** Purpose: Page dialogs. Use with CUSTOM1
  1668. '**
  1669. '**          This dialog callback can be used only once! Do not display
  1670. '**          more than one dialog at a time with this callback!
  1671. '**            
  1672. '** Author:    DND
  1673. '** Arguments: Callback args
  1674. '** Returns:   NONE
  1675. '*************************************************************************
  1676.  
  1677. SUB CUSTOM2CB (hDlg&, CtrlId%, Classes$, LInst&)
  1678.  
  1679.    DIM chpt$, tiponly%, index%, dirsym$, notused%, Inst%
  1680.    STATIC PrevPage%
  1681.  
  1682.    Inst% = CINT(LInst&)
  1683.    
  1684.    SELECT CASE Classes$
  1685.  
  1686.       case "__DLGINIT"
  1687.      AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  1688.      AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  1689.  
  1690.    case "IDC_LCB"
  1691.  
  1692.      SetYieldActive FALSE
  1693.  
  1694.      '** If Inst% is negative that just means that the section changed.
  1695.      '** If Inst% is positive then a check box was toggled.
  1696.  
  1697.      IF Inst% < 0 THEN
  1698.         Inst%    = -Inst%
  1699.         tiponly% = TRUE
  1700.      ELSE
  1701.         tiponly% = FALSE
  1702.      END IF
  1703.  
  1704.      '** Get the chapter from the LCB item
  1705.      index% = Inst% - IDC_LCB1 + 1
  1706.      chpt$  = Lot_LCBGetItem(hDlg&, index%, LCBITEM_CHAPTER)
  1707.      gPageArray(gCurrentPageIndex%).nSel = index%
  1708.  
  1709.      '** Process the LCB info
  1710.      IF chpt$ <> "" THEN
  1711.         IF tiponly% = FALSE THEN
  1712.            Lot_ToggleChapterFilesInCopyList chpt$
  1713.         END IF
  1714.         '** Only redisplay if the page or the selection has changed
  1715.         IF (PrevPage% <> gCurrentPageIndex% OR Inst% <> gPrevInst%) THEN
  1716.            SetCustomInfo FALSE, TRUE, TRUE
  1717.         ELSE
  1718.            SetCustomInfo FALSE, TRUE, FALSE
  1719.         END IF
  1720.      END IF
  1721.      ''* Disable the Change Path.. Button if on a shared directory
  1722.      IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ THEN
  1723.         chpt$ = Lot_LCBGetItem(gPageArray(gCurrentPageIndex%).hDlgPage, _
  1724.                gPageArray(gCurrentPageIndex%).nSel,     _
  1725.                LCBITEM_CHAPTER)
  1726.         dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  1727.         IF (dirsym$ = SYM_COMPONENTSDIR$ OR _
  1728.             dirsym$ = SYM_LOTUSUSERDIR$ OR _
  1729.             dirsym$ = SYM_LOTUSFONTSDIR$ OR _
  1730.           dirsym$ = SYM_WINDIR$ OR _
  1731.           dirsym$ = SYM_WINSYSDIR$) THEN
  1732.            notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), FALSE))
  1733.         ELSE
  1734.           IF IsWindowVisible(GetDlgItem(ghdlg&, IDC_B1)) <> FALSE THEN
  1735.         notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), TRUE))
  1736.           END IF
  1737.        END IF
  1738.      END IF
  1739.      '** Remember last page and selection for next time
  1740.      PrevPage% = gCurrentPageIndex%
  1741.      gPrevInst% = Inst%
  1742.  
  1743.      SetYieldActive TRUE
  1744.  
  1745.    END SELECT
  1746.  
  1747. END SUB
  1748.  
  1749.  
  1750. '*************************************************************************
  1751. '** SUB CHANGEPRODUCTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  1752. '**
  1753. '** Purpose: Callback to handle dialog that lets you change one product
  1754. '**          directory.
  1755. '**            
  1756. '** Author:    DND
  1757. '** Arguments: Callback args
  1758. '** SymbolsIn: SYM_CHANGEDIRSYMBOL$ 
  1759. '** Returns:   NONE
  1760. '*************************************************************************
  1761.  
  1762. SUB CHANGEPRODUCTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  1763.  
  1764.    STATIC drvIndex%, dirChanged%
  1765.    DIM    dirSym$, dirToChange$, dirName$, rc$, i%, olddir$, Inst%
  1766.    DIM    notused%
  1767.  
  1768.    Inst% = CINT(LInst&)
  1769.  
  1770.    SELECT CASE Classes$
  1771.  
  1772.    case "__DLGINIT"
  1773.      dirChanged%  = FALSE
  1774.      dirSym$      = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  1775.      dirToChange$ = GetSymbolValue(dirSym$)
  1776.      dirName$     = GetSymbolValue(dirSym$ + gNAME$)
  1777.  
  1778.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  1779.      AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  1780.  
  1781.      SetWindowText GetDlgItem(hDlg&, IDC_GROUP1), dirName$
  1782.  
  1783.      Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  1784. '      drvIndex% = SelectDriveCombo ("IDC_COMBO1", dirToChange$)
  1785.  
  1786.      SetListItem "IDC_EDIT", 1, dirToChange$
  1787.      drvIndex% = ValidateEditBox(hDlg& , 1)
  1788.      AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1789.  
  1790.    case "IDC_EDIT"
  1791.      dirChanged% = TRUE
  1792.  
  1793.    case "IDC_BRWSDIR"
  1794.      notused% = ValidateBrowse(hDlg& , Inst%) 
  1795.      dirChanged% = TRUE
  1796.  
  1797.    case "IDC_COMBO1"
  1798.      ComboSelChanged 1, Inst%
  1799.      drvIndex%   = Inst%
  1800.      dirChanged% = TRUE
  1801.  
  1802.    case "IDC_OK"
  1803.      IF dirChanged% = TRUE THEN
  1804.        dirSym$      = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  1805.        olddir$      = GetSymbolValue(dirSym$)
  1806.  
  1807.        
  1808.        IF ValidateEditBox(hDlg& , 1) = 0 THEN
  1809.      SetListItem "__LASTSTATUS", 1, "Q"
  1810.      EXIT SUB
  1811.        END IF
  1812.        dirToChange$ = GetPathFromComboEdit(hDlg&,1)
  1813.  
  1814.        IF ValidatePath(dirToChange$) = FALSE THEN
  1815.      SetListItem "__LASTSTATUS", 1, "Q"
  1816.        ELSE
  1817.             dirSym$ = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  1818.             SetSymbolValue dirSym$, dirToChange$
  1819.  
  1820.               '** Server is only allowed to change main product dir
  1821.               IF GetSymbolValue(SYM_NETWORK$) <> gSTANDARD$ THEN
  1822.                  dirName$ = |"| + dirSym$ + |",TRUE|
  1823.               ELSE
  1824.                  dirName$ = |"| + dirSym$ + |",FALSE|
  1825.               END IF
  1826.               rc$ = Lot_CallOneProductFunction(Lot_GetCurrentProduct(), _
  1827.               "PathChange", gNEXT$, FALSE, dirName$)
  1828.               If rc$ = gBACK Then
  1829.                  SetListItem "IDC_EDIT", 1, Lot_ExtractDirectory(olddir$)
  1830.                  drvIndex% = SelectDriveCombo ("IDC_COMBO1", olddir$)
  1831.                  SetSymbolValue dirSym$, olddir$
  1832.                  AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1833.                  SetListItem "__LASTSTATUS", 1, "Q"
  1834.                  EXIT SUB
  1835.               End If
  1836.  
  1837.      Lot_RefreshDestination(dirSym$)
  1838.        END IF
  1839.      END IF
  1840.  
  1841.    END SELECT
  1842.  
  1843. END SUB
  1844.  
  1845. 'MARIANA
  1846. '** SUB GETCOMPONENTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  1847. '** Purpose: Prompts for Lotusapp dir in install
  1848. '** Author:    MZ
  1849. '** Arguments: Callback args
  1850. '** Returns:   NONE
  1851. '*************************************************************************
  1852. SUB GETCOMPONENTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  1853.    STATIC drvIndex%(1 to MAX_NO_DRIVECOMBOS), dirChanged%
  1854.    DIM    dirSym$, dirToChange$, dirName$, winLotApp$, Inst%
  1855.    DIM    drvSel%
  1856.    
  1857.    Inst% = CINT(LInst&)
  1858.    SELECT CASE Classes$
  1859.  
  1860.    case "__DLGINIT"
  1861.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT2)
  1862.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  1863.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  1864.  
  1865.       dirChanged%  = FALSE
  1866.       dirToChange$ = GetSymbolValue(SYM_COMPONENTSDIR$)
  1867.       dirName$     = GetSymbolValue(dirSym$ + gNAME$)
  1868.  
  1869.       Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  1870.       AddListItem SYM_UPDATELIST$, "IDC_COMBO1"
  1871.       'drvIndex% = SelectDriveCombo ("IDC_COMBO1", dirToChange$)
  1872.       SetListItem "IDC_EDIT", 1, dirToChange$
  1873.       drvIndex%(1) = ValidateEditBox(hDlg& , 1)
  1874.       AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1875.  
  1876.    case "IDC_COMBO1"
  1877.     ComboSelChanged 1,Inst%
  1878.     drvIndex%(1)   = Inst%
  1879.     dirChanged% = TRUE
  1880.    
  1881.    case "IDC_EDIT"
  1882.       dirChanged% = TRUE
  1883.  
  1884.    case "IDC_BRWSDIR"
  1885.       drvSel% = ValidateBrowse(hDlg& , Inst%) 
  1886.       dirChanged% = TRUE
  1887.  
  1888.    case "IDC_OK"
  1889.     IF dirChanged% = TRUE THEN
  1890.       IF ValidateEditBox(hDlg& , 1) = 0 THEN
  1891.     SetListItem "__LASTSTATUS", 1, "Q"
  1892.     EXIT SUB
  1893.       END IF
  1894.       dirToChange$ = GetPathFromComboEdit(hDlg&,1)
  1895.       IF ValidatePath(dirToChange$) = FALSE THEN
  1896.     SetListItem "__LASTSTATUS", 1, "Q"
  1897.       ELSE
  1898.     SetSymbolValue SYM_COMPONENTSDIR$, dirToChange$
  1899.     Lot_RefreshDestination(SYM_COMPONENTSDIR$)
  1900.       END IF
  1901.       'Initialize the symbols for Notes Data and ORACLE Home directories
  1902.       DL_SetNotesDataPath
  1903.       DL_SetOraclePath
  1904.     END IF
  1905.  
  1906.    END SELECT
  1907.  
  1908. END SUB
  1909.  
  1910. '************************************************************************
  1911. '*                   End of Custom Routines                             *
  1912. '************************************************************************
  1913. '*************************************************************************
  1914. '** SUB SIZEOFINSTALLCB (hDlg&, CtrlId%, Classes$, LInst&)
  1915. '**
  1916. '** Purpose:   Handles the SizeOfInstall Dialog Box for Single Install
  1917. '**            Always works with the current product (should be 1).
  1918. '**
  1919. '**            With a little work we might be able to use this callback
  1920. '**            for the main size of install dialog in SmartSuite.
  1921. '**            You would need to pay attention to minimum size and
  1922. '**            current product. Plus, the path asked for would be
  1923. '**            the BASEDIR, not a product path. However, I think the
  1924. '**            logic could be added.
  1925. '**
  1926. '** In Symbols:
  1927. '**     
  1928. '** Author:    DND
  1929. '** Arguments: STANDARD CALLBACK ARGS
  1930. '** Comments:  SYM_SIZEOFINSTALL$ is an in-out param
  1931. '** Returns:
  1932. '**     
  1933. '*************************************************************************
  1934. '** unc template for multiple COMBO-TEXT boxes
  1935. SUB SIZEOFINSTALLCB (hDlg&, CtrlId%, Classes$, LInst&)
  1936.  
  1937.    STATIC drvIndex%(1 to MAX_NO_DRIVECOMBOS), dirChanged%, size$, lDistSize&, dirChanged2%, dirChanged3%
  1938.    DIM    dirSym$, dirToChange$, rc$, i%, nProds%, lcb&, notused%
  1939.    DIM    drvItem$, drvFree&, network$, Inst%, dirSym2$, dirToChange2$
  1940.    DIM    NumDirs%, DriveChangedFlag%, drvSel%
  1941.  
  1942.    DriveChangedFlag% = FALSE              '** MZ
  1943.  
  1944.    Inst% = CINT(LInst&)
  1945.  
  1946.    network$ = GetSymbolValue(SYM_NETWORK)
  1947.  
  1948.    SELECT CASE Classes$
  1949.    
  1950.    CASE "__DLGINIT"
  1951.  
  1952.       '** Init the radio buttons
  1953.       size$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  1954.       SELECT CASE size$
  1955.  
  1956.       CASE gCOMPLETE$
  1957.      SetListItem "IDC_B", 1, "T"            '** Complete
  1958.  
  1959.       CASE gLAPTOP$
  1960.      SetListItem "IDC_B", 2, "T"            '** Minimum
  1961.  
  1962.       CASE gCUSTOM$
  1963.      SetListItem "IDC_B", 3, "T"            '** Custom
  1964.  
  1965.       END SELECT
  1966.       AddListItem SYM_UPDATELIST$, "IDC_B"
  1967.  
  1968.  
  1969.       '** Fill the product full size
  1970.       lcb& = 0
  1971.       nProds% = Reg_GetNumberOfProducts()
  1972.       FOR i% = 1 to nProds%
  1973.     IF Reg_GetUIInOrOut (i%) <> 0 THEN
  1974.       lcb& = lcb& + Reg_GetProdFullSize(i%)
  1975.     END IF 
  1976.       NEXT
  1977.       SetListItem "IDC_TEXT", 2, LdString(SID_SPACENEEDED) + _
  1978.       STR$((lcb& \ 1048576) + 1) + gStrMB$
  1979.  
  1980.       '** Fill in the product laptop size
  1981.       lcb& = 0
  1982.       FOR i% = 1 to nProds%
  1983.     IF Reg_GetUIInOrOut (i%) <> 0 THEN
  1984.       lcb& = lcb& + Reg_GetProdMinSize(i%)
  1985.     END IF 
  1986.       NEXT
  1987.       SetListItem "IDC_TEXT", 4, LdString(SID_SPACENEEDED) + _
  1988.       STR$((lcb& \ 1048576) + 1) + gStrMB$
  1989.  
  1990.     '** Set up the normal font controls
  1991.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  1992.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT2)
  1993.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  1994.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT4)
  1995.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT5)
  1996.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT10)
  1997.  
  1998.     AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  1999.     AddListItem  SYM_UPDATELIST$, "IDC_TEXT2"
  2000.     AddListItem  SYM_UPDATELIST$, "IDC_TEXT4"
  2001.  
  2002.     '** Init the path area. We only change first path in list.
  2003.     '** So far, the SmartSuite dlg does not have any paths.
  2004.  
  2005.     dirChanged%  = FALSE
  2006.     dirChanged2%  = FALSE
  2007.     IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  2008.        dirChanged%  = TRUE
  2009.        dirSym$      = Reg_GetDirSymbolList(1)
  2010.        If GetListLength(dirSym$) >= 1 Then
  2011.     dirSym$      = GetListItem(dirSym$, 1)
  2012.     dirToChange$ = GetSymbolValue(dirSym$)
  2013.     Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  2014.     SetListItem "IDC_EDIT", 1, dirToChange$
  2015.     drvIndex%(1) = ValidateEditBox(hDlg& , 1)
  2016.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  2017.        End If
  2018.  
  2019.        dirSym2$      = Reg_GetDirSymbolList(1)
  2020.        NumDirs% = Reg_GetProdSupportForExtraProdDirs(1)
  2021.  
  2022.        If GetListLength(dirSym2$) > 1 AND _
  2023.     NumDirs% = 1 Then
  2024.      dirChanged2%  = TRUE
  2025.      dirSym2$      = GetListItem(dirSym2$, 2)
  2026.      dirToChange2$ = GetSymbolValue(dirSym2$)
  2027.      Lot_GetDriveFreeSpaceList "IDC_COMBO2"
  2028.      SetListItem "IDC_EDIT", 2, dirToChange2$
  2029.      drvIndex%(2) = ValidateEditBox(hDlg& , 2)
  2030.      AddListItem SYM_UPDATELIST$, "IDC_EDIT2"
  2031.        End If
  2032.  
  2033.      '** If server, then fill the COMPONENTS as well.
  2034.      '** TV: COMPONENTS is always IDC_EDIT/COMBO3 
  2035.      IF GetSymbolValue(SYM_NETWORK$) = gSERVER$ THEN
  2036.   dirToChange$ = GetSymbolValue(SYM_COMPONENTSDIR$)
  2037.   Lot_GetDriveFreeSpaceList "IDC_COMBO3"
  2038.   SetListItem "IDC_EDIT", 3, dirToChange$
  2039.   drvIndex%(3) = ValidateEditBox(hDlg& , 3)
  2040.   AddListItem SYM_UPDATELIST$, "IDC_EDIT3"
  2041.      END IF
  2042.  
  2043.  
  2044.      '** Take care of whether the controls are enabled or not
  2045.      IF Reg_GetProdSupportForFullInstall(1) = FALSE THEN
  2046.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_B1),    FALSE))
  2047.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT1), FALSE))
  2048.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT2), FALSE))
  2049.      END IF
  2050.      IF Reg_GetProdSupportForMinInstall(1)  = FALSE THEN
  2051.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_B2),    FALSE))
  2052.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT3), FALSE))
  2053.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT4), FALSE))
  2054.      END IF
  2055.      IF Reg_GetProdSupportForCustInstall(1) = FALSE THEN
  2056.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_B3),    FALSE))
  2057.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT5), FALSE))
  2058.      END IF
  2059.        '**** IDC_TEXT3and IDC_TEXT5 should be visible for a product with only full install
  2060.      IF (Reg_GetProdSupportForFullInstall(1) <> FALSE) AND _
  2061.   (Reg_GetProdSupportForMinInstall(1)  = FALSE)  AND _
  2062.   (Reg_GetProdSupportForCustInstall(1) = FALSE)  THEN
  2063.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT3), TRUE))
  2064.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT4), TRUE))
  2065.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT5), TRUE))
  2066.      END IF
  2067. '** Don't allow user path changes for a language install
  2068.       If GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ _   
  2069.       Then 
  2070.   notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_BRWSDIR1), SW_HIDE))
  2071.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_BRWSDIR1), FALSE))
  2072.   notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_BRWSDIR2), SW_HIDE))
  2073.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_BRWSDIR2), FALSE))
  2074.   notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_BRWSDIR3), SW_HIDE))
  2075.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_BRWSDIR3), FALSE))
  2076.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_COMBO1), FALSE))
  2077.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_EDIT1), FALSE))
  2078.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_COMBO2), FALSE))
  2079.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_EDIT2), FALSE))
  2080.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_COMBO3), FALSE))
  2081.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_EDIT3), FALSE))
  2082.       End If
  2083.     END IF
  2084.  
  2085.    case "IDC_COMBO1"
  2086.     ComboSelChanged 1,Inst%
  2087.     DirChanged% = TRUE
  2088.  
  2089.    case "IDC_COMBO2"
  2090.     ComboSelChanged 2,Inst%
  2091.     DirChanged2% = TRUE
  2092.  
  2093.    case "IDC_COMBO1"
  2094.     ComboSelChanged 3,Inst%
  2095.     DirChanged3% = TRUE
  2096.  
  2097.    case "IDC_B"
  2098.       SELECT CASE Inst%
  2099.  
  2100.       CASE 1
  2101.      size$ = gCOMPLETE$
  2102.  
  2103.       CASE 2
  2104.      size$ = gLAPTOP$
  2105.  
  2106.       CASE 3
  2107.      size$ = gCUSTOM$
  2108.  
  2109.       END SELECT
  2110.  
  2111.  
  2112.    case "IDC_EDIT"
  2113.       SELECT CASE Inst%
  2114.  
  2115.       CASE 1
  2116.    dirChanged% = TRUE
  2117.       CASE 2
  2118.    dirChanged2% = TRUE
  2119.       END SELECT
  2120.  
  2121.    case "IDC_BRWSDIR"
  2122.    drvSel% = ValidateBrowse(hDlg& , Inst%) 
  2123.       SELECT CASE Inst%
  2124.  
  2125.       CASE 1
  2126.    dirChanged% = TRUE
  2127.       CASE 2
  2128.    dirChanged2% = TRUE
  2129.       END SELECT
  2130.    
  2131.    case "IDC_OK"
  2132.      SetSymbolValue SYM_SIZEOFINSTALL$, size$
  2133.  
  2134.      '** Handle the main application path
  2135.      IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ AND _
  2136.      dirChanged% = TRUE                               THEN
  2137.        IF ValidateEditBox(hDlg& , 1) = 0 THEN
  2138.      SetListItem "__LASTSTATUS", 1, "Q"
  2139.      EXIT SUB
  2140.        END IF
  2141.         dirToChange$ = GetPathFromComboEdit(hDlg&,1)
  2142.  
  2143.        IF ValidatePath(dirToChange$) = FALSE THEN
  2144.      SetListItem "__LASTSTATUS", 1, "Q"
  2145.      EXIT SUB
  2146.        ELSE
  2147.      dirSym$ = Reg_GetDirSymbolList(1)
  2148.      If GetListLength(dirSym$) >= 1 Then
  2149.        dirSym$ = GetListItem(dirSym$, 1)
  2150.        SetSymbolValue dirSym$, dirToChange$
  2151.        rc$ = Lot_CallOneProductFunction(1, "PathChange",gNEXT$, _
  2152.        FALSE, |"| + dirSym$ + |",TRUE|)
  2153.        If rc$ = gBACK Then
  2154.          SetListItem "__LASTSTATUS", 1, "Q"
  2155.          EXIT SUB
  2156.        End If
  2157.        Lot_RefreshDestination(dirSym$)
  2158.      End If
  2159.        END IF
  2160.      END IF
  2161.  
  2162.      '** Handle the secondary application path
  2163.      IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ AND _
  2164.      dirChanged2% = TRUE THEN
  2165.        IF drvSel% = ValidateEditBox(hDlg& , 2) = 0 THEN
  2166.      SetListItem "__LASTSTATUS", 1, "Q"
  2167.      EXIT SUB
  2168.        END IF
  2169.        dirToChange2$ = GetPathFromComboedit(hDlg&,2)
  2170.        IF ValidatePath(dirToChange2$) = FALSE THEN
  2171.      SetListItem "__LASTSTATUS", 1, "Q"
  2172.      EXIT SUB
  2173.        ELSE
  2174.      dirSym2$ = Reg_GetDirSymbolList(1)
  2175.      If GetListLength(dirSym2$) > 1 Then
  2176.        dirSym2$ = GetListItem(dirSym2$, 2)
  2177.        SetSymbolValue dirSym2$, dirToChange2$
  2178.        rc$ = Lot_CallOneProductFunction(1, "PathChange",gNEXT$, _
  2179.        FALSE, |"| + dirSym2$ + |",TRUE|)
  2180.        If rc$ = gBACK Then
  2181.          SetListItem "__LASTSTATUS", 1, "Q"
  2182.          EXIT SUB
  2183.        End If
  2184.        Lot_RefreshDestination(dirSym2$)
  2185.      End If
  2186.        END IF
  2187.      END IF
  2188.  
  2189.      '** If this is server, then check the COMPONENTS dir
  2190.      IF GetSymbolValue(SYM_NETWORK$) = gSERVER$  AND _
  2191.      Reg_GetProdSupportForShare32(1) = 1 AND _
  2192.      GetListLength("IDC_EDIT") > 2 THEN
  2193.        IF ValidateEditBox(hDlg& , 3) = 0 THEN
  2194.      SetListItem "__LASTSTATUS", 1, "Q"
  2195.      EXIT SUB
  2196.        END IF
  2197.        dirToChange2$ = GetPathFromComboedit(hDlg,3)
  2198.        IF ValidatePath(dirToChange2$) = FALSE THEN
  2199.      SetListItem "__LASTSTATUS", 1, "Q"
  2200.      EXIT SUB
  2201.        ELSE
  2202.      SetSymbolValue SYM_COMPONENTSDIR$, dirToChange2$
  2203.      Lot_RefreshDestination(SYM_COMPONENTSDIR$)
  2204.        END IF
  2205.      END IF
  2206.      ResetWinWinsysSymbols
  2207.    END SELECT
  2208.  
  2209. DONESIZEOFINSTALLCB:
  2210.  
  2211. END SUB
  2212.  
  2213.  
  2214. '*************************************************************************
  2215. '** SUB DISTSIZEINSTALLCB (hDlg&, CtrlId%, Classes$, LInst&)
  2216. '**
  2217. '** Purpose:   Handles the DB_CHOOSEPATHDIST Dialog Box for Single
  2218. '**            and SmartSuite Install
  2219. '**            Always works with the current product (should be 1).
  2220. '**
  2221. '**            With a little work we might be able to use this callback
  2222. '**            for the main size of install dialog in SmartSuite.
  2223. '**            You would need to pay attention to minimum size and
  2224. '**            current product. Plus, the path asked for would be
  2225. '**            the BASEDIR, not a product path. However, I think the
  2226. '**            logic could be added.
  2227. '**
  2228. '** In Symbols:
  2229. '**     
  2230. '** Author:    DND, CMOY
  2231. '** Arguments: STANDARD CALLBACK ARGS
  2232. '** Comments:  SYM_SIZEOFINSTALL$ is an in-out param
  2233. '** Returns:
  2234. '**     
  2235. '*************************************************************************
  2236.  
  2237. SUB DISTSIZEINSTALLCB (hDlg&, CtrlId%, Classes$, LInst&)
  2238.  
  2239.    STATIC drvIndex%, dirChanged%, size$, lDistSize&
  2240.    DIM    dirSym$, dirToChange$, rc$, i%, nProds%, lcb&, notused%
  2241.    DIM    drvItem$, drvFree&, network$, Inst%
  2242.    DIM    drvSel%
  2243.  
  2244.    Inst% = CINT(LInst&)
  2245.  
  2246.    network$ = GetSymbolValue(SYM_NETWORK)
  2247.    SELECT CASE Classes$
  2248.    
  2249.    CASE "__DLGINIT"
  2250.       size$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  2251.       '** Fill the product full size
  2252.       lcb& = 0
  2253.       nProds% = Reg_GetNumberOfProducts()
  2254.       FOR i% = 1 to nProds%
  2255.       lcb& = lcb& + Reg_GetProdFullSize(i%)
  2256.       NEXT
  2257.       SetListItem "IDC_TEXT", 2, LdString(SID_SPACENEEDED) + _
  2258.      STR$((lcb& \ 1048576) + 1) + gStrMB$
  2259.  
  2260.  
  2261.       '** Set up the normal font controls
  2262.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2263.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT2)
  2264.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT7)
  2265.  
  2266.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  2267.       AddListItem  SYM_UPDATELIST$, "IDC_TEXT2"
  2268.  
  2269.       '** Init the path area. We only change first path in list.
  2270.       '** So far, the SmartSuite dlg does not have any paths.
  2271. '      dirChanged%  = FALSE
  2272.       dirChanged%  = TRUE
  2273.       dirSym$      = Reg_GetDirSymbolList(1)
  2274.       If GetListLength(dirSym$) >= 1 Then
  2275.      dirSym$      = GetListItem(dirSym$, 1)
  2276.      dirToChange$ = GetSymbolValue(dirSym$)
  2277.      Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  2278.      SetListItem "IDC_EDIT", 1, dirToChange$
  2279.      drvIndex% = ValidateEditBox(hDlg& , 1)  
  2280.      drvItem$   = GetListItem("IDC_COMBO1",drvIndex%)
  2281.      drvFree&   = CLNG(MID$(drvItem$,3,Instr(drvItem$,";")-4))
  2282.      AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  2283.       End If
  2284.       lDistSize& = Lot_GetInfSectionSize(gDISTRIBUTIONFILES$) \ 1024
  2285.       SetListItem "IDC_TEXT", 1, STR$(lDistSize&) + gStrK$
  2286.       SetListItem "IDC_TEXT", 2, STR$(drvFree& - lDistSize&) + gStrK$
  2287.       AddListItem SYM_UPDATELIST$, "IDC_TEXT1"
  2288.       AddListItem SYM_UPDATELIST$, "IDC_TEXT2"
  2289.  
  2290.    case "IDC_COMBO1" 
  2291.       ComboSelChanged 1, Inst%
  2292.       dirChanged%   = TRUE
  2293.       '** For distribution, update the text.
  2294.       drvItem$   = GetListItem("IDC_COMBO1",Inst%)
  2295.       drvFree&   = CLNG(MID$(drvItem$,3,Instr(drvItem$,";")-4))
  2296. 'changed for unc      drvFree&   = CLNG(MID$(drvItem$,3,LEN(drvItem$)-5))
  2297.       '** already computed in __DLGINIT
  2298.       '** lDistSize& = Lot_GetInfSectionSize(gDISTRIBUTIONFILES$) \ 1024
  2299.       SetListItem "IDC_TEXT", 1, STR$(lDistSize&) + gStrK$
  2300.       SetListItem "IDC_TEXT", 2, STR$(drvFree& - lDistSize&) + gStrK$
  2301.       AddListItem SYM_UPDATELIST$, "IDC_TEXT1"
  2302.       AddListItem SYM_UPDATELIST$, "IDC_TEXT2"
  2303.  
  2304.  
  2305.    case "IDC_EDIT"
  2306.       dirChanged% = TRUE
  2307.  
  2308.    case "IDC_BRWSDIR"
  2309.       drvSel% = ValidateBrowse(hDlg& , Inst%)
  2310.       drvItem$   = GetListItem("IDC_COMBO1",drvSel%)
  2311.       drvFree&   = CLNG(MID$(drvItem$,3,Instr(drvItem$,";")-4))
  2312.       SetListItem "IDC_TEXT", 2, STR$(drvFree& - lDistSize&) + gStrK$
  2313.       AddListItem SYM_UPDATELIST$, "IDC_TEXT2" 
  2314.       dirChanged% = TRUE
  2315.  
  2316.    case "IDC_OK"
  2317.       
  2318.       SetSymbolValue SYM_SIZEOFINSTALL$, size$
  2319.  
  2320.       IF dirChanged% = TRUE THEN
  2321.      '** Handle the main application path
  2322.     
  2323.     IF ValidateEditBox(hDlg& , 1) = 0 THEN
  2324.       SetListItem "__LASTSTATUS", 1, "Q"
  2325.       EXIT SUB
  2326.     END IF
  2327.     dirToChange = GetPathFromComboEdit(hDlg&,1)
  2328.     IF ValidatePath(dirToChange$) = FALSE THEN
  2329.       SetListItem "__LASTSTATUS", 1, "Q"
  2330.       EXIT SUB
  2331.     ELSE
  2332.       dirSym$ = Reg_GetDirSymbolList(1)
  2333.       If GetListLength(dirSym$) >= 1 Then
  2334.         dirSym$ = GetListItem(dirSym$, 1)
  2335.         SetSymbolValue dirSym$, dirToChange$
  2336.         rc$ = Lot_CallOneProductFunction(1, "PathChange",gNEXT$, _
  2337.           FALSE, |"| + dirSym$ + |",TRUE|)
  2338.  
  2339.        '** Not sure what to do with the return yet
  2340.  
  2341.        Lot_RefreshDestination(dirSym$)
  2342.      End If
  2343.  
  2344.      ResetWinWinsysSymbols
  2345.      '** TV:     
  2346.      IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  2347.        SetSymbolValue SYM_BASEDIR$, dirToChange$
  2348.      END IF
  2349.        END IF
  2350.      END IF
  2351.  
  2352.    END SELECT
  2353.  
  2354. END SUB
  2355.  
  2356. '*************************************************************************
  2357. '** SUB DISKCOPYMETHODCB (hDlg&, CtrlId%, Classes$, LInst&)
  2358. '**
  2359. '** Purpose:  Allows user to choose Server or Distribution
  2360. '** IN SYMBOLS : NETWORK=SERVER |  DISTRIBUTION    
  2361. '** OUT SYMBOLS: NETWORK=SERVER | DISTRIBUTION    
  2362. '**     
  2363. '** Author:
  2364. '** Arguments:
  2365. '**     
  2366. '**     
  2367. '** Returns:
  2368. '**     
  2369. '*************************************************************************
  2370.  
  2371. SUB DISKCOPYMETHODCB (hDlg&, CtrlId%, Classes$, LInst&)
  2372.    DIM network$, Inst%
  2373.  
  2374.    Inst% = CINT(LInst&)
  2375.  
  2376.    SELECT CASE Classes$
  2377.    
  2378.    CASE "__DLGINIT"
  2379.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2380.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT2)
  2381.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT3)
  2382.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  2383.  
  2384.       network$ = GetSymbolValue(SYM_NETWORK$)
  2385.       IF network$ = gSERVER$ THEN
  2386.      SetListItem "IDC_B", 1, "T"
  2387.      AddListItem SYM_UPDATELIST$, "IDC_B1"
  2388.       ELSEIF network$ = gDISTRIBUTION$ THEN
  2389.      SetListItem "IDC_B", 2, "T"
  2390.      AddListItem SYM_UPDATELIST$, "IDC_B2"
  2391.       END IF
  2392.  
  2393.    CASE "IDC_B"
  2394.       SELECT CASE Inst%
  2395.       
  2396.       CASE 1
  2397.      SetSymbolValue SYM_NETWORK$, gSERVER$
  2398.  
  2399.       CASE 2
  2400.      SetSymbolValue SYM_NETWORK$, gDISTRIBUTION$
  2401.  
  2402.       END SELECT
  2403.  
  2404.    END SELECT
  2405.  
  2406. END SUB
  2407.  
  2408. '*************************************************************************
  2409. '** PUBLIC FUNCTION SRV_SUCCESSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2410. '** Purpose: This is a call back for Success dlg box for Server Install.
  2411. '**          It executes the licenser.exe, if start licenser button
  2412. '**          is selected.
  2413. '**          This works with DB_SRV_SUCCESS AND DB_SRV_SUCCESS_LIC
  2414. '** Author:  MZ
  2415. '** Arguments:
  2416. '*************************************************************************
  2417.  
  2418. PUBLIC SUB SRV_SUCCESSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2419.    DIM path$, exist%, ExecError%, Inst%
  2420.  
  2421.    Inst% = CINT(LInst&)
  2422.  
  2423.    SELECT CASE Classes$
  2424.  
  2425.    CASE "__DLGINIT"
  2426.       '** Set up the normal font controls
  2427.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT2)
  2428.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  2429.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT4)
  2430.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  2431.  
  2432.    CASE "IDC_B"
  2433.       IF Inst% = 1 THEN
  2434.      path$  = GetSymbolValue(SYM_LICDIR$)
  2435.      path$  = path$ + "licenser.exe"
  2436.      exist% = DoesFileExist(path$, femExists)
  2437.  
  2438.      '** DND: Should I be displaying where we looked for licenser?
  2439.      IF exist% = FALSE THEN
  2440.     ErrorMsgNoDlgExit SID_NO_LICENSEREXE, ""
  2441.      ELSE
  2442.     '** DND: Should I display what we could not launch?
  2443.     ExecError% = WinExec (path$, SW_SHOWNORMAL)
  2444.     IF ExecError% < 32 THEN
  2445.        ErrorMsgNoDlgExit SID_ERR_EXECLIC, ""
  2446.     END IF
  2447.      END IF
  2448.       END IF
  2449.  
  2450.    END SELECT
  2451.  
  2452. END SUB
  2453.  
  2454. '*************************************************************************
  2455. '** PUBLIC SUB LAUNCHNAGCB (hDlg&, CtrlId%, Classes$, LInst&)
  2456. '** Purpose: Sole purpose is to launch Notepad on the NAG
  2457. '**          
  2458. '**          
  2459. '** Author: Marcel Meth
  2460. '** Arguments:
  2461. '**     
  2462. '**     
  2463. '** Returns:
  2464. '**     
  2465. '*************************************************************************
  2466.  
  2467. PUBLIC SUB LAUNCHNAGCB (hDlg&, CtrlId%, Classes$, LInst&)
  2468.    DIM cmd$, ExecError%, Inst%
  2469.  
  2470.    Inst% = CINT(LInst&)
  2471.  
  2472.    SELECT CASE Classes$
  2473.  
  2474.    CASE "__DLGINIT"
  2475.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2476.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT2)
  2477.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  2478.  
  2479.    CASE "IDC_B"
  2480.  
  2481.       '** DND: Will these filenames always be the same?
  2482.  
  2483.       cmd$ = GetSymbolValue(SYM_STF_CWDDIR$) + LdString(SID_READNETWRI)
  2484.         If NOT DoesFileExist(cmd$, femExists) Then
  2485.             cmd$ =  MakePath(GetSymbolValue(SYM_STF_SRCDIR$),LdString(SID_READNETWRI))
  2486.         End If
  2487.          If NOT DoesFileExist(cmd$, femExists) Then
  2488.              cmd$ =  LdString(SID_READNETWRI)
  2489.          End If
  2490.         cmd$ = LdString(SID_WRITEEXE) & " " & cmd$
  2491.       ExecError% = WinExec (cmd$, SW_SHOWNORMAL )
  2492.  
  2493.       '** DND: This does not seem like enough info for error
  2494.       IF ExecError% < 32 THEN
  2495.             ErrorMsg SID_ERR_EXECWRITE, ""
  2496.       END IF
  2497.  
  2498.    END SELECT   
  2499.  
  2500. END SUB
  2501.  
  2502. '*************************************************************************
  2503. '*************************** Local Functions *****************************
  2504. '*************************************************************************
  2505.  
  2506. '*************************************************************************
  2507. '** SUB SetCustomInfo(fOnTab%,fNewSpace%,fUpdateAll%)
  2508. '**
  2509. '** Purpose: Fill with info for custom dialogs. Call this every time
  2510. '**          the LCB changes selection or state.
  2511. '**            
  2512. '** Author:    DND
  2513. '** Arguments: fOnTab%     TRUE if tab has focus
  2514. '**            fNewSpace%  TRUE if we should get new space requirements
  2515. '**            fUpdateAll% TRUE if we should update all fields on the dlg
  2516. '** Returns:   NONE
  2517. '*************************************************************************
  2518.  
  2519. SUB SetCustomInfo(fOnTab%,fNewSpace%,fUpdateAll%)
  2520.  
  2521. '   STATIC lckSpace&, drvSave$
  2522.    DIM    chpt$, dest$, dirName$, dirSym$, drv$, tips$, tmpDrv$, szCost$
  2523.    DIM    lckCost&, lckAvail&
  2524.    DIM    bitmap%, n%, notused%, lnotused&, hwndtemp&
  2525.  
  2526.    '** Get the tip and chapter from the current LCB item
  2527.    IF fOnTab% = FALSE THEN
  2528.       chpt$ = Lot_LCBGetItem(gPageArray(gCurrentPageIndex%).hDlgPage, _
  2529.          gPageArray(gCurrentPageIndex%).nSel,     _
  2530.          LCBITEM_CHAPTER)
  2531.    ELSE
  2532.       chpt$ = gPageArray(gCurrentPageIndex%).szChapter$
  2533.    END IF
  2534.    IF chpt$ = "" THEN EXIT SUB
  2535.  
  2536.    tips$ = Lot_GetChapterValStr(chpt$, F_TIPS)   
  2537.  
  2538.    '** If instructed then build the custom cost list
  2539.    IF GetListLength(SYM_CUSTOMCOST$) = 0 OR fNewSpace% <> FALSE THEN
  2540.       lnotused& = LcbGetChapterCost("", "", SYM_CUSTOMCOST$, "")
  2541.    END IF
  2542.  
  2543.    '** Get the destination directory and dirName
  2544.    dirSym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  2545.  
  2546.    dest$    = GetSymbolValue(dirSym$)
  2547.    dirName$ = GetSymbolValue(dirSym$ + gNAME$)
  2548.    drv$     = MID$(dest$, 1, 1)
  2549. '** UNC stuff
  2550.    IF drv$ = "\" THEN
  2551.        Lot_SplitUNCPath dest$, drv$, tmpDrv$
  2552.        szCost$ = GetListItem(drv$,2)
  2553.        IF szCost$ = "" THEN
  2554.      lckCost& = 0
  2555.        ELSE
  2556.      lckCost& = CLNG(szCost$) \ 1024
  2557.        END IF
  2558.    ELSE
  2559.        n%       = ASC(LCASE$(drv$)) - ASC("a") + 1
  2560.        lckCost& = CLNG(GetListItem(SYM_CUSTOMCOST$, n%)) \ 1024
  2561.    END IF
  2562.    '** Set the space available
  2563. '** I commented this out because the space value would be inacurate if
  2564. '** free space on a drive changed between visits to the LCB.
  2565. '** I left the code here in case calling GetFreeSpaceForDrive 
  2566. '** proved to be too much of a performance hit
  2567. '**   IF drv$ = drvSave$ THEN
  2568. '**      lckAvail& = lckSpace&
  2569. '**   ELSE
  2570. '**      IF MID$(drv$,1,1) = "\" THEN
  2571. '**        szCost$ = GetListItem(drv$,4) 'get the drivefree space for the
  2572. '**        IF szCost$ <> "" THEN         'unc volume
  2573. '**          lckAvail& = CLNG(szCost$)
  2574. '**        ELSE
  2575. '**          lckAvail& = 0
  2576. '**        END IF
  2577. '**      ELSE
  2578.     lckAvail& = GetFreeSpaceForDrive(drv$)
  2579. '**        lckSpace& = lckAvail&
  2580. '**        drvSave$  = drv$
  2581. '**      END IF
  2582. '**   END IF
  2583.    IF fUpdateAll% <> FALSE THEN
  2584.       '** write out the tip text
  2585.     SetWindowText GetDlgItem(gPageArray(gCurrentPageIndex%).hDlgPage&, IDC_TEXT1), tips$
  2586.  
  2587.       '** Set the bitmap (if any)
  2588.       bitmap% = Lot_GetChapterValInt(chpt$, F_BITMAP)
  2589.         lnotused& = SendMessage(GetDlgItem(gPageArray(gCurrentPageIndex%).hDlgPage&, IDC_BMP1), WM_COMMAND, _
  2590.                             UM_SETBITMAP, bitmap%)
  2591.  
  2592.       '** Set all the values in the dialogs
  2593.       '** SetWindowText GetDlgItem(gPageArray(gCurrentPageIndex%).hDlgPage&, IDC_TEXT1), tips$
  2594.       SetWindowText GetDlgItem(ghdlg&, IDC_TEXT4), dest$
  2595.       SetWindowText GetDlgItem(ghdlg&, IDC_TEXT8), dest$
  2596.       SetWindowText GetDlgItem(ghdlg&, IDC_TEXT5), dirName$
  2597.    END IF
  2598.  
  2599.    SetWindowText GetDlgItem(ghdlg&, IDC_TEXT2), Lot_MakeSizeString(lckCost&)
  2600.    SetWindowText GetDlgItem(ghdlg&, IDC_TEXT3), Lot_MakeSizeString(lckAvail&)
  2601.  
  2602.       ''* Disable the Change Path.. Button if on a shared directory
  2603.    IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ AND _
  2604.       IsWindowVisible(GetDlgItem(ghdlg&, IDC_B1)) <> FALSE THEN
  2605.        notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), TRUE))
  2606.       ''* Disable the Change Path.. Button if on a tab, not an item
  2607.  
  2608.       IF fOnTab% = TRUE THEN _
  2609.      notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), FALSE))
  2610.    END IF
  2611.  
  2612. END SUB
  2613.  
  2614.  
  2615. PUBLIC SUB ResetWinWinsysSymbols()
  2616. '** Purpose:    Reset WINDIR, WINSYSDIR to the value of SymVal$ for server
  2617. '**             or set it back if change from server -> other
  2618. '** Author:     MZ, JMD
  2619. '** Arguments:  
  2620. '*************************************************************************
  2621.  
  2622.    DIM   network$, SymVal$
  2623.  
  2624.    network$ = GetSymbolValue(SYM_NETWORK$)
  2625.    IF network$ = gSERVER$ THEN
  2626.  
  2627.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  2628.      SymVal$ = Reg_GetDirSymbolList(1)
  2629.      If GetListLength(SymVal$) >= 1 Then
  2630.     SymVal$ = GetListItem(SymVal$, 1)
  2631.     SymVal$ = GetSymbolValue(SymVal$)
  2632.      Else
  2633.     '** RESOURCE! ***
  2634.     ErrorMsg SID_ERR_SRV_MUST_HAVE_MAINDIR, "" 
  2635.     ERROR STFQUIT
  2636.      End If
  2637.       ELSE
  2638.      SymVal$ = GetSymbolValue(SYM_BASEDIR$)
  2639.       END IF
  2640.  
  2641.       SetSymbolValue SYM_WINDIR$,    SymVal$ + "win\"
  2642.       SetSymbolValue SYM_WINSYSDIR$, SymVal$ + "winsys\"
  2643.       SetSymbolValue SYM_LOTUSFONTSDIR$, SymVal$ + "win\fonts\"
  2644.  
  2645.       Lot_RefreshDestination(SYM_WINDIR$)
  2646.       Lot_RefreshDestination(SYM_WINSYSDIR$)
  2647.       Lot_RefreshDestination(SYM_LOTUSFONTSDIR$)
  2648.  
  2649.    ELSE
  2650.       Lot_InitializeWinWinsysSym
  2651.    END IF
  2652.  
  2653. END SUB
  2654.  
  2655. '** DND: This function should be moved to Toolkit. We might also
  2656. '**      want to think about calling this function whenever a destination
  2657. '**      directory is entered.
  2658.  
  2659. FUNCTION DoesFileExistInDir (dirlist$) AS INTEGER
  2660. '** Purpose:   Takes a list of directories and puts up an error message
  2661. '**            listing all the directories which have files in them. 
  2662. '** In Symbols: 
  2663. '** OUT symbols: 
  2664. '**             
  2665. '**     
  2666. '** Author:  JYOTI KEDIA
  2667. '** Arguments: list of directories
  2668. '**     
  2669. '**     
  2670. '** Returns: TRUE
  2671. '**     
  2672. '*************************************************************************
  2673.    DIM errstr$, n%, i%, dirname$, RC%, temp$, sz$
  2674.  
  2675.    DoesFileExistInDir = TRUE
  2676.    errstr$ = ""
  2677.    n% = GetListLength(dirlist$)
  2678.    for i% = 1 to n%
  2679.       dirname$ = GetListItem(dirlist$,i%) 
  2680.       rc% = DoesDirExist(dirname$)
  2681.       If DoesDirExist(dirname$)Then                
  2682.      temp$ = Lot_Dir(dirname$+"\*.*") 
  2683.      if temp$ <> "" Then 
  2684.     errstr$ = errstr$ + CHR$(10) + CHR$(10) + "     " + dirname$
  2685.      end if
  2686.       end if
  2687.    Next
  2688.        
  2689.    if errstr$ <> "" Then
  2690.       sz$ = LdString(SID_DIR_NOT_EMPTY) + errstr$
  2691.       RC% = DoMsgBox(sz$,LdString(SID_TKT_STD_TITLE),MB_OKCANCEL + MB_ICONEXCLAMATION) 
  2692.       if RC% <> 1 Then
  2693.      SetListItem "__LASTSTATUS",1,"Q"
  2694.      EXIT FUNCTION
  2695.       end if 
  2696.    end if
  2697.  
  2698. END FUNCTION
  2699.  
  2700. '** SUB SRVNODEOPTIONSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2701. '** Purpose: Drives DBSUIT_SRV_NODEOPTIONS dialog
  2702. '** Author:    MZ
  2703. '** Arguments: Callback args
  2704. '** Returns:   NONE
  2705. '** Restriction: this call back works only in custom install
  2706. '*************************************************************************
  2707. SUB SRVNODEOPTIONSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2708.   DIM chpt$, firstchpt$, ProdName$, child$, dirsym$
  2709.   DIM toggle%,Selection%,sel%,Written%
  2710.   DIM NumOfProds%, OptNum%, OptName$, tiponly%,ProdNum%, Selected$, prodno$
  2711.   DIM RC$, i%, j%,k%, notused%, Item$, flag$, SaveInst%, index%,OptKeyWord$
  2712.   DIM Inst%,groupOn%,gIndex%,memberCount%
  2713.  
  2714.   Inst% = CINT(LInst&)
  2715.  
  2716.   SELECT CASE Classes$
  2717.  
  2718.     case "__DLGINIT"
  2719.  
  2720.       ' If no products are registered exit
  2721.       NumOfProds% = Reg_GetNumberOfProducts()
  2722.       IF NumOfProds%=0 THEN
  2723.     EXIT SUB
  2724.       END IF
  2725.  
  2726.       ' Make the right hand text not bold
  2727.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2728.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  2729.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  2730.  
  2731.       ' Turn of the display during this operation
  2732.       Lot_LCBSetRedraw hDlg&, 0
  2733.       Lot_LCBResetContent hDlg&
  2734.  
  2735.       ' Loop through products
  2736.       gIndex% = 1   '***    group box index
  2737.       FOR i% = 1 TO NumOfProds%
  2738.     Reg_ReSetAllNodeOptsSelToDefaults i%
  2739.     OptNum%=Reg_GetNumofNodeOptions(i%)
  2740.     IF OptNum% <> 0 THEN
  2741.       chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(i%) + gTOP$)
  2742.       IF firstchpt$ = "" THEN     
  2743.         firstchpt$ = chpt$
  2744.       END IF
  2745.       Lot_SetSpaceDirTip hDlg&,chpt$,1 - IDC_LCB1 + 1,i%,FALSE
  2746.       ProdName$ = Lot_GetChapterValStr(chpt$, F_NAME) 
  2747.       Written% = 0
  2748.       groupOn% = FALSE
  2749.             memberCount% = 0
  2750.       ' Loop through the options
  2751.       FOR j% = 1 TO OptNum%
  2752.         ' Indent the option name under the product
  2753.         OptKeyWord$ = Reg_GetNodeOptionStr(i%,j%)
  2754.         chpt$ = Lot_GetChapterFromKeyword(OptKeyWord$)
  2755.         IF INT(Lot_GetChapterValInt(chpt$,F_INOROUT)) = 1 THEN
  2756.           IF Written% = 0 THEN
  2757.         ' Write: check box selected
  2758.         '        Name of the product;
  2759.         '        no size;
  2760.         '        number of node options for this product;
  2761.         '        product number;
  2762.         '        G for group
  2763.         Item$="0"+ProdName$+";;"+STR(OptNum%)+";"+STR(i%)+";G"
  2764.         IF Lot_LCBAddItem(hDlg&, Item$) = 0 THEN
  2765.           ErrorMsg SID_ERR_POPULATELCB, ""
  2766.           ERROR STFQUIT
  2767.         END IF
  2768.         Written% = 1
  2769.         memberCount = memberCount + 1
  2770.           END IF
  2771.  
  2772.           OptName$ = "    "+Lot_GetChapterValStr(chpt$, F_NAME)
  2773.           ' Write: check box selected
  2774.           '        Indented Name of the feature;
  2775.           '        size of the feature in Kb;
  2776.           '        chapter number;
  2777.           '        product number;
  2778.           '        M for member;
  2779.           '        OptKeyWord$;
  2780.           '        OptSequence
  2781.           Selected$ = Reg_IsNodeOptionSelected(i%,j%)
  2782.           IF Selected$ = STR(1) THEN
  2783.                 Selected$ = "1"
  2784.         groupOn% = TRUE
  2785.                 ELSE 
  2786.                 Selected$ = "0"
  2787.                 END IF
  2788.         Item$=Selected$+OptName$+";"+ _
  2789.         Lot_MakeSizeString(Lot_GetInfChapterSize(chpt$)\1024) _
  2790.         +";"+chpt$+";"+STR(i%)+";M;"+OptKeyWord$+";"+STR(j%)
  2791.           IF Lot_LCBAddItem(hDlg&, Item$) = 0 THEN
  2792.         ErrorMsg SID_ERR_POPULATELCB, ""
  2793.         ERROR STFQUIT
  2794.           END IF
  2795.           memberCount = memberCount + 1
  2796.         ELSE
  2797.           Reg_ReSetNodeOptionSelected i%,j%,0
  2798.         END IF
  2799.       NEXT
  2800.       IF groupOn <> FALSE THEN
  2801.         notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"1")
  2802.       END IF
  2803.       'The next group index is the previous plus number of member boxes
  2804.       gIndex% = gIndex% + memberCount%
  2805.     END IF
  2806.       NEXT
  2807.  
  2808.       ' Turn on the display
  2809.       Lot_LCBSetRedraw hDlg&, 1
  2810.  
  2811.       ' Select the first item in the listbox
  2812.       Lot_LCBSetSel hDlg&, 1
  2813.       prodno$  = Lot_LCBGetItem(hDlg&,1,5)   '***5-productnumber
  2814.       Lot_SetSpaceDirTip hDlg&,firstchpt$,1,CINT(prodno$),FALSE
  2815.  
  2816.     case "IDC_LCB"
  2817.  
  2818.       SetYieldActive FALSE    ' turn off yielding while handling lcb
  2819.  
  2820.       '** If Inst% is negative that just means that the section changed.
  2821.       '** If Inst% is positive then a check box was toggled.
  2822.       SaveInst% = Inst%
  2823.       IF Inst% < 0 THEN
  2824.     Inst%    = -Inst%
  2825.     tiponly% = TRUE
  2826.     toggle% = FALSE
  2827.       ELSE
  2828.     tiponly% = FALSE
  2829.     toggle% = TRUE
  2830.       END IF
  2831.  
  2832.       ' Find what check box was hit
  2833.       index% = Inst% - IDC_LCB1 + 1
  2834.       ' Get the chapter no or number of options from the check box info
  2835.       chpt$  = Lot_LCBGetItem(hDlg&, index%, LCBITEM_CHAPTER)
  2836.       ' Get the product No from the check box info
  2837.       ProdNum% = CINT(Lot_LCBGetItem(hDlg&, index%, 5))
  2838.       ' Read Group/Member flag from the list of check boxes
  2839.       flag$ = Lot_LCBGetItem(hDlg&, index%, 6)
  2840.       ' Read if the check box is checked or not
  2841.       Selection% = CINT(Lot_LCBGetItem(hDlg&, index%, LCBITEM_SELECTED))
  2842.       ' Read the Keyword from the check box info
  2843.       OptKeyWord$ = Lot_LCBGetItem(hDlg&, index%, 7)
  2844.  
  2845.       '** Process the LCB info
  2846.  
  2847.       '** If you toggle a group
  2848.       '** set all members to the same
  2849.       '** index is the group box
  2850.       IF flag$ = "G" AND toggle% = TRUE THEN
  2851.     FOR i% = index%+1 TO index%+CINT(chpt$)
  2852.       IF i% > Lot_LCBGetCount(hDlg&) OR _
  2853.       Lot_LCBGetItem(hDlg&, i%, 6) = "G" THEN EXIT FOR
  2854.       IF Selection% = 0 THEN
  2855.         notused% = Lot_LCBReplaceItem(hDlg&, i%, LCBITEM_SELECTED,"0")
  2856.       ELSE
  2857.         notused% = Lot_LCBReplaceItem(hDlg&, i%, LCBITEM_SELECTED,"1")
  2858.       END IF
  2859.       Reg_SetNodeOptionSelected ProdNum%, CINT(Lot_LCBGetItem(hDlg&,_
  2860.       i%, 8)), Selection%
  2861.     NEXT
  2862.       END IF
  2863.  
  2864.       '** If you select a group
  2865.       IF flag$ = "G" AND toggle% = FALSE THEN
  2866.     prodno$  = Lot_LCBGetItem(hDlg&, index%,5)   '***5-productnumber
  2867.     chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(_
  2868.                 CINT(prodno$)) + gTOP$)
  2869.     Lot_SetSpaceDirTip hDlg&,chpt$,index%,ProdNum%,TRUE
  2870.       END IF
  2871.  
  2872.       '** If you toggle a member
  2873.       IF flag$ = "M" AND toggle% = TRUE THEN
  2874.     sel% = CINT(Lot_LCBGetItem(hDlg&, index%, LCBITEM_SELECTED))
  2875.  
  2876.         'set node option
  2877.     Reg_SetNodeOptionSelected ProdNum%, CINT(Lot_LCBGetItem(hDlg&,_
  2878.         index%, 8)), sel%
  2879.  
  2880.     Lot_SetSpaceDirTip hDlg&,chpt$,index%,ProdNum%,FALSE
  2881.  
  2882.     'go up the lcb until we find the group
  2883.     gIndex%=index%
  2884.     WHILE flag <> "G" AND gIndex% > 0
  2885.       gIndex%=gIndex%-1
  2886.       flag$ = Lot_LCBGetItem(hDlg&, gIndex%, 6)
  2887.     WEND
  2888.  
  2889.         'now scroll down and look at all the members
  2890.     groupOn%=FALSE
  2891.     chpt$  = Lot_LCBGetItem(hDlg&, gIndex%, LCBITEM_CHAPTER)
  2892.         '** Scroll down the member boxes to see if any are on
  2893.         FOR i% = gIndex%+1 TO gIndex%+CINT(chpt$)
  2894.             IF i% > Lot_LCBGetCount(hDlg&) OR _
  2895.             Lot_LCBGetItem(hDlg&, i%, 6) = "G" THEN EXIT FOR
  2896.             sel% = CINT(Lot_LCBGetItem(hDlg&, i%, LCBITEM_SELECTED))
  2897.       IF sel% <> FALSE THEN 
  2898.             groupOn% = TRUE
  2899.             EXIT FOR
  2900.             END IF
  2901.     NEXT
  2902.  
  2903.     IF groupOn% = FALSE THEN
  2904.       notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"0")
  2905.         ELSE
  2906.       notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"1")
  2907.     END IF
  2908.       END IF
  2909.  
  2910.       '** If you select a member
  2911.       IF flag$ = "M" AND toggle% = FALSE THEN
  2912.     Lot_SetSpaceDirTip hDlg&,chpt$,index%,ProdNum%,TRUE
  2913.       END IF
  2914.  
  2915.       SetYieldActive TRUE     ' turn yielding back on
  2916.  
  2917.    END SELECT
  2918.  
  2919. END SUB
  2920.  
  2921.  
  2922.  
  2923.  
  2924. '*************************************************************************
  2925. SUB NODENODEOPTIONSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2926. '** Purpose: Drives DBSUIT_NODE_NODEOPTIONS dialog
  2927. '** Author:    MZ
  2928. '** Arguments: Callback args
  2929. '** Returns:   NONE
  2930. '*************************************************************************
  2931.   DIM chpt$, firstchpt$, ProdName$, dirsym$,toggle%,Selection%,sel%,Written%
  2932.   DIM OptName$, tiponly%,ProdNum%, Selected$, prodno$
  2933.   DIM AllProdNum%,AllOptNum%
  2934.   DIM RC$, i%, j%, notused%, Item$, flag$, SaveInst%, index%,OptKeyWord$
  2935.   DIM Inst%, drvSel%, dirToChange$
  2936.   DIM avail&, gIndex%,groupOn%,tipChpt$,thisChptIn%,memberCount%
  2937.   STATIC dirChanged%
  2938.  
  2939.   Inst% = CINT(LInst&)
  2940.  
  2941.   SELECT CASE Classes$
  2942.  
  2943.     case "__DLGINIT"
  2944.       dirChanged%  = FALSE
  2945.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2946.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  2947.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  2948.  
  2949.       ' Turn of the display during this operation
  2950.       Lot_LCBSetRedraw hDlg&, 0
  2951.       Lot_LCBResetContent hDlg&
  2952.  
  2953.  
  2954.     IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  2955.       Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  2956.       dirSym$ = Reg_GetDirSymbolList(1)
  2957.       dirSym$ = GetListItem(dirSym$,1) 
  2958.       dirToChange$ = GetSymbolValue(dirSym$)
  2959.     ELSE
  2960.       dirToChange$ = GetSymbolValue(SYM_BASEDIR$)
  2961.     END IF
  2962.     SetSymbolValue SYM_CHANGEDIRSYMBOL$, dirSym$
  2963.     SetListItem "IDC_EDIT", 1, dirToChange$
  2964.     notused% = ValidateEditBox(hDlg& , 1)
  2965.  
  2966.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  2967.  
  2968.     'Loop through the products and find the avail node options
  2969.     AllProdNum% = 0
  2970.     AllProdNum% = Reg_GetNumberOfProducts()
  2971.     IF AllProdNum% <> 0 THEN
  2972.       gIndex% = 1
  2973.       'Loop through the products
  2974.       Written% = 0
  2975.       FOR prodNum%=1 TO AllProdNum%
  2976.     AllOptNum% = 0
  2977.     memberCount% = 0
  2978.     Reg_ReSetAllNodeOptsSelToDefaults prodNum%
  2979.     AllOptNum% = Reg_GetNumofNodeOptions(prodNum%)
  2980.     chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(prodNum%)_
  2981.       + gTOP$)
  2982.     IF AllOptNum% <> 0 AND (INT(Lot_GetChapterValInt(chpt$,F_INOROUT)) = 1) THEN
  2983.       IF firstchpt$ = "" THEN 
  2984.         firstchpt$ = chpt$
  2985.       END IF
  2986.       ProdName$ = Lot_GetChapterValStr(chpt$, F_NAME) 
  2987.       Written% = 0
  2988.       'if none of the members are on we will deselect group box
  2989.       groupOn%=FALSE
  2990.       ' Loop through the options
  2991.       FOR j% = 1 TO AllOptNum%
  2992.         ' Indent the option name under the product
  2993.         OptKeyWord$ = Reg_GetNodeOptionStr(prodNum%,j%)
  2994.         chpt$ = Lot_GetChapterFromKeyword(OptKeyWord$)
  2995.         thisChptIn%=0
  2996.         avail& = Lot_IsTheNodeOptionsAvailToNode(prodNum%, OptKeyWord$)
  2997.         IF Lot_IsTheFeatureInstalled(OptKeyWord$) <> FALSE AND _
  2998.         avail <> FALSE THEN
  2999.           IF Written% = 0 THEN
  3000.         ' Write: check box selected
  3001.         '        Name of the product;
  3002.         '        no size;
  3003.         '        number of node options for this product;
  3004.         '        product number;
  3005.         '        G for group
  3006.         Item$="0"+ProdName$+";;"+STR(AllOptNum%)+";"+STR(prodNum%)+";G"
  3007.         IF Lot_LCBAddItem(hDlg&, Item$) = 0 THEN
  3008.           ErrorMsg SID_ERR_POPULATELCB, ""
  3009.           ERROR STFQUIT
  3010.         END IF
  3011.         Written% = 1
  3012.         memberCount% = memberCount% + 1
  3013.           END IF
  3014.           OptName$ = "    "+Lot_GetChapterValStr(chpt$, F_NAME)
  3015.           ' Write: check box selected
  3016.           '        Indented Name of the feature;
  3017.           '        size of the feature in Kb;
  3018.           '        chapter number;
  3019.           '        product number;
  3020.           '        M for member;
  3021.           '        OptKeyWord$;
  3022.           '        OptSequence
  3023.           Selected$ = Reg_IsNodeOptionSelected(prodNum%,j%)
  3024.           IF Selected$ = STR(1) THEN
  3025.         groupOn%=TRUE
  3026.         thisChptIn%=1
  3027.         Item$="1"+OptName$+";"+ _
  3028.         Lot_MakeSizeString(Lot_GetInfChapterSize(chpt$)\1024) _
  3029.         +";"+chpt$+";"+STR(prodNum%)+";M;"+OptKeyWord$+";"+STR(j%)
  3030.           ELSE
  3031.         Item$="0"+OptName$+";"+ _
  3032.         Lot_MakeSizeString(Lot_GetInfChapterSize(chpt$)\1024) _
  3033.         +";"+chpt$+";"+STR(prodNum%)+";M;"+OptKeyWord$+";"+STR(j%)
  3034.           END IF
  3035.           memberCount% = memberCount% + 1
  3036.           IF Lot_LCBAddItem(hDlg&, Item$) = 0 THEN
  3037.         ErrorMsg SID_ERR_POPULATELCB, ""
  3038.         ERROR STFQUIT
  3039.           END IF
  3040.         ELSE
  3041.         Reg_ReSetNodeOptionSelected prodNum%,j%,0
  3042.         END IF
  3043.         notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, thisChptIn%)
  3044.       NEXT
  3045.       IF groupOn% <> FALSE THEN
  3046.         notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"1")
  3047.       END IF
  3048.       'The next group index is the previous plus number of member boxes
  3049.       gIndex% = gIndex% + memberCount%
  3050.     END IF
  3051.       NEXT
  3052.       ' Turn on the display
  3053.       Lot_LCBSetRedraw hDlg&, 1
  3054.  
  3055.       ' Select the first item in the listbox
  3056.       IF gIndex > 1 THEN 
  3057.     Lot_LCBSetSel hDlg&, 1
  3058.     prodno$  = Lot_LCBGetItem(hDlg&,1,5)   '***5-productnumber
  3059.     Lot_SetSpaceDirTip hDlg&,firstchpt$,1,CINT(prodno$),FALSE
  3060.       END IF
  3061.     END IF
  3062.  
  3063.     case "IDC_LCB"
  3064.  
  3065.       SetYieldActive FALSE    ' turn off yielding while handling lcb
  3066.  
  3067.       '** If Inst% is negative that just means that the section changed.
  3068.       '** If Inst% is positive then a check box was toggled.
  3069.       SaveInst% = Inst%
  3070.       IF Inst% < 0 THEN
  3071.     Inst%    = -Inst%
  3072.     tiponly% = TRUE
  3073.     toggle% = FALSE
  3074.       ELSE
  3075.     tiponly% = FALSE
  3076.     toggle% = TRUE
  3077.       END IF
  3078.       ' Find what check box was hit
  3079.       index% = Inst% - IDC_LCB1 + 1
  3080.       ' Get the chapter no or number of options from the check box info
  3081.       chpt$  = Lot_LCBGetItem(hDlg&, index%, LCBITEM_CHAPTER)
  3082.       ' Get the product No from the check box info
  3083.       ProdNum% = CINT(Lot_LCBGetItem(hDlg&, index%, 5))
  3084.       ' Read Group/Member flag from the list of check boxes
  3085.       flag$ = Lot_LCBGetItem(hDlg&, index%, 6)
  3086.       ' Read if the check box is checked or not
  3087.       Selection% = CINT(Lot_LCBGetItem(hDlg&, index%, LCBITEM_SELECTED))
  3088.       ' Read the Keyword from the check box info
  3089.       OptKeyWord$ = Lot_LCBGetItem(hDlg&, index%, 7)
  3090.  
  3091.       '**save the chapter number to set the tip
  3092.       IF flag$ = "G" THEN
  3093.     prodno$  = Lot_LCBGetItem(hDlg&, index%,5)   '***5-productnumber
  3094.     tipChpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(CINT(prodno$)) + gTOP$)
  3095.       ELSE
  3096.     tipChpt$=chpt$
  3097.       END IF
  3098.       '** Process the LCB info
  3099.  
  3100.  
  3101.       '** If you toggle a group
  3102.       IF flag$ = "G" AND toggle% = TRUE THEN
  3103.  
  3104.     FOR i% = index%+1 TO index%+CINT(chpt$)
  3105.       IF i% > Lot_LCBGetCount(hDlg&) OR _
  3106.       Lot_LCBGetItem(hDlg&, i%, 6) = "G" THEN EXIT FOR
  3107.       thisChptIn% = 0
  3108.       'here prodno$ is used to toggle member box on/off
  3109.       prodno$ = "0"
  3110.       sel% = CINT(Lot_LCBGetItem(hDlg&, i%, LCBITEM_SELECTED))
  3111.       'selection is the group box state
  3112.       'sel is the member box state 
  3113.       'if they are different make them the same
  3114.       IF sel% <> selection% THEN
  3115.         chpt$  = Lot_LCBGetItem(hDlg&, i%, LCBITEM_CHAPTER)
  3116.         IF selection% <> 0 THEN 
  3117.           thisChptIn% = 1 
  3118.           prodno$ = "1"
  3119.         END IF
  3120.         notused% = Lot_LCBReplaceItem(hDlg&, i%,_
  3121.             LCBITEM_SELECTED,prodno$)
  3122.         notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, _
  3123.               thisChptIn%)
  3124.         Reg_SetNodeOptionSelected ProdNum%,_
  3125.         CINT(Lot_LCBGetItem(hDlg&, i%, 8)), thisChptIn%
  3126.       END IF
  3127.     NEXT
  3128.       END IF
  3129.  
  3130.       '** If you toggle a member
  3131.       IF flag$ = "M" AND toggle% = TRUE THEN
  3132.     'go up the lcb until we find the group
  3133.     gIndex%=index%
  3134.     WHILE flag <> "G" AND gIndex% > 0
  3135.       gIndex%=gIndex%-1
  3136.       flag$ = Lot_LCBGetItem(hDlg&, gIndex%, 6)
  3137.     WEND
  3138.     sel% = CINT(Lot_LCBGetItem(hDlg&, index%, LCBITEM_SELECTED))
  3139.     IF sel% = 0 THEN
  3140.       Reg_SetNodeOptionSelected ProdNum%, _
  3141.       CINT(Lot_LCBGetItem(hDlg&, index%, 8)), 0
  3142.       notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, 0)
  3143.       groupOn%=FALSE
  3144.       'if all selections are off turn off group
  3145.       chpt$  = Lot_LCBGetItem(hDlg&, gIndex%, LCBITEM_CHAPTER)
  3146.  
  3147.  
  3148.       FOR i% = gIndex%+1 TO gIndex%+CINT(chpt$)
  3149.         IF i% > Lot_LCBGetCount(hDlg&) OR _
  3150.         Lot_LCBGetItem(hDlg&, i%, 6) = "G" THEN EXIT FOR
  3151.         sel% = CINT(Lot_LCBGetItem(hDlg&, i%, LCBITEM_SELECTED))
  3152.         IF sel% <> FALSE THEN 
  3153.           groupOn% = TRUE
  3154.           EXIT FOR
  3155.         END IF
  3156.       NEXT
  3157.  
  3158.       'if none of the options are on uncheck the group box
  3159.       IF groupOn% = FALSE THEN
  3160.         notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"0")
  3161.       END IF
  3162.     ELSE
  3163.       Reg_SetNodeOptionSelected ProdNum%, CINT(Lot_LCBGetItem(hDlg&, index%, 8)), 1
  3164.       notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, 1)
  3165.       notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"1")
  3166.     END IF
  3167.       END IF
  3168.       '** If you select a member
  3169.       'if we did not toggle then tiponly is true
  3170.       IF toggle = FALSE THEN
  3171.     Lot_SetSpaceDirTip hDlg&,tipChpt$,index%,ProdNum%,TRUE
  3172.       ELSE
  3173.     Lot_SetSpaceDirTip hDlg&,tipChpt$,index%,ProdNum%,FALSE
  3174.       END IF
  3175.  
  3176.       SetYieldActive TRUE     ' turn yielding back on
  3177.  
  3178.     case "IDC_EDIT"
  3179.       dirChanged% = TRUE
  3180.  
  3181.     case "IDC_BRWSDIR"
  3182.       drvSel% = ValidateBrowse(hDlg& , Inst%) 
  3183.       dirChanged% = TRUE
  3184.  
  3185.     case "IDC_COMBO1"
  3186.       ComboSelChanged 1, Inst% 
  3187.       dirChanged% = TRUE
  3188.  
  3189.     case "IDC_OK"
  3190.       IF dirChanged% = TRUE THEN
  3191.     drvSel% = ValidateEditBox(hDlg& , 1)
  3192.     IF drvSel% = 0 THEN
  3193.       SetListItem "__LASTSTATUS", 1, "Q"
  3194.     EXIT SUB
  3195.       END IF
  3196.       dirToChange$ = GetPathFromComboEdit(hDlg&, 1)
  3197.       IF ValidatePath(dirToChange$) = FALSE THEN
  3198.     SetListItem "__LASTSTATUS", 1, "Q"
  3199.       ELSE
  3200.     dirSym$ = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  3201.     SetSymbolValue dirSym$, dirToChange$
  3202.     rc$ = Lot_CallOneProductFunction(Lot_GetCurrentProduct(), _
  3203.     "PathChange", gNEXT$,    _
  3204.     FALSE, |"| + dirSym$ + |",FALSE|)
  3205.     If rc$ = gBACK Then
  3206.       SetListItem "__LASTSTATUS", 1, "Q"
  3207.       EXIT SUB
  3208.     End If
  3209.     Lot_RefreshDestination(dirSym$)
  3210.       END IF
  3211.     END IF
  3212.   END SELECT
  3213.  
  3214. END SUB
  3215.  
  3216. '*************************************************************************
  3217. SUB Lot_SetSpaceDirTip(hDlg&,chpt$,index%,ProdNum%,tiponly%)
  3218. '** Purpose: Fill with info for Server NodeOptions dialogs. Call this every
  3219. '**          time the LCB changes selection or state in  SRVNODEOPTIONSCB
  3220. '** Author:    MZ
  3221. '** Arguments: hDlg&
  3222. '**            Chapter$
  3223. '**            index%
  3224. '**            tiponly%
  3225. '*************************************************************************
  3226.    STATIC lckSpace&, drvSave$
  3227.    DIM    dest$, dirName$, dirSym$, drv$, tips$, uncVol$, dirPath$
  3228.    DIM    lckCost&, lckAvail&
  3229.    DIM    bitmap%, n%, notused%
  3230.  
  3231.    '** Get the tip and chapter from the current LCB item
  3232.    tips$ = Lot_GetChapterValStr(chpt$, F_TIPS)   
  3233.  
  3234.    '** If instructed then build the custom cost list
  3235.    IF GetListLength(SYM_CUSTOMCOST$) = 0 OR tiponly <> FALSE THEN
  3236.       notused% = LcbGetChapterCost("", "", SYM_CUSTOMCOST$, "")
  3237.    END IF
  3238.  
  3239.    '** Get the destination directory and dirName
  3240.    dirSym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  3241.    IF GetSymbolValue(SYM_NETWORK$) <> gSTANDARD$ THEN
  3242.       dirSym$ = Reg_GetDirSymbolList(ProdNum%)
  3243.       dirSym$ = GetListItem(dirSym$, 1)
  3244.    END IF
  3245.  
  3246.    dest$    = GetSymbolValue(dirSym$)
  3247.    dirName$ = GetSymbolValue(dirSym$ + gNAME$)
  3248.    drv$     = MID$(dest$, 1, 1)
  3249.    Lot_SplitUNCPath dest$, uncVol$, dirPath$
  3250.    IF uncVol$ = "" THEN
  3251.      n%       = ASC(drv$) - ASC("a") + 1
  3252.      lckCost& = CLNG(GetListItem(SYM_CUSTOMCOST$, n%)) \ 1024
  3253.    ELSE
  3254.      lckCost& = CLNG(GetListItem(uncVol$, UNC_COST)) \ 1024
  3255.  
  3256.    END IF
  3257.    '** Set the space available
  3258.    IF drv$ = drvSave$ THEN
  3259.       lckAvail& = lckSpace&
  3260.    ELSE
  3261.       lckAvail& = GetFreeSpaceForDrive(dest$)
  3262.       lckSpace& = lckAvail&
  3263.       drvSave$  = drv$
  3264.    END IF
  3265.  
  3266.    '** Set the bitmap (if any)
  3267.    bitmap% = Lot_GetChapterValInt(chpt$, F_BITMAP)
  3268.    IF bitmap% <> 0 THEN
  3269.       SetListItem "IDC_BMP", 1, STR$(bitmap%)
  3270.       AddListItem SYM_UPDATELIST$, "IDC_BMP1"
  3271.    END IF
  3272.  
  3273.    '** Set all the values in the dialogs
  3274.    SetWindowText GetDlgItem(hDlg&, IDC_TEXT1), tips$
  3275.    SetWindowText GetDlgItem(hDlg&, IDC_TEXT5), Lot_MakeSizeString(lckCost&)
  3276.    SetWindowText GetDlgItem(hDlg&, IDC_TEXT7), Lot_MakeSizeString(lckAvail&)
  3277.    SetWindowText GetDlgItem(hDlg&, IDC_TEXT9), dest$
  3278.    'SetWindowText GetDlgItem(hDlg&, IDC_TEXT8), dirName$
  3279.  
  3280. END SUB
  3281.  
  3282. '*************************************************************************
  3283. SUB AUTOEXECCB (hDlg&, CtrlId%, Classes$, LInst&)
  3284. '** Purpose: 
  3285. '**          
  3286. '** Author:    Christopher Moy
  3287. '** Arguments: hDlg&
  3288. '**            CtrlId%
  3289. '**            Classes$
  3290. '**            LInst&
  3291. '*************************************************************************
  3292.  
  3293.    DIM modflag%, notused1$, Inst%
  3294.  
  3295.    Inst% = CINT(LInst&)
  3296.    
  3297.  
  3298.    SELECT CASE Classes$
  3299.  
  3300.    CASE "__DLGINIT"
  3301.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  3302.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT2)
  3303.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT3)
  3304.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT4)
  3305.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT5)
  3306.      AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  3307.  
  3308.    CASE "IDC_OK"                    '** Yes button
  3309.      modflag% = 0
  3310.      IF GetSymbolValue(SYM_NEEDNOTES$) <> gFALSE$ THEN
  3311.     modflag% = 1            '** autoexec needs notes
  3312.      END IF
  3313.      IF GetSymbolValue(SYM_NEEDSHARE$) <> gFALSE$ THEN
  3314.     modflag% = modflag% + 2 '** autoexec needs share
  3315.      END IF
  3316.      IF modflag% <> FALSE THEN
  3317.     notused1$=ModifyAutoexec(modflag%, 1, "AUTOEXEC.LTS")
  3318.      END IF
  3319.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gAUTO$
  3320.  
  3321.    CASE "IDC_MENU"                  '** Make Copy button **
  3322.      modflag% = 0               '** test flag situation
  3323.      IF GetSymbolValue(SYM_NEEDNOTES$) <> gFALSE$ THEN
  3324.     modflag% = 1            '** autoexec needs notes
  3325.      END IF
  3326.      IF GetSymbolValue(SYM_NEEDSHARE$) <> gFALSE$ THEN
  3327.     modflag% = modflag% + 2 '** autoexec needs share
  3328.      END IF
  3329.      IF modflag% <> FALSE THEN
  3330.     notused1$=ModifyAutoexec(modflag%, 0, "AUTOEXEC.LTS")
  3331.      END IF
  3332.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gAUTOCOPY$
  3333.  
  3334.    CASE "IDC_CONTINUE"                '** No button
  3335.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gMAN$
  3336.  
  3337.    END SELECT
  3338.  
  3339. END SUB
  3340.  
  3341. '*************************************************************************
  3342. SUB INSTALLCOMPLETECB (hDlg&, CtrlId%, Classes$, LInst&)
  3343. '** Purpose: 
  3344. '**          
  3345. '** Author:    Christopher Moy
  3346. '** Arguments: hDlg&
  3347. '**            CtrlId%
  3348. '**            Classes$
  3349. '**            LInst&
  3350. '*************************************************************************
  3351.    DIM notused1$, hwnd%, lr%, Inst%
  3352.  
  3353.    Inst% = CINT(LInst&)
  3354.    
  3355.    SELECT CASE Classes$
  3356.  
  3357.    CASE "__DLGINIT"
  3358.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  3359.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT2)
  3360.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  3361.  
  3362. %rem
  3363.    CASE "IDC_CONTINUE"                     '** Restart button
  3364.  
  3365.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNext, FALSE, gALLPRODUCTS,"")
  3366.       hwnd%=FindWindow("LInstallWClass",LdString(SID_INST_WINDOW_TITLE))
  3367. ' Japanese build
  3368. '     hwnd%=FindWindow("LInstallWClass","âìü[â^âX âCâôâXâgü[âïâvâìâOâëâÇé╓éµéñé▒é╗")
  3369.       lr%=SendMessage(hwnd%, WM_COMMAND, UM_REBOOTFLAG, 0)
  3370. %endrem
  3371.      
  3372.    CASE "IDC_OK"                    '** Done button
  3373.  
  3374.    END SELECT
  3375.  
  3376. END SUB
  3377.  
  3378. '*************************************************************************
  3379.  
  3380. SUB PARENTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  3381. '** Purpose: Drives DB_PARENTDIR dialog
  3382. '** Author:    MZ,TV
  3383. '** Arguments: Callback args
  3384. '** Returns:   NONE
  3385. '*************************************************************************
  3386.    STATIC drvIndex%(1 to MAX_NO_DRIVECOMBOS)
  3387. '   STATIC dirChanged%
  3388.    DIM    dirSym$, dirToChange$, dirName$, rc$, i%, Chapter$, Inst%
  3389.    DIM    AllProdNum%,prodNum%,AllOptNum%,OptName$,OptNum%,notused%
  3390.    DIM    drvSel%
  3391.  
  3392.    Inst% = CINT(LInst&)
  3393.  
  3394.    SELECT CASE Classes$
  3395.  
  3396.    case "__DLGINIT"
  3397.       'For server, want to update always, since we fiddle with the drive list
  3398.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  3399.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  3400.       Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  3401.       dirToChange$ = GetSymbolValue(SYM_BASEDIR$)
  3402.       SetListItem "IDC_EDIT", 1, dirToChange$
  3403.       drvIndex%(1) = ValidateEditBox(hDlg& , 1)
  3404.       AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  3405.  
  3406.     case "IDC_COMBO1"
  3407.        ComboSelChanged 1, Inst%
  3408.  
  3409. '   case "IDC_EDIT"
  3410. '      dirChanged% = TRUE
  3411.  
  3412.    case "IDC_BRWSDIR"
  3413.      drvSel% = ValidateBrowse(hDlg& , Inst%) 
  3414. '        dirChanged% = TRUE
  3415.  
  3416.    case "IDC_OK"
  3417.     drvSel% = ValidateEditBox(hDlg& , 1)
  3418.     IF drvSel% = 0 THEN
  3419.     SetListItem "__LASTSTATUS", 1, "Q"
  3420.     EXIT SUB
  3421.     ELSE 
  3422.       drvIndex%(1) = drvSel%
  3423.     END IF
  3424.     dirToChange$ = GetPathFromComboEdit(hDlg&, 1)
  3425.     IF ValidatePath(dirToChange$) = FALSE THEN
  3426.       SetListItem "__LASTSTATUS", 1, "Q"
  3427.       EXIT SUB
  3428.     ELSE
  3429.       SetSymbolValue SYM_BASEDIR$, dirToChange$
  3430.       'IF Reg_GetProdSupportForShare32(1) = 1 THEN
  3431.     ' SetTheComponentsDir
  3432.       'END IF      
  3433.       Lot_RefreshDestination(SYM_BASEDIR$)
  3434.     END IF
  3435.    END SELECT
  3436.  
  3437. END SUB
  3438.  
  3439. '*************************************************************************
  3440.  
  3441. PUBLIC FUNCTION Lot_SharedWindowsDlg (Id%) AS STRING
  3442. '** Purpose: Drives DB_PARENTDIR dialog
  3443. '** Author:    JMD
  3444. '** Arguments: ID of dialog, either:
  3445. '**                                     DB_SHAREDWINDOWS        (Install to shared windows dir?)
  3446. '**                                     DB_NOSHAREDWINDOWS(Can't install to shared windows dir?)
  3447. '** Returns:   Return value of PopupModalDlg
  3448. '*************************************************************************
  3449.  
  3450.    AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT3)
  3451.    AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT4)
  3452.    AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  3453.     
  3454.    SetListItem "IDC_TEXT", 1, GetSymbolValue(SYM_WINDIR$)
  3455.    SetListItem "IDC_TEXT", 2, GetSymbolValue(SYM_WINSYSDIR$)
  3456.  
  3457.    Lot_SharedWindowsDlg = PopupModalDlg ( Id%, CLng(Id%) )
  3458.  
  3459. END FUNCTION
  3460. '*************************************************************************
  3461.  
  3462.