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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)moduledbdi.tcl    /main/titanic/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)moduledbdi.tcl    /main/titanic/2   3 Oct 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "moduledbpa.tcl"
  13. # End user added include file section
  14.  
  15.  
  16. Class ModuleDBDirInfo : {GCObject} {
  17.     constructor
  18.     method destructor
  19.     method initialize
  20.     method getModuleDBPathInfo
  21.     method getModPathInfo
  22.     method setModPathInfo
  23.     method removeModPathInfo
  24.     attribute moduleDir
  25.     attribute modPathInfo
  26. }
  27.  
  28. constructor ModuleDBDirInfo {class this i_moduleDir} {
  29.     set this [GCObject::constructor $class $this]
  30.     $this moduleDir $i_moduleDir
  31.     $this modPathInfo [Dictionary new]
  32.     # Start constructor user section
  33.     $this initialize
  34.     # End constructor user section
  35.     return $this
  36. }
  37.  
  38. method ModuleDBDirInfo::destructor {this} {
  39.     # Start destructor user section
  40.     # End destructor user section
  41. }
  42.  
  43. method ModuleDBDirInfo::initialize {this} {
  44.     set moduleDir [$this moduleDir]
  45.     set modules [glob -nocomplain [file join $moduleDir *]]
  46.     foreach module $modules {
  47.         # Mind the slash/backslash problems with glob ...
  48.         set moduleName [file tail $module]
  49.         set modulePath [path_name concat $moduleDir $moduleName]
  50.         set propFile \
  51.             [path_name concat $modulePath properties properties]
  52.         if {!([file isfile $propFile] && [file readable $propFile])} {
  53.             continue
  54.         }
  55.         set modPathInfo [ModuleDBPathInfo new $modulePath]
  56.         if $win95 {
  57.             set moduleNameAsKey [string tolower $moduleName]
  58.         } else {
  59.             set moduleNameAsKey $moduleName
  60.         }
  61.         $this setModPathInfo $moduleNameAsKey $modPathInfo
  62.     }
  63. }
  64.  
  65. method ModuleDBDirInfo::getModuleDBPathInfo {this moduleName} {
  66.     if $win95 {
  67.         set moduleNameAsKey [string tolower $moduleName]
  68.     } else {
  69.         set moduleNameAsKey $moduleName
  70.     }
  71.     set modPathInfo [$this getModPathInfo $moduleNameAsKey]
  72.     if {$modPathInfo == ""} {
  73.         set modulePath [path_name concat [$this moduleDir] $moduleName]
  74.         set modPathInfo [ModuleDBPathInfo new $modulePath]
  75.         $this setModPathInfo $moduleNameAsKey $modPathInfo
  76.     }
  77.     return $modPathInfo
  78. }
  79.  
  80. # Do not delete this line -- regeneration end marker
  81.  
  82. method ModuleDBDirInfo::getModPathInfo {this moduleName} {
  83.     return [[$this modPathInfo] set $moduleName]
  84. }
  85.  
  86. method ModuleDBDirInfo::setModPathInfo {this moduleName newModPathInfo} {
  87.     [$this modPathInfo] set $moduleName $newModPathInfo
  88. }
  89.  
  90. method ModuleDBDirInfo::removeModPathInfo {this moduleName} {
  91.     [$this modPathInfo] unset $moduleName
  92. }
  93.  
  94.