home *** CD-ROM | disk | FTP | other *** search
/ Windoware / WINDOWARE_1_6.iso / winutil / wspcr20 / wsmake.wbt < prev    next >
Text File  |  1991-09-27  |  6KB  |  179 lines

  1. ; --- WSMAKE.WBT - an NDW Batch Builder file that creates WorkSpaces.
  2. ;     WorkSpacer 2.0 ⌐ 1991 - WiGuys Software
  3.  
  4. Call ( "wsglobal.wbt", "" )
  5. msg = StrCat ( "To create a WorkSpace :", tf, "1) Load and position all applications" )
  6. msg = StrCat ( msg, lf, "2) Then run WorkSpacer.", tf, "Proceed with WorkSpacer?" )
  7. q = AskYesNo ( wsver, msg )
  8. If q == @NO Then Exit
  9.  
  10. ; --- Check to see it the user wants to create a new workspace or replace an
  11. ;     existing one
  12.  
  13. If FileSize ( spacelib ) == 0 Then GoTo SpaceName
  14. grpname = TextBox ("%wsver% WorkSpace Listing", spacelib )
  15. If StrICmp ( grpname, nul ) == 0 Then GoTo SpaceName
  16.  
  17. :AskReplace
  18. replace = AskYesNo ( wsver, "%grpname% exists. %tf% Replace it?" )
  19. If replace == @YES Then GoTo WindName
  20.  
  21. ; --- If a new workspace is wanted, get the name and double check to
  22. ;     ensure that it isn't a duplicate name
  23.  
  24. :SpaceName
  25. grpname = AskLine ( wsver, "WorkSpace name? (Maximum - 30 characters)", "" )
  26. If StrLen ( grpname) == 0 || StrLen ( grpname ) > 30 Then GoTo SpaceName
  27. If FileSize ( spacelib ) == 0 Then GoTo WindName
  28. fHandle = FileOpen ( spacelib, "READ" )
  29.  
  30. :TestLoop
  31. line = FileRead ( fHandle )
  32. If line == "*EOF*" Then GoTo WindName
  33. If !StrICmp ( line, grpname ) == 0 Then GoTo TestLoop
  34. FileClose ( fHandle )
  35. GoTo AskReplace
  36.  
  37. ; --- Select the window for the application, and get all of the appropriate
  38. ;     data for that window.  Then check to see if the current window will
  39. ;     "cover" existing ones.  If so, ask if that's OK.
  40.  
  41. :WindName
  42. Status = "Normal"
  43. currwind = ItemSelect ( "%wsver% Window Selection", allwin, hortab )
  44. If StrICmp ( currwind, nul ) == 0 Then GoTo WindName
  45. currpos = WinPosition ( currwind )
  46. If count == 1 Then GoTo Continue
  47. tcount = 1
  48. ParseData ( StrReplace ( currpos, ",", " " ) )
  49. axulc = Param1
  50. ayulc = Param2
  51. axbrc = Param3
  52. aybrc = Param4
  53.  
  54. :DupePos
  55. tkey = "Pos%tcount%"
  56. tline = IniReadPvt (grpname, tkey, nul, "wspacer.ini")
  57. ParseData ( StrReplace ( tline, ",", " " ) )
  58. If axulc < (Param1 + pix) && ayulc < (Param2 + pix) && axbrc > (Param3- pix) && aybrc > (Param4 - pix) Then GoTo Covers
  59.  
  60. :GoAhead
  61. tcount = tcount + 1
  62. If !tcount == count Then GoTo DupePos
  63.  
  64. ; --- Since the window title in the final workspace may not match the
  65. ;     current one, parse the title so that we can get just the basic
  66. ;     window name, without any file information ( - (untitled), etc)
  67.  
  68. :Continue
  69. tindex = 0
  70. sindex = 0
  71.  
  72. :DelimIndex
  73. tindex = StrScan ( currwind, " ", tindex + 1, @FWDSCAN )
  74. If tindex == 0 Then GoTo NextStep
  75. sindex = tindex - 1
  76. tsub = StrSub ( currwind, tindex +1, 1 )
  77. If !StrICmp ( tsub, "(" ) == 0 && !StrICmp ( tsub, "-" ) == 0 Then GoTo DelimIndex
  78. If tindex > 0 Then currwind = StrSub ( currwind, 1, sindex )
  79.  
  80. ; --- Using browse-type dialog boxes, get the application executable, and any
  81. ;     options (iconized, files to load, etc.)
  82.  
  83. :NextStep
  84. loadname = nul
  85. filename = nul
  86. wbdfile = "wsfile1.wbd"
  87. filevar = "Application"
  88.  
  89. :GetFile
  90. icon = 0
  91. load = 1
  92. DirChange ( "c:\" )
  93. If StrICmp ( filevar, "Application" ) == 0 Then gFile = "*.exe"
  94.  
  95. :FileLoop
  96. DialogBox ( "%wsver% %filevar% File Information", wbdfile )
  97. If StrICmp ( gFile, nul ) == 0 Then GoTo FileLoop
  98. dir = DirGet ()
  99. checkfile = StrCat ( dir, gFile )
  100. PathTrue = FileLocate ( checkfile )
  101. If StrICmp ( PathTrue, nul ) == 0 Then GoTo FileLoop
  102. If icon == 1 Then Status = "Icon"
  103. If StrICmp ( filevar, "Application" ) == 0 Then filename = checkfile
  104. If StrICmp ( filevar, "Load" ) == 0 Then loadname = checkfile
  105. If Load != 2 Then GoTo NoMoreFiles
  106. filevar = "Load"
  107. wbdfile = "wsfile2.wbd"
  108. GoTo GetFile
  109.  
  110. ; --- If this is the first app in the space, add the workspace name to the
  111. ;     library.  If not, go ahead and write the app data to the ini file
  112.  
  113. :NoMoreFiles 
  114. If load == 3 Then loadname = "?"     
  115. If count != 1 || replace == @YES Then GoTo WriteIni
  116. FileRename ( spacelib, spacebak )
  117. fHandle1 = FileOpen ( spacebak, "READ" )
  118. fHandle2 = FileOpen ( spacelib, "WRITE" )
  119. newline = grpname
  120.  
  121. :GroupLoop
  122. line = FileRead ( fHandle1 )
  123. If line == "*EOF*" Then GoTo EndGroup
  124. If StrICmp ( newline, line ) == 1 Then GoTo WriteLine
  125. nextline = line
  126. line = newline
  127. newline = nextline
  128.  
  129. :WriteLine
  130. FileWrite ( fHandle2, line )
  131. GoTo GroupLoop
  132.  
  133. :EndGroup
  134. FileClose ( fHandle1 )
  135. FileWrite ( fHandle2, newline )
  136. FileClose ( fHandle2 )
  137. FileDelete ( spacebak )
  138.  
  139. :WriteIni
  140. key1 = "App%count%"
  141. key2 = "Status%count%"
  142. key3 = "Load%count%"
  143. key4 = "Pos%count%"
  144. key5 = "Win%count%"
  145. IniWritePvt ( grpname, key1, filename, "wspacer.ini" )
  146. IniWritePvt ( grpname, key2, status, "wspacer.ini" )
  147. IniWritePvt ( grpname, key3, loadname, "wspacer.ini" )
  148. IniWritePvt ( grpname, key4, currpos, "wspacer.ini" )
  149. IniWritePvt ( grpname, key5, currwind, "wspacer.ini" )
  150. q = AskYesNo ( wsver, "Add another application?" )
  151. If q == @NO Then GoTo EndWBT
  152. count = count + 1
  153. GoTo WindName
  154.  
  155. ; --- when finished everything, if the space is new, exit.  If it is a
  156. ;     replacement of an existing space, make sure that any old data
  157. ;     remaining does not get read into the new space.
  158.  
  159. :EndWBT
  160. If replace == @NO Then GoTo Done
  161. ncount = count + 1
  162. key1 = "App%ncount%"
  163. line = IniReadPvt ( grpname, key1, nul, "wspacer.ini" )
  164. If StrICmp ( line, nul ) == 0 Then GoTo Done
  165. IniWritePvt ( grpname, key1, nul, "wspacer.ini" )
  166.  
  167. :Done
  168. Message ( wsver, "Your workspace (%count% applications) has been created")
  169. Return
  170.  
  171. :Covers
  172. q = AskYesNo ( wsver, "This window hides one already in the WorkSpace! %tf% Is that OK?" )
  173. If q == @YES Then GoTo GoAhead
  174. q = AskYesNo ( wsver, " Choose another application?")
  175. If q == @YES Then GoTo WindName
  176. count = count - 1
  177. GoTo EndWBT
  178.  
  179.