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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)namechange.tcl    /main/titanic/8
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)namechange.tcl    /main/titanic/8   11 Nov 1997 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. require illegalcha.tcl
  14. require nameconfli.tcl
  15.  
  16. # End user added include file section
  17.  
  18.  
  19. Class NameChangeDialog : {TemplateDialog} {
  20.     constructor
  21.     method destructor
  22.     method popUp
  23.     method text
  24.     method handleTextModified
  25.     method handleOk
  26.     method popUpConflict
  27.     attribute configV
  28.     attribute keeper
  29.     attribute item
  30.     attribute prevText
  31.     attribute illegalCharacters
  32.     attribute tool
  33. }
  34.  
  35. constructor NameChangeDialog {class this name tool} {
  36.     set this [TemplateDialog::constructor $class $this $name]
  37.     $this tool $tool
  38.     # Start constructor user section
  39.  
  40.     interface DlgColumn $this.c {
  41.         Label message {
  42.             text "New Name:"
  43.         }
  44.         SingleLineText name {
  45.             columnCount 30
  46.         }
  47.     }
  48.     $this.c.name textModified "$this handleTextModified"
  49.     $this config -okPressed "$this handleOk" \
  50.              -helpPressed {.main helpOnName changeName} \
  51.              -cancelPressed "$this delete" \
  52.              -title "Change Name" \
  53.              -autoPopDown 0 \
  54.              -modal 1
  55.  
  56.     # End constructor user section
  57.     return $this
  58. }
  59.  
  60. method NameChangeDialog::destructor {this} {
  61.     # Start destructor user section
  62.     $this popDown
  63.     # End destructor user section
  64. }
  65.  
  66. method NameChangeDialog::popUp {this} {
  67.     global illegalCharacters
  68.     if { "[$this item]" != "" } {
  69.         $this illegalCharacters $illegalCharacters([[$this item] type])
  70.     } else {
  71.         $this illegalCharacters $illegalCharacters(name)
  72.     }
  73.     $this prevText ""
  74.     $this handleTextModified
  75.     $this TemplateDialog::popUp
  76. }
  77.  
  78. method NameChangeDialog::text {this {newText ,}} {
  79.     if {$newText == ","} {
  80.         return [$this.c.name text]
  81.     }
  82.     $this.c.name text $newText
  83. }
  84.  
  85. method NameChangeDialog::handleTextModified {this} {
  86.     if { ("[$this illegalCharacters]" != "") && \
  87.         [regexp [$this illegalCharacters] [$this.c.name text]] } {
  88.         set cursorIndex [$this.c.name cursorIndex]
  89.         $this.c.name text [$this prevText]
  90.         $this.c.name cursorIndex [expr $cursorIndex - 1]
  91.     } else {
  92.         $this prevText [$this.c.name text]
  93.     }
  94.     if {"[rmWhiteSpace [$this.c.name text]]" == ""} {
  95.         $this okSensitive 0
  96.     } else {
  97.         $this okSensitive 1
  98.     }
  99.     $this okDefault [$this okSensitive]
  100.     $this cancelDefault [expr 1 - [$this okSensitive]]
  101. }
  102.  
  103. method NameChangeDialog::handleOk {this} {
  104.     set newName [$this.c.name text]
  105.     set configV [$this configV]
  106.     set keeper [$this keeper]
  107.     set oldItem [$this item]
  108.  
  109.     # name change for objects without item
  110.     if { "$oldItem" == "" } {
  111.         $this busy 1
  112.         if [catch {$this changeObjectName} msg] {
  113.             wmtkerror $msg
  114.             $this busy 0
  115.         }
  116.         return
  117.     }
  118.  
  119.     set itemType [$oldItem type]
  120.     set itemQual [$oldItem qualifier]
  121.     if [$itemQual isNil] {
  122.         set newItem [$keeper findDeclaration \
  123.                     $newName $itemType $configV]
  124.     } else {
  125.         set newItem [$keeper findDeclaration $itemQual \
  126.                     $newName $itemType $configV]
  127.     }
  128.     if [$newItem isNil] {
  129.         $this busy 1
  130.         if [catch {$this changeName 1} msg] {
  131.             wmtkerror $msg
  132.             $this busy 0
  133.         }
  134.         return
  135.     }
  136.     if {[$newItem item] != $oldItem} {
  137.         $this popUpConflict
  138.         return
  139.     }
  140.     wmtkerror "Name not changed: Specified name equals original name"
  141. }
  142.  
  143. method NameChangeDialog::popUpConflict {this} {
  144.     set conflict [$this tool].nameConflict
  145.     if {![isCommand $conflict]} {
  146.         NameConflictDialog new $conflict $this
  147.     }
  148.     $conflict popUp
  149. }
  150.  
  151. # Do not delete this line -- regeneration end marker
  152.  
  153.