home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / delphiimpo.tcl < prev    next >
Text File  |  1997-08-26  |  4KB  |  131 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)delphiimpo.tcl    /main/titanic/7
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)delphiimpo.tcl    /main/titanic/7   26 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. require delphi_msg.tcl
  14. require delphioopl.tcl
  15. require delphitgt.tcl
  16. require delphigtor.tcl
  17.  
  18. # End user added include file section
  19.  
  20. require "importer.tcl"
  21.  
  22. Class DelphiImporter : {Importer} {
  23.     constructor
  24.     method destructor
  25.     method generateOopl
  26.     method getOoplFileTypesToGenerateFor
  27.     method getFileNamesNotToGenerateFor
  28. }
  29.  
  30. constructor DelphiImporter {class this} {
  31.     set this [Importer::constructor $class $this]
  32.     # Start constructor user section
  33.     # End constructor user section
  34.     return $this
  35. }
  36.  
  37. method DelphiImporter::destructor {this} {
  38.     # Start destructor user section
  39.     # End destructor user section
  40.     $this Importer::destructor
  41. }
  42.  
  43. method DelphiImporter::generateOopl {this classes} {
  44.  
  45.     set fileHandler [DPFileHandler new]
  46.     $fileHandler sourceTclFiles
  47.     set selectedClasses [List new]
  48.  
  49.     set acvar [string tolower [m4_var get M4_delphi_autoconvert]]
  50.     set autoconvert [expr {($acvar == "1") || ($acvar == "on") || ($acvar == "yes")}]
  51.  
  52.     foreach class $classes {
  53.         if [$class isExternal] {
  54.             continue
  55.         }
  56.  
  57.         if {[$class getName] == ""} {
  58.             m4_warning $W_NONAMECLASS
  59.         } else {
  60.             $selectedClasses append $class
  61.  
  62.             # Auto conversion of forms to txt
  63.             #
  64.             if {([$class isForm]) && ($autoconvert)} {
  65.                 set fileV [fstorage::getFileVersion "[$class getUnitName].txt"]
  66.                 if {![$fileV isNil]} {
  67.                     set path [$fileV path]
  68.                     set len [string length $path]
  69.                     incr len -4
  70.                     set dfmfile "[string range $path 0 $len]dfm"
  71.                     system "formconv $dfmfile"
  72.                 }
  73.             }
  74.         }
  75.     }
  76.  
  77.     set delphiGenerator [DPGenerator new]
  78.     $delphiGenerator ooplModel [$this ooplModel]
  79.     set generatedSections [$delphiGenerator generate $selectedClasses]
  80.  
  81.     $generatedSections foreach class classToSection {
  82.         $classToSection foreach type section {
  83.             set written [$fileHandler writeSectionToFile $section $class $type]
  84.  
  85.             # Auto conversion of txt to forms
  86.             #
  87.             if {$written && ($type == "txt") && $autoconvert} {
  88.                 set fileV [fstorage::getFileVersion "[$class getUnitName].txt"]
  89.                 if {![$fileV isNil]} {
  90.                     system "formconv [$fileV path]"
  91.                 }
  92.             }
  93.         }
  94.     }
  95.  
  96.     # Special files
  97.  
  98.     set import_new [lempty [$this targetObjects]]
  99.  
  100.     if $import_new {
  101.         set specialFileList [$fileHandler getSpecialFiles]
  102.     } else {
  103.         set specialFileList [List new]
  104.         set selectedFiles [$this targetObjects]
  105.         [$fileHandler getSpecialFiles] foreach specialFile {
  106.             if { [lsearch $selectedFiles $specialFile] != -1 } {
  107.                 $specialFileList append $specialFile
  108.             }
  109.         }
  110.     }
  111.  
  112.     if { ![$specialFileList empty] } {
  113.         if {[M4CheckManager::getErrorCount] > 0} {
  114.             m4_error $E_NOSPECFILES
  115.         } else {
  116.             $delphiGenerator generateSpecialFiles $specialFileList
  117.         }
  118.     }
  119. }
  120.  
  121. method DelphiImporter::getOoplFileTypesToGenerateFor {this} {
  122.     return [list ${DPFileHandler::PASType} ${DPFileHandler::DFMType} ${DPFileHandler::DPRType}]
  123. }
  124.  
  125. method DelphiImporter::getFileNamesNotToGenerateFor {this} {
  126.     return "[getCurrentSystemName]"
  127. }
  128.  
  129. # Do not delete this line -- regeneration end marker
  130.  
  131.