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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)mtitemkeep.tcl    /main/titanic/5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)mtitemkeep.tcl    /main/titanic/5   20 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require mtitem.tcl
  13. # End user added include file section
  14.  
  15.  
  16. Class MTItemKeeper : {Object} {
  17.     constructor
  18.     method destructor
  19.     method createConflictingItemObjects
  20. }
  21.  
  22. constructor MTItemKeeper {class this name} {
  23.     set this [Object::constructor $class $this $name]
  24.     # Start constructor user section
  25.     # End constructor user section
  26.     return $this
  27. }
  28.  
  29. method MTItemKeeper::destructor {this} {
  30.     # Start destructor user section
  31.     # End destructor user section
  32. }
  33.  
  34. method MTItemKeeper::createConflictingItemObjects {this} {
  35.  
  36.     if {![isCommand [$this toRepObj]]} {
  37.         # no conflict this object is not present in the 'to' version
  38.         return
  39.     }
  40.  
  41.     global classCount
  42.         set name [.main infoView]
  43.  
  44.     set from [$this fromRepObj]
  45.     set to [$this toRepObj]
  46.     set base [$this baseRepObj]
  47.  
  48.     if [.main import] {
  49.         set scope(scopePhaseRef) phaseRef
  50.         set scope(scopePhaseDef) phaseDef
  51.     } else {
  52.         set scope(scopePhaseRef) phase
  53.         set scope(scopePhaseDef) phase
  54.     }
  55.     set scope(scopeSystem) system
  56.     set scope(scopeFile) file
  57.  
  58.     # show the itemConflicts (scope)
  59.     foreach fromItem [$from definedItems] {
  60.         if {"[$fromItem status]" == "reused"} continue
  61.  
  62.         set item [$fromItem item]
  63.         set toItem [$to findDeclaration $item [.main toConfig]]
  64.         if {[$toItem isNil]} {
  65.             set toItem ""
  66.         } else {
  67.             set fromScope $scope([$fromItem scope])
  68.             set toScope $scope([$toItem scope])
  69.             if {$toScope == $fromScope} {
  70.                 continue
  71.             }
  72.         }
  73.         set obj $name.$classCount
  74.         incr classCount
  75.         MTItem new $obj $fromItem $toItem
  76.         $this addChild $obj
  77.     }
  78.  
  79.     # search for the item property conflicts
  80.     set diffsList [$to itemPropertyDiffs $from $base]
  81.     foreach diffs $diffsList {
  82.         set workItem [lindex $diffs 0]
  83.         set propertyDiffsList [lrange $diffs 1 end]
  84.         foreach propertyDiffs $propertyDiffsList {
  85.             set fromPropValue [lindex $propertyDiffs 0]
  86.             set toPropValue [lindex $propertyDiffs 1]
  87.             set basePropValue [lindex $propertyDiffs 2]
  88.  
  89.             foreach propVal "$fromPropValue $toPropValue" {
  90.                 if {$propVal == "" || [$propVal isNil]} {
  91.                     continue
  92.                 }
  93.                 MTItemPropRepObj promote $propVal
  94.                 $propVal setInfo PropertyName [$propVal name]
  95.                 $propVal setInfo Name [$workItem getInfo Name]
  96.                 $propVal setInfo Type [$workItem getInfo Type]
  97.                 $propVal item $workItem
  98.             }
  99.  
  100.             if {$fromPropValue == "" || [$fromPropValue isNil]} {
  101.                 continue
  102.             }
  103.             if {$toPropValue == "" || [$toPropValue isNil]} {
  104.                 set toPropValue ""
  105.             }
  106.  
  107.             set obj $name.$classCount
  108.             incr classCount
  109.             MTProperty new $obj $fromPropValue $toPropValue
  110.             $obj baseValue $basePropValue
  111.             $this addChild $obj
  112.         }
  113.     }
  114. }
  115.  
  116. # Do not delete this line -- regeneration end marker
  117.  
  118.