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

  1.  
  2. #---------------------------------------------------------------------------
  3. #
  4. #      (c)     Cayenne Software Inc. 1996
  5. #
  6. #      File:              @(#)delphiconfig.tcl    /main/titanic/3 
  7. #      Author:            resc
  8. #      Description:        Config file for Delphi
  9. #---------------------------------------------------------------------------
  10. # SccsId = @(#)delphiconfig.tcl    /main/titanic/3    1 Oct 1997   18 Mar 1997 Copyright 1996 Cayenne Software Inc.
  11.  
  12. source [m4_path_name tcl cginit.tcl]
  13.  
  14. require caynutil.tcl
  15.  
  16. global thisModulesName
  17. set thisModulesName "delphi"
  18.  
  19. #
  20. #    Return base directory to install stuff
  21. #
  22. proc moduleBaseDir {name} {
  23.         set modHdlr [ModuleHandler new]
  24.         if {$modHdlr == ""} {
  25.                 return ""
  26.         }
  27.     $modHdlr setCurrentContext
  28.         set spec [$modHdlr getModuleSpec $name]
  29.         if {$spec != ""} {
  30.                 return [$spec path]
  31.         }
  32.         return ""
  33. }
  34.  
  35. #
  36. #    Import Delphi VCL library
  37. #
  38. proc importBuiltins {dir} {
  39.     set cc [ClientContext::global]
  40.     set phaseV [$cc currentPhase]
  41.     foreach sys {DelphiVCL} {
  42.         puts ""
  43.         set sysV [$phaseV findSystemVersion $sys "system"]
  44.         if {![$sysV isNil]} {
  45.             puts "System '$sys' already exists: not configuring it again."
  46.             continue
  47.         }
  48.          
  49.         global thisModulesName
  50.         set srcDir [location [moduleBaseDir $thisModulesName] $dir]
  51.         set file [path_name concat $srcDir $sys tcl]
  52.         if {! [file exist $file]} {
  53.             puts "'Configure Delphi Environment' failed:\
  54.                 file '$file' not found."
  55.         } else {
  56.             puts "Importing system '$sys' ... (this action will take some time)"
  57.             source $file
  58.             puts ""
  59.         }
  60.     }
  61. }
  62.                                                                                                       
  63. #
  64. # Copy other Pascal files
  65. #
  66. proc m4copydir {dir} {
  67.     set save_dir [pwd]
  68.     global thisModulesName
  69.     set subdir [location [moduleBaseDir $thisModulesName] $dir]
  70.  
  71.     if [catch {cd $subdir} msg] {
  72.         puts "Error: $subdir not found"
  73.         return
  74.     }
  75.  
  76.     set files [glob -nocomplain ClassDict.pas *.sru]
  77.  
  78.     set cc [ClientContext::global]
  79.     set dest [location [[$cc currentPhase] path] src]
  80.     if {! [file exist $dest]} {
  81.         mkdir -path [list $dest]
  82.     }
  83.     set pasFile [path_name concat $dest ClassDict pas]
  84.     if [file exist $pasFile] {
  85.         puts "Overwriting file '$pasFile' ..."
  86.     }
  87.     foreach file $files {
  88.         puts "Copying $file to $dest ..."
  89.         BasicFS::copyFile $file [location $dest $file]
  90.     }
  91.     cd $save_dir
  92. }    
  93.  
  94.  
  95. proc makeCfgSystems {} {
  96.     set cc [ClientContext::global]
  97.     set configV [$cc currentConfig]
  98.     set phaseV [$cc currentPhase]
  99.     foreach sys {DelphiVCL} {
  100.     puts ""
  101.     set sysV [$phaseV findSystemVersion $sys "system"]
  102.     if {[$sysV isNil]} {
  103.         puts "Creating System '$sys'."
  104.         set sysV [$phaseV createSystemVersion $sys "cl" "system" $configV]
  105.         $sysV freeze "Configure Delphi"
  106.     } elseif {[$sysV status] == "working"} {
  107.         $sysV freeze "Configure Delphi"
  108.     }
  109.     }
  110. }
  111.  
  112.  
  113.  
  114. #
  115. # Main part
  116. #
  117.  
  118. puts "Configure Delphi Environment"
  119. puts "============================\n"
  120.  
  121. set cc [ClientContext::global]
  122. set phaseType [[[$cc currentPhase] phase] type]
  123. switch $phaseType {
  124.     "ObjectDesign" {
  125.        importBuiltins [location tcl]
  126.         puts "'Configure Delphi Environment' finished for phase '${phaseType}'."
  127.     }
  128.     "Implementation" {
  129.        m4copydir [location config]
  130.        makeCfgSystems
  131.         puts "'Configure Delphi Environment' finished for phase '${phaseType}'."
  132.     }
  133.     default    {
  134.         puts "'Configure Delphi Environment' failed: invalid phase type '${phaseType}'."
  135.     }
  136. }
  137.  
  138.