home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / custdefsar.tcl < prev    next >
Text File  |  1997-04-24  |  5KB  |  190 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)custdefsar.tcl    /main/titanic/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)custdefsar.tcl    /main/titanic/1   24 Apr 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "custobjvie.tcl"
  13. require "config.tcl"
  14. # End user added include file section
  15.  
  16. require "custedarea.tcl"
  17.  
  18. Class CustDefsArea : {CustEdArea BrowsView} {
  19.     method destructor
  20.     constructor
  21.     method readUserObjects
  22.     method readLevelObjects
  23.     method read
  24.     method readDefs
  25.     method readModules
  26.     method readConfig
  27.     method parseDefs
  28.     method deleteObjects
  29.     method writeObject
  30.     method getObjects
  31.     method clearArea
  32.     method dropEvent
  33. }
  34.  
  35. method CustDefsArea::destructor {this} {
  36.     # Start destructor user section
  37.     # End destructor user section
  38.     $this CustEdArea::destructor
  39. }
  40.  
  41. constructor CustDefsArea {class this name} {
  42.     set this [BrowsView::constructor $class $this $name]
  43.     set this [CustEdArea::constructor $class $this $name]
  44.  
  45.     global classCount
  46.     $this filter [CustObjViewFilter new CustObjViewFilter$classCount $this]
  47.     incr classCount
  48.  
  49.     return $this
  50. }
  51.  
  52. method CustDefsArea::readUserObjects {this} {
  53.     # not supported at user level
  54. }
  55.  
  56. method CustDefsArea::readLevelObjects {this} {
  57.     set levelIndex [expr [llength [$this _path]] - 1]
  58.     $this read [lindex [$this _path] $levelIndex] [$this _level]
  59. }
  60.  
  61. method CustDefsArea::read {this object type} {
  62.     set fileName [$this _curName]
  63.     set fileType [$this _curType]
  64.     $this parseLines [$this readConfig $object $fileName $fileType] $type
  65.     $this readModules $object parseLines $fileName $fileType $type
  66. }
  67.  
  68. method CustDefsArea::readDefs {this object type} {
  69.     set fileName [$this _curName]
  70.     set fileType [$this _curType]
  71.     set nameLast [expr [string last locs $fileName] - 1]
  72.     set typeLast [expr [string last locs $fileType] - 1]
  73.     set defsName [string range $fileName 0 $nameLast]defs
  74.     set defsType [string range $fileType 0 $typeLast]defs
  75.     $this parseDefs [$this readConfig $object $defsName $defsType] $type
  76.     $this readModules $object parseDefs $defsName $defsType $type
  77. }
  78.  
  79. method CustDefsArea::readModules {this obj parse name type level} {
  80.     if {![$obj isA Corporate]} {
  81.         return
  82.     }
  83.     set moduleHdlr [.main moduleHdlr]
  84.     foreach module [$moduleHdlr moduleSpecSet] {
  85.         foreach file [$moduleHdlr getFiles etc $name.$type $module] {
  86.             $this _module [$module name]
  87.             $this $parse [readConfigurationFile $file] $level
  88.         }
  89.     }
  90.     $this _module ""
  91. }
  92.  
  93. method CustDefsArea::readConfig {this obj name type} {
  94.     set custFile [CustFileUtilities::find $obj $name $type]
  95.     if {"$custFile" == ""} {
  96.         return ""
  97.     }
  98.     if [$obj isA Corporate] {
  99.         if {![file exists $custFile]} {
  100.             return ""
  101.         }
  102.         set lineList [readConfigurationFile $custFile]
  103.     } else {
  104.         set tmpFile [args_file {}]
  105.         $custFile downLoad $tmpFile
  106.         set lineList [readConfigurationFile $tmpFile]
  107.         unlink $tmpFile
  108.     }
  109.     return $lineList
  110. }
  111.  
  112. method CustDefsArea::parseDefs {this lines level} {
  113.     # implemented for LocEdArea classes, for other derived classes empty
  114. }
  115.  
  116. method CustDefsArea::deleteObjects {this objs} {
  117.     set index 0
  118.     $this CustEdArea::deleteObjects $objs
  119.     foreach obj [$this objectSet] {
  120.         $obj index $index
  121.         incr index
  122.     }
  123. }
  124.  
  125. method CustDefsArea::writeObject {this obj fid} {
  126.     $obj writeObject $fid
  127. }
  128.  
  129. method CustDefsArea::getObjects {this} {
  130.     return [$this objectSet]
  131. }
  132.  
  133. method CustDefsArea::clearArea {this} {
  134.     foreach obj [$this objectSet] {
  135.         $obj delete
  136.     }
  137.     .main selectionChanged
  138. }
  139.  
  140. method CustDefsArea::dropEvent {this droppedObject srcIsDst droppedAfterObject droppedForObject} {
  141.     if {$srcIsDst == 0} {
  142.         wmtkerror "Drag & drop between tools is not supported (yet)."
  143.         return
  144.     }
  145.     if {![$droppedObject editable]} {
  146.         wmtkerror "Object not moved, reason: object not editable."
  147.         return
  148.     }
  149.     if {$droppedForObject != ""} {
  150.         if {[$droppedForObject specLevel] != [$droppedObject specLevel]} {
  151.         wmtkerror "Object can not be moved to a higher level."
  152.         return
  153.         }
  154.     }
  155.     set newIndex 0
  156.     set oldIndex [$droppedObject index]
  157.     if {$droppedAfterObject != ""} {
  158.         set newIndex [$droppedAfterObject index]
  159.         if {$newIndex < $oldIndex} {
  160.             incr newIndex
  161.         }
  162.     }
  163.     foreach obj [$this objectSet] {
  164.         set objIndex [$obj index]
  165.         if {$objIndex >= $newIndex && $objIndex < $oldIndex} {
  166.             $obj index [expr $objIndex + 1]
  167.         } elseif {$objIndex > $oldIndex && $objIndex <= $newIndex} {
  168.             $obj index [expr $objIndex - 1]
  169.         }
  170.     }
  171.     $droppedObject index $newIndex
  172.     $this sort -command "CustDefsArea::compare"
  173.     $this isChanged 1
  174. }
  175.  
  176. proc CustDefsArea::compare {objA objB} {
  177.     set idxA [$objA index]
  178.     set idxB [$objB index]
  179.     if {$idxA > $idxB} {
  180.         return 1
  181.     }
  182.     if {$idxB > $idxA} {
  183.         return -1
  184.     }
  185.     return 0
  186. }
  187.  
  188. # Do not delete this line -- regeneration end marker
  189.  
  190.