home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / corel / Scripts / appled.csc < prev    next >
Text File  |  1998-02-06  |  7KB  |  233 lines

  1. rem Tento skript upravφ aplikace dostupnΘ ze spouÜt∞Φe aplikacφ.
  2. rem AppLEd.csc pro verzi 7.0 vytvo°en 20.Φervna 1996
  3. rem Kopie souboru Corelapp.ini nazvanß Corelapp.bak je vytvo°ena automaticky.
  4. rem Copyright 1998 Corel Corporation. VÜechna prßva vyhrazena.
  5.  
  6.  
  7. #INCLUDE "ScpConst.csi"
  8. #define AppReg "SOFTWARE\corel\CORELDRAW\7.0"
  9.  
  10. ' Constants
  11. GLOBAL CONST APPS_CATEGORY$ = "[Applications]"
  12. GLOBAL CONST APPINCR%=25
  13.  
  14. ' Globals
  15. GLOBAL MaxNApp%
  16. MaxNApp%=APPINCR%
  17. GLOBAL AppName$(MaxNApp%), AppPath$(MaxNApp%), NumberOfApps%
  18.  
  19. ' Main Dialog
  20. BEGIN DIALOG OBJECT Dialog1 308, 165, "Application Launcher Editor", SUB Dialog1Sub
  21.     LISTBOX  6, 8, 143, 148, .AppList
  22.     OKBUTTON  216, 143, 40, 14, .OK1
  23.     CANCELBUTTON  260, 143, 40, 14, .Cancel1
  24.     TEXT  162, 8, 118, 8, .AppNameText, "Application Name:"
  25.     TEXTBOX  160, 17, 140, 13, .AppName
  26.     TEXT  162, 43, 127, 8, .PathText, "Application Path:"
  27.     TEXTBOX  160, 52, 140, 13, .AppPath
  28.     PUSHBUTTON  160, 96, 140, 14, .AddApp, "Add New Application"
  29.     PUSHBUTTON  160, 116, 140, 14, .RemoveApp, "Remove Application"
  30.     PUSHBUTTON  253, 69, 46, 14, .Browse, "Browse"
  31. END DIALOG
  32.  
  33. 'First, find the INI file
  34. GLOBAL ConfigDir AS STRING
  35. ConfigDir$ = REGISTRYQUERY(HKEY_LOCAL_MACHINE%,AppReg,"ConfigDir")
  36.  
  37. 'Add trailing '\' if absent
  38. IF LEFT$(ConfigDir$,1) <> "\" THEN ConfigDir$ = ConfigDir$ + "\"
  39.  
  40. 'Open the file
  41. OPEN ConfigDir$ + "Corelapp.ini" FOR INPUT AS 1
  42.  
  43. 'Read data until category header is found
  44. DIM ReadData AS STRING
  45. DO 
  46.     INPUT #1, ReadData$
  47. LOOP UNTIL EOF(1) OR ReadData$ = APPS_CATEGORY$
  48.  
  49. ' If we're not at the end, then read applications until another category is found.
  50. DIM EqualPos AS LONG
  51. IF NOT EOF(1) THEN
  52.     DO
  53.         INPUT #1, ReadData$
  54.         EqualPos = INSTR(ReadData$,"=")
  55.         IF EqualPos <> 0 THEN
  56.             NumberOfApps% = NumberOfApps% + 1
  57.             IF(NumberOfApps%>MaxNApp%) THEN
  58.               ' Increase size of App array
  59.                 MaxNApp%=MaxNApp%+APPINCR%
  60.               REDIM PRESERVE AppName$(MaxNApp%)
  61.               REDIM PRESERVE AppPath$(MaxNApp%)
  62.           ENDIF
  63.             AppName$(NumberOfApps%) = LEFT$(ReadData$,EqualPos - 1)
  64.             AppPath$(NumberOfApps%) = MID$(ReadData$,EqualPos+1) ' Skip the =
  65.         ENDIF
  66.     LOOP UNTIL EOF(1) OR LEFT(ReadData$, 1) = "["
  67. ENDIF
  68.  
  69. CLOSE
  70.  
  71. ' Edit the applications list
  72. DIM DialogReturnVal AS INTEGER
  73. DialogReturnVal% = DIALOG(Dialog1)
  74.  
  75. ' End program on cancel
  76. IF DialogReturnVal% = MSG_CANCEL% THEN END
  77.  
  78. ' Keep a backup file
  79. RENAME ConfigDir$ + "Corelapp.ini", ConfigDir$ + "Corelapp.bak"
  80.  
  81. ' Open input and output files
  82. OPEN ConfigDir$ + "Corelapp.bak" FOR INPUT AS 1
  83. OPEN ConfigDir$ + "Corelapp.ini" FOR OUTPUT AS 2
  84.  
  85. 'Read data until category header is found, copying it to the output file
  86. DO 
  87.     INPUT #1, ReadData$
  88.     PRINT #2, ReadData$
  89. LOOP UNTIL EOF(1) OR ReadData$ = APPS_CATEGORY$
  90.  
  91. ' If there was no Applications category, we must create one.
  92. IF ReadData$ <> APPS_CATEGORY$ THEN
  93.     'Skip a line
  94.     PRINT #2, ""
  95.     PRINT #2, APPS_CATEGORY$
  96. ENDIF
  97.  
  98. ' If we're not at the end, then read applications until another category is found.
  99. IF NOT EOF(1) THEN
  100.     DO
  101.         INPUT #1, ReadData$
  102.     LOOP UNTIL EOF(1) OR LEFT(ReadData$, 1) = "["
  103. ELSE
  104.     ' So as to not duplicate anything
  105.     ReadData$ = ""
  106. ENDIF
  107.  
  108. 'Now, write the new applications to the file
  109. DIM X AS INTEGER
  110. FOR X% = 1 TO NumberOfApps%
  111.     PRINT #2, AppName$(X%) + "=" + AppPath$(X%)
  112. NEXT X%
  113.  
  114. 'Finally, write the rest of the data
  115.  
  116. 'Skip a line
  117. PRINT #2, ""
  118.  
  119. 'Write the category
  120. PRINT #2, ReadData$
  121.  
  122. ' Write left over
  123. DO UNTIL EOF(1)
  124.     INPUT #1, ReadData$
  125.     PRINT #2, ReadData$
  126. LOOP
  127.  
  128. 'Close files
  129. CLOSE
  130.  
  131. 'End the program
  132. END
  133.  
  134. 'Event handler for main dialog.
  135. SUB Dialog1Sub(BYVAL ControlID%, BYVAL Event%)
  136.     DIM Selection AS INTEGER
  137.     DIM X AS INTEGER
  138.     DIM Filename AS STRING
  139.  
  140.     Selection% = Dialog1.AppList.GetSelect()
  141.     SELECT CASE Event%
  142.         CASE EVENT_INITIALIZATION
  143.             Dialog1.AppList.SetArray AppName$
  144.  
  145.         CASE EVENT_MOUSE_CLICK
  146.             SELECT CASE ControlID%
  147.                 CASE Dialog1.AppList.GetID()
  148.                     IF Selection% <> 0 THEN
  149.                         'Change the text boxes according to the selection
  150.                         Dialog1.AppName.SetText(AppName$(Selection%))
  151.                         Dialog1.AppPath.SetText(AppPath$(Selection%))
  152.                     ENDIF
  153.                 CASE Dialog1.AddApp.GetID()
  154.                     'Add a new application
  155.                     NumberOfApps% = NumberOfApps% + 1
  156.                     AppName$(NumberOfApps%) = "<New App>"
  157.                     AppPath$(NumberOfApps%) = "<New App>"
  158.                     Dialog1.AppList.AddItem AppName$(NumberOfApps%), NumberOfApps%
  159.                     Dialog1.AppList.SetSelect(NumberOfApps%)
  160.                     Dialog1.AppName.SetText(AppName$(NumberOfApps%))
  161.                     Dialog1.AppPath.SetText(AppPath$(NumberOfApps%))
  162.                     ' Necessary for control enabling
  163.                     Selection% = NumberOfApps%
  164.                 CASE Dialog1.RemoveApp.GetID()
  165.                     IF Selection% <> 0 THEN
  166.                         Selection% = Dialog1.AppList.GetSelect()
  167.                         'Cycle through the array, replacing each element with the next,
  168.                         'starting with the deleted one
  169.                         FOR X% = Selection% TO NumberOfApps% - 1                
  170.                             AppName$(X) = AppName$(X + 1)
  171.                             AppPath$(X) = AppPath$(X + 1)
  172.                         NEXT X%
  173.                         'Delete the last element
  174.                         AppName$(NumberOfApps%) = ""
  175.                         AppPath$(NumberOfApps%) = ""
  176.                         'Remove the item from the list
  177.                         Dialog1.AppList.RemoveItem(Selection%)
  178.                         'Decrement the Applications count
  179.                         NumberOfApps% = NumberOfApps% - 1
  180.                         'Reset the selection
  181.                         IF Selection% > NumberOfApps% THEN
  182.                             Selection% = NumberOfApps%
  183.                         ENDIF
  184.                         Dialog1.AppList.SetSelect(Selection%)
  185.                         Dialog1.AppName.SetText(AppName$(Selection%))
  186.                         Dialog1.AppPath.SetText(AppPath$(Selection%))
  187.                     ENDIF
  188.                 CASE Dialog1.Browse.GetID()
  189.                     IF Selection% <> 0 THEN
  190.                         Filename$ = GETFILEBOX("Program Files (*.exe)|*.exe", "Choose an application for " + AppName$(Selection%))
  191.                         IF Filename$ <> "" THEN
  192.                             AppPath$(Selection%) = FileName$
  193.                             Dialog1.AppPath.SetText(FileName$)
  194.                         ENDIF
  195.                     ENDIF
  196.             END SELECT
  197.  
  198.         CASE EVENT_CHANGE_IN_CONTENT
  199.             SELECT CASE ControlID%
  200.                 CASE Dialog1.AppName.GetID()
  201.                     IF Selection% <> 0 THEN
  202.                         ' Change the name both in the array and in the list box
  203.                         AppName$(Selection%) = Dialog1.AppName.GetText()
  204.                         Dialog1.AppList.RemoveItem(Selection%)
  205.                         Dialog1.AppList.AddItem AppName$(Selection%),Selection%
  206.                         Dialog1.AppList.SetSelect(Selection%)
  207.                     ENDIF
  208.                 CASE Dialog1.AppPath.GetID()
  209.                     IF Selection% <> 0 THEN
  210.                         'Change the name in the array.
  211.                         AppPath$(Selection%) = Dialog1.AppPath.GetText()
  212.                     ENDIF
  213.             END SELECT
  214.     END SELECT
  215.  
  216.     'Enable/disable controls
  217.     IF Selection% = 0 THEN
  218.         Dialog1.AppName.SetText("")
  219.         Dialog1.AppPath.SetText("")
  220.         Dialog1.AppName.Enable FALSE
  221.         Dialog1.AppPath.Enable FALSE
  222.         Dialog1.RemoveApp.Enable FALSE
  223.         Dialog1.Browse.Enable FALSE
  224.     ELSE
  225.         Dialog1.AppName.Enable TRUE
  226.         Dialog1.AppPath.Enable TRUE
  227.         Dialog1.RemoveApp.Enable TRUE
  228.         Dialog1.Browse.Enable TRUE
  229.     ENDIF
  230.  
  231. END SUB
  232.         
  233.