home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / vwinterfac.tcl < prev    next >
Text File  |  1997-06-19  |  3KB  |  116 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)vwinterfac.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)vwinterfac.tcl    /main/titanic/3   19 Jun 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require stgentor.tcl
  13. require platform.tcl
  14. # End user added include file section
  15.  
  16. require "stinterfac.tcl"
  17.  
  18. Class VWInterface : {STInterface} {
  19.     constructor
  20.     method destructor
  21.     method startST
  22. }
  23.  
  24. constructor VWInterface {class this name} {
  25.     set this [STInterface::constructor $class $this $name]
  26.     # Start constructor user section
  27.     $this fileHandler [STFileHandler new]
  28.     $this generator [STGenerator new]
  29.     # End constructor user section
  30.     return $this
  31. }
  32.  
  33. method VWInterface::destructor {this} {
  34.     # Start destructor user section
  35.     # End destructor user section
  36.     $this STInterface::destructor
  37. }
  38.  
  39.  
  40. # Starts Visualworks. Tries to locate the VisualWorks 
  41. # installation directory by scanning the PATH. If that is found
  42. # tries to locate the image by reading VWIMAGEPATH.
  43. # If it is not set the standard image is used.
  44. # File name handling is Unix specific.
  45. #
  46. method VWInterface::startST {this} {
  47.     if [catch { set envPath $env(PATH) }] {
  48.     wmtkerror "environment variable PATH not found"
  49.     return
  50.     }
  51.  
  52.     set visualPath ""
  53.     # visualKey is used to recognize the VW installation in the PATH
  54.     set visualKey "visual"
  55.  
  56.     if $win95 {
  57.     set pathSep "\\"
  58.     set envPathSep ";"
  59.     set visualExecName "vw.exe"
  60.     } else {
  61.     set pathSep "/"
  62.     set envPathSep ":"
  63.     set visualExecName "visualworks"
  64.     }
  65.  
  66.     foreach pathSpec [split $envPath $envPathSep] {
  67.     set dirList [split $pathSpec $pathSep]
  68.     set index [lsearch -exact $dirList $visualKey]
  69.     if { $index == -1 } {
  70.         set index [lsearch -exact $dirList [string toupper $visualKey]]
  71.     }
  72.     if { $index != -1 } {
  73.         # found it! find root: directories up to and including key
  74.         set visualPath [join [lrange $dirList 0 $index] $pathSep]
  75.     }
  76.     }    
  77.  
  78.     if { $visualPath == "" } {
  79.     wmtkerror "VisualWorks not found in PATH"
  80.     return
  81.     }
  82.  
  83.     set visualExec [path_name concat [path_name concat $visualPath bin] \
  84.                                  $visualExecName]
  85.  
  86.     if { ![file exists $visualExec] } {
  87.     wmtkerror "VisualWorks executable not found"
  88.     return
  89.     }
  90.  
  91.     if [catch { set imagePath $env(VWIMAGEPATH) }] {
  92.     wmtkwarning "VWIMAGEPATH not set, using standard image"
  93.     set imagePath [path_name concat $visualPath image]
  94.     }
  95.  
  96.     if { ![file exists $imagePath] } {
  97.     wmtkerror "Image path not found"
  98.     return
  99.     }
  100.  
  101.     set imageFile [path_name concat $imagePath visual im]
  102.  
  103.     if { ![file exists $imageFile] } {
  104.     wmtkerror "Image file not found"
  105.     return
  106.     }
  107.  
  108.     # All set, do it
  109.     system "$visualExec $imageFile &" 
  110.  
  111. # Do not delete this line -- regeneration end marker
  112.  
  113. VWInterface new .main.vw
  114.  
  115.