home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-03-07 | 31.9 KB | 1,210 lines |
- #---------------------------------------------------------------------------
- #
- # (c) Cayenne Software Inc. 1996
- #
- # File: @(#)browserpro.tcl /main/hindenburg/16
- # Author: <generated>
- # Description:
- #---------------------------------------------------------------------------
- # SccsId = @(#)browserpro.tcl /main/hindenburg/16 7 Mar 1997 Copyright 1996 Cayenne Software Inc.
-
- # Start user added include file section
- # End user added include file section
-
-
- Class BrowserProcs : {Object} {
- constructor
- method destructor
- }
-
- global BrowserProcs::externalFileTypes
- set BrowserProcs::externalFileTypes ""
-
- global BrowserProcs::diagramFileTypes
- set BrowserProcs::diagramFileTypes ""
-
- global BrowserProcs::programmerFileTypes
- set BrowserProcs::programmerFileTypes ""
-
- global BrowserProcs::itemTypes
- set BrowserProcs::itemTypes "cl de doc et pe st"
-
- global BrowserProcs::phases
- set BrowserProcs::phases ""
-
- global BrowserProcs::systemTypes
- set BrowserProcs::systemTypes "system document"
-
-
- constructor BrowserProcs {class this name} {
- set this [Object::constructor $class $this $name]
- # Start constructor user section
- # End constructor user section
- return $this
- }
-
- method BrowserProcs::destructor {this} {
- # Start destructor user section
- # End destructor user section
- }
-
- proc BrowserProcs::activateRole {} {
- set typeSpec [getObjectSpec [$wmttoolObj objectHdlr] Role ""]
- if {"$typeSpec" != ""} {
- set icon [$typeSpec smallIcon]
- } else {
- set icon ""
- }
-
- set objectSpecList ""
- set effectiveRoleList [BrowserProcs::effectiveRoles]
- foreach roleName [BrowserProcs::userRoles] {
- if {[lsearch -exact $effectiveRoleList "$roleName"] == -1} {
- lappend objectSpecList [list $icon $roleName]
- }
- }
-
- if [lempty $objectSpecList] {
- wmtkinfo "All your roles are already active"
- return
- }
-
- require "browsviewd.tcl"
- set box $wmttoolObj.activateRole
- BrowsViewDialog new $box \
- -title "Activate Role" \
- -headerSpecList {{Name 20 ascii {increasing 1}}} \
- -objectSpecList $objectSpecList \
- -cancelPressed {%this delete} \
- -okPressed {
- set securityLevel [[ClientContext::global] currentSecurityLevel]
- if [$securityLevel isNil] {
- set securityLevel [$wmttoolObj corporateObj]
- }
-
- set script ""
- foreach object [[%this view] selectedSet] {
- if {"$script" != ""} {
- append script " ;"
- }
- append script " $securityLevel activate [$object label]"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {0 0} 1
- %this delete
- }
- $box popUp
- }
-
- proc BrowserProcs::action2String {map} {
- BrowserProcs::initializeActionTable
-
- set actions ""
- for {set actionMap 1} \
- {$actionMap <= 512} \
- {set actionMap [expr $actionMap << 1]} {
- if {$map & $actionMap} {
- lappend actions $actionTable($actionMap)
- }
- }
- return "$actions"
- }
-
- proc BrowserProcs::changeName {} {
- set selectedObject [lindex [$wmttoolObj selectedObjSet] 0]
-
- # get item and keeper for objects that have one
- if [$selectedObject isA SystemVersion] {
- set item [[$selectedObject system] item]
- set keeper $selectedObject
- } elseif [$selectedObject isA FileVersion] {
- set item [[$selectedObject file] item]
- set keeper [$selectedObject getParent SystemVersion]
- } elseif [$selectedObject isA WorkItem] {
- set item [$selectedObject item]
- set keeper [$selectedObject owner]
- } elseif [$selectedObject isA ExternalLink] {
- set item ""
- set keeper ""
- } elseif [$selectedObject isA Project] {
- set item ""
- set keeper ""
- } elseif [$selectedObject isA ConfigVersion] {
- set item ""
- set keeper ""
- } else {
- wmtkerror "Cannot change the name of the selected object"
- return
- }
-
- # determine configVersion of objects with an item
- if { "$item" != "" } {
- set configV [$selectedObject getParent ConfigVersion]
- } else {
- set configV ""
- }
-
- require "objnamecha.tcl"
- ObjNameChangeDialog new $wmttoolObj.changeName $wmttoolObj \
- -configV $configV \
- -keeper $keeper \
- -item $item
- $wmttoolObj.changeName popUp
- }
-
- proc BrowserProcs::childTypes {assoc} {
- case "$assoc" in {
- {controlledClasses} {
- return "ControlledClass"
- }
- {controlledClassSet} {
- return "ControlledClasses"
- }
- {accessRuleSet} {
- return "AccessRules"
- }
- {rules} {
- return "AccessRule"
- }
- {savedGroupVersion} {
- return "SavedGroupVersion"
- }
- {roleLinks userLinks} {
- return "UserRoleLink"
- }
- {default} {
- if [regsub "Set" "$assoc" "s" assoc] {
- return "[string toupper [string range $assoc 0 0]][string \
- range $assoc 1 end]"
- }
- return "[string toupper [string range $assoc 0 0]][string \
- range $assoc 1 [expr [string length $assoc] - 2]]"
- }
- }
- }
-
- proc BrowserProcs::clone {} {
- set context ""
- if [BrowserProcs::currentObjIsA BrowsUiObj] {
- set browsUiObj [[$wmttoolObj currentObj] browsUiObj]
- while {"$browsUiObj" != ""} {
- set context "[$browsUiObj getInfo Identity] $context"
- set browsUiObj [$browsUiObj parent]
- }
- }
- $wmttoolObj startCommand tcl \
- "SystemUtilities::fork otk desk -c [list [get_comm_name]] $context" \
- "" "Starting browser" {0 0} 1
- }
-
- proc BrowserProcs::compareVersion {obj orig versionList} {
- if [lempty $versionList] {
- wmtkinfo "There are no other versions to compare with"
- return
- }
-
- set typeSpec [getObjectSpec [$wmttoolObj objectHdlr] \
- [$obj uiClass] [$obj browserType] \
- ]
- if {"$typeSpec" != ""} {
- set icon [$typeSpec smallIcon]
- } else {
- set icon ""
- }
- set headerSpecList {
- {Version 25 ascii {increasing 1}}
- {Status 14 ascii {increasing 2}}
- {"Frozen date" 30 ascii {none}}
- {Comments 50 ascii {none}}
- }
- set objectSpecList ""
- foreach version $versionList {
- lappend objectSpecList [list $icon \
- [$version versionName] \
- [$version status] \
- [$version freezeTime2String] \
- [$version comments] \
- ]
- }
-
- require "browsviewd.tcl"
- set box $wmttoolObj.compareVersion
- ClassMaker::extend BrowsViewDialog CompareVBrowsViewDialog dbObj
- CompareVBrowsViewDialog new $box \
- -title "Compare Version" \
- -message "[$orig text]" \
- -headerSpecList $headerSpecList \
- -objectSpecList $objectSpecList \
- -objectList $versionList \
- -dbObj $obj \
- -cancelPressed {%this delete} \
- -okPressed {
- set dbObj [%this dbObj]
- set version [[lindex [[%this view] selectedSet] 0] object]
-
- if {[$dbObj isA Graph] || [$dbObj isA Matrix]} {
- set script "[quoteIf [m4_path_name bin udmcmp$EXE_EXT]] \
- [$dbObj identity] [$version identity]"
- set endScript ""
- set message "Starting 'Compare version'"
- } elseif [$obj isA ExternalFileVersion] {
- $obj synchWithFileSystem
- set tmpFile [args_file {}]
- case "[$version status]" in {
- {backGround} {
- $version activate
- $version downLoadFrozenContents $tmpFile
- $version deactivate
- }
- {frozen reused} {
- $version downLoadFrozenContents $tmpFile
- }
- {default} {
- copy_text_file \
- [$version path [$version currentContext]] $tmpFile
- }
- }
- set script "[m4_var get M4_diff] [$obj path] $tmpFile"
- set endScript [list BasicFS::removeFile $tmpFile]
- set message "Starting 'Compare'"
- } elseif [$dbObj isA RemoteFile] {
- set tmpFile1 [args_file {}]
- $dbObj downLoad $tmpFile1
- set tmpFile2 [args_file {}]
- case "[$version status]" in {
- {backGround} {
- $version activate
- $version downLoad $tmpFile2
- $version deactivate
- }
- {default} {
- $version downLoad $tmpFile2
- }
- }
- set script "[m4_var get M4_diff] $tmpFile1 $tmpFile2"
- set endScript ""
- append endScript [list BasicFS::removeFile $tmpFile1]
- append endScript " ;"
- append endScript [list BasicFS::removeFile $tmpFile2]
- set message "Starting 'Compare'"
- } else {
- wmtkerror "Sorry, don't know how to compare [$dbObj objType]"
- }
- $wmttoolObj startCommand mtool \
- "$script" "$endScript" "$message" {0 0} 0
- %this delete
- }
- [$box view] selectionPolicy BROWSE
- $box popUp
- }
-
- proc BrowserProcs::copyUserEnv {level} {
- if {"$level" == "Corporate"} {
- set levelObj [$wmttoolObj corporateObj]
- } else {
- set levelObj [[$wmttoolObj currentObj] browsUiObj]
- if {! [$levelObj isA $level]} {
- set levelObj [$levelObj getParent $level]
- }
- }
- CopyEnvDialog new $wmttoolObj.copyUserEnv 2 $levelObj \
- -title "Copy User Env To $level" \
- -m4VarDes [$wmttoolObj m4VarDes] \
- -helpPressed {.main helpOnName copyUserEnv} \
- -cancelPressed {%this delete} \
- -okPressed {
- %this save
- %this delete
- }
- $wmttoolObj.copyUserEnv popUp
- }
-
- proc BrowserProcs::copyVersion {obj versionList} {
- if [lempty $versionList] {
- wmtkinfo "There are no other versions to copy from"
- return
- }
-
- set typeSpec [getObjectSpec [$wmttoolObj objectHdlr] \
- [$obj uiClass] [$obj browserType] \
- ]
- if {"$typeSpec" != ""} {
- set icon [$typeSpec smallIcon]
- } else {
- set icon ""
- }
- set headerSpecList {
- {Name 25 ascii {increasing 1}}
- {Version 25 ascii {increasing 2}}
- {Status 14 ascii {increasing 3}}
- {"Frozen date" 30 ascii {none}}
- {Comments 50 ascii {none}}
- }
- set objectSpecList ""
- foreach tuple $versionList {
- set version [lindex $tuple 0]
- lappend objectSpecList [list $icon \
- [lindex $tuple 1] \
- [$version versionName] \
- [$version status] \
- [$version freezeTime2String] \
- [$version comments] \
- ]
- }
-
- require "browsviewd.tcl"
- set box $wmttoolObj.copyVersion
- ClassMaker::extend BrowsViewDialog CopyVBrowsViewDialog dbObj
- CopyVBrowsViewDialog new $box \
- -title "Copy Version From" \
- -headerSpecList $headerSpecList \
- -objectSpecList $objectSpecList \
- -objectList $versionList \
- -dbObj $obj \
- -cancelPressed {%this delete} \
- -okPressed {
- set dbObj [%this dbObj]
- set version \
- [lindex [[lindex [[%this view] selectedSet] 0] object] 0]
- if [$dbObj isA ConfigVersion] {
- set args "-configVersion $version"
- } elseif [$dbObj isA PhaseVersion] {
- set args "-phaseVersion $version"
- } elseif [$dbObj isA SystemVersion] {
- set confV [$dbObj getParent ConfigVersion]
- set args "-systemVersion $version $confV"
- } else {
- set args "$version"
- }
- set script "$dbObj copy $args"
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- %this delete
- }
- [$box view] config \
- -rowCount 10 \
- -selectionPolicy BROWSE
- $box popUp
- }
-
- proc BrowserProcs::currentObjIsA {typeList} {
- set currentObj [$wmttoolObj currentObj]
- if {! [isCommand $currentObj]} {
- return 0
- }
- foreach type $typeList {
- if [[$currentObj browsUiObj] isA $type] {
- return 1
- }
- }
-
- return 0
- }
-
- proc BrowserProcs::currentUser {} {
- set corporate [$wmttoolObj corporateObj]
- return [$corporate currentUser]
- }
-
- proc BrowserProcs::deactivateRole {} {
- set typeSpec [getObjectSpec [$wmttoolObj objectHdlr] Role ""]
- if {"$typeSpec" != ""} {
- set icon [$typeSpec smallIcon]
- } else {
- set icon ""
- }
-
- set securityLevel [[ClientContext::global] currentSecurityLevel]
- if [$securityLevel isNil] {
- set securityLevel [$wmttoolObj corporateObj]
- }
-
- set objectSpecList ""
- set userName [[BrowserProcs::currentUser] name]
- foreach role [$securityLevel effectiveRoles] {
- set searchLevel $securityLevel
- while {! [$searchLevel isNil]} {
- set userLink [$role findUserLink $searchLevel $userName]
- if {! [$userLink isNil]} break
- set searchLevel [$searchLevel upperLevel]
- }
- if {(! [$userLink isNil]) &&
- "[$userLink use]" == "alwaysOn"} continue
- lappend objectSpecList [list $icon [$role name]]
- }
-
- if [lempty $objectSpecList] {
- wmtkinfo "None of your roles can be deactivated"
- return
- }
-
- require "browsviewd.tcl"
- set box $wmttoolObj.deactivateRole
- ClassMaker::extend BrowsViewDialog DeactivateRoleBrowsViewDialog \
- securityLevel
- DeactivateRoleBrowsViewDialog new $box \
- -title "Deactivate Role" \
- -headerSpecList {{Name 20 ascii {increasing 1}}} \
- -objectSpecList $objectSpecList \
- -securityLevel $securityLevel \
- -cancelPressed {%this delete} \
- -okPressed {
- set securityLevel [%this securityLevel]
- set script ""
- foreach object [[%this view] selectedSet] {
- if {"$script" != ""} {
- append script " ;"
- }
- append script " $securityLevel deactivate [$object label]"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {0 0} 1
- %this delete
- }
- $box popUp
- }
-
- proc BrowserProcs::displayDate {date} {
- if {$date <= 0} {
- return ""
- }
- return "[fmtclock $date]"
- }
-
- proc BrowserProcs::editRoleRights {} {
- global classCount
- incr classCount
- require "editroleri.tcl"
- set box $wmttoolObj.editRoleRights$classCount
- EditRoleRightsDlg new $box \
- -modal 1 \
- -title "Edit Role Rights" \
- -helpPressed {.main helpOnName editRoleRights}
- $box popUp
- }
-
- proc BrowserProcs::editProperties {} {
- busy {
- $wmttoolObj createPropContainers 1
- # Don't reuse a PropertyDialog:
- # The initial size does not change to fit new contents.
- require "propertydi.tcl"
- PropertyDialog new $wmttoolObj.editProperties $wmttoolObj \
- -editable 1 \
- -title "Edit Properties" \
- -helpPressed {.main helpOnName editProperties}
- $wmttoolObj.editProperties popUp
- }
- }
-
- proc BrowserProcs::effectiveRoles {} {
- set securityLevel [[ClientContext::global] currentSecurityLevel]
- if [$securityLevel isNil] {
- set securityLevel [$wmttoolObj corporateObj]
- }
-
- set effectiveRoleList ""
- foreach role [$securityLevel effectiveRoles] {
- set roleName "[$role name]"
- lappend effectiveRoleList "$roleName"
- }
- return $effectiveRoleList
- }
-
- proc BrowserProcs::freezeObjects {objectList} {
- if {! [isCommand $wmttoolObj.freezeVersion]} {
- ClassMaker::extend EntryDialog FreezeVEntryDialog objectList
- FreezeVEntryDialog new $wmttoolObj.freezeVersion \
- -modal yes \
- -title "Freeze Version" \
- -message "Comments:" \
- -helpPressed {.main helpOnName freezeVersion} \
- -okPressed {
- BrowserProcs::freezeObjectsOk \
- "[%this objectList]" "[%this entry]"
- }
- }
- $wmttoolObj.freezeVersion objectList "$objectList"
- $wmttoolObj.freezeVersion popUp
- }
-
- proc BrowserProcs::freezeObjectsOk {objectList comments} {
- set script ""
- foreach obj $objectList {
- if {"$script" != ""} {
- append script " ;"
- }
- append script " $obj freeze [list $comments]"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- }
-
- proc BrowserProcs::id2obj {id type node} {
- # Search object in given tree node
- set myObj [$node browsUiObj]
- if {! [$myObj isA $type]} {
- set myObj [$node getParent $type]
- }
- if {[isCommand $myObj] && ([$myObj getInfo Identity] == $id)} {
- return $myObj
- }
-
- # Search object in current tree node
- set currentNode [.main currentObj]
- if {$currentNode != $node} {
- set currentObj [$currentNode browsUiObj]
- if {! [$currentObj isA $type]} {
- set currentObj [$currentNode getParent $type]
- }
- if {[isCommand $currentObj] &&
- ([$currentObj getInfo Identity] == $id)} {
- return $currentObj
- }
- }
-
- # Search in currrent view
- foreach flatObj [[.main flatView] objectSet] {
- if [$flatObj filteredOutState] continue
- set childObj [$flatObj browsUiObj]
- if {[isCommand $childObj] &&
- ([$childObj getInfo Identity] == $id)} {
- return $childObj
- }
- }
-
- return [$type new $id]
- }
-
- proc BrowserProcs::importSystems {systemList} {
- set args "-f impsystems.tcl"
- if {! [lempty $systemList]} {
- set args "$args -- $systemList"
- }
- set script "[quoteIf [m4_path_name bin otsh$EXE_EXT]] $args"
- $wmttoolObj startCommand mtool \
- "$script" "" "Starting 'Import Systems'" {1 0} 0
- }
-
- proc BrowserProcs::infoProperties {} {
- return {Name Type Identity Text}
- }
-
- proc BrowserProcs::initializeActionTable {} {
- global actionTable
-
- if [info exists actionTable] {
- return
- }
-
- set actionTable(1) controlAction
- set actionTable(2) createAction
- set actionTable(4) destroyAction
- set actionTable(8) readAction
- set actionTable(16) modifyAction
- set actionTable(32) insertAction
- set actionTable(64) removeAction
- set actionTable(128) freezeAction
- set actionTable(256) unfreezeAction
- set actionTable(512) modifyStatusAction
- }
-
- proc BrowserProcs::initializeInfo {obj node} {
- global initializeInfoDict
- if {! [info exists initializeInfoDict]} {
- set initializeInfoDict [Dictionary new \
- -contents {
- FilePropertyReference ConfigVersion
- Role SecurityLevel
- User SecurityLevel
- UserRoleLink BrowsDbObj
- } \
- ]
- }
-
- set parentClass [$initializeInfoDict set [$obj uiClass]]
- if {"$parentClass" != ""} {
- set parent [$node getParent $parentClass]
- } else {
- set parent ""
- }
- $obj initializeInfo "$parent"
-
- # initialize document if necessary
- if {[$obj isA Document] && (! [$node isA TreeNode])} {
- $obj initialize [$node getParent ConfigVersion]
- }
- }
-
- proc BrowserProcs::objectsAre {type} {
- case "[$wmttoolObj getStatus $type]" in {
- {yes} {
- return 1
- }
- {no} {
- return 0
- }
- {default} {
- foreach obj [$wmttoolObj selectedObjSet] {
- if {! [$obj isA $type]} {
- $wmttoolObj setStatus $type no
- return 0
- }
- }
- $wmttoolObj setStatus $type yes
- return 1
- }
- }
- }
-
- proc BrowserProcs::objectsReturn {method} {
- case "[$wmttoolObj getStatus $method]" in {
- {yes} {
- return 1
- }
- {no} {
- return 0
- }
- {default} {
- foreach obj [$wmttoolObj selectedObjSet] {
- if {! [$obj $method]} {
- $wmttoolObj setStatus $method no
- return 0
- }
- }
- $wmttoolObj setStatus $method yes
- return 1
- }
- }
- }
-
- proc BrowserProcs::printObjects {asciiFiles docbatchObjects topostObjects {deleteFlag 0}} {
- if {! [lempty $asciiFiles]} {
- # Can not print more than 1 file at once on win95
- if {$win95 && ([llength $asciiFiles] > 1)} {
- foreach asciiFile $asciiFiles {
- BrowserProcs::printObjects "[list $asciiFile]" "" "" $deleteFlag
- }
- } else {
- set printer [m4_var get M4_a_printer]
- set cmd $printer
- set endCmd ""
- foreach asciiFile $asciiFiles {
- if $deleteFlag {
- if {"$endCmd" != ""} {
- append endCmd " ;"
- }
- append endCmd "[list BasicFS::removeFile $asciiFile]"
- }
- if $win95 {
- append cmd " $asciiFile"
- } else {
- append cmd " \"$asciiFile\""
- }
- }
- set msg "Sending "
- if {[llength $asciiFiles] == 1} {
- append msg "'[lindex $asciiFiles 0]'"
- } else {
- append msg "output"
- }
- append msg " to $printer..."
- $wmttoolObj startCommand extern "$cmd" "$endCmd" "$msg" {0 0} 0
- }
- }
- if {! [lempty $docbatchObjects]} {
- set docV [[$wmttoolObj currentObj] browsUiObj]
- if {! [$docV isA Document]} {
- set docV [$docV getParent Document]
- }
- set confVId [[$docV getParent ConfigVersion] identity]
- set sysVId [$docV identity]
- set argsfile [args_file $docbatchObjects]
- set args "print $confVId $sysVId [list $argsfile]"
- $wmttoolObj startDocbatch mtool "$args" "" {0 0} 0
- }
- if {! [lempty $topostObjects]} {
- set sysV [[$wmttoolObj currentObj] browsUiObj]
- if {! [$sysV isA SystemVersion]} {
- set sysV [$sysV getParent SystemVersion]
- }
- set confV [$sysV getParent ConfigVersion]
- require "print.tcl"
- eval Print::printDiagrams \
- -configVersion $confV \
- -systemVersion $sysV \
- $topostObjects
- }
- }
-
- proc BrowserProcs::removeMessage {{dialog ""}} {
- if {"$dialog" == ""} {
- set objects [$wmttoolObj selectedNameSet]
- set len [llength $objects]
- if {$len == 1} {
- set object [lindex $objects 0]
- set description "[lindex $object 1] '[lindex $object 0]'"
- }
- } else {
- set selectedSet [[$dialog view] selectedSet]
- if [lempty $selectedSet] {
- set selectedSet [[$dialog view] objectSet]
- }
- set len [llength $selectedSet]
- if {$len == 1} {
- set version [[lindex $selectedSet 0] object]
- set description \
- "version [$version versionName] of [[$dialog orig] text]"
- }
- }
- if {$len > 1} {
- set description "these $len objects"
- }
- return "Do you really want to delete $description ?"
- }
-
- proc BrowserProcs::removeProperties {} {
- busy {
- $wmttoolObj createPropContainers 1
- # Don't reuse a RmPropDialog:
- # The initial size does not change to fit new contents.
- require "rmpropdial.tcl"
- RmPropDialog new $wmttoolObj.removeProperties $wmttoolObj \
- -title "Delete Properties" \
- -helpPressed {.main helpOnName removeProperties}
- $wmttoolObj.removeProperties popUp
- }
- }
-
- proc BrowserProcs::removeVersion {obj orig versionList} {
- set selectedObj [lindex [$wmttoolObj selectedObjSet] 0]
- set typeSpec [getObjectSpec [$wmttoolObj objectHdlr] \
- [$selectedObj uiClass] [$selectedObj browserType] \
- ]
- if {"$typeSpec" != ""} {
- set icon [$typeSpec smallIcon]
- } else {
- set icon ""
- }
- set headerSpecList {
- {Version 25 ascii {increasing 1}}
- {Status 14 ascii {increasing 2}}
- {"Frozen date" 30 ascii {none}}
- {Comments 50 ascii {none}}
- }
- set objectSpecList ""
- foreach version $versionList {
- lappend objectSpecList [list $icon \
- [$version versionName] \
- [$version status] \
- [$version freezeTime2String] \
- [$version comments] \
- ]
- }
-
- require "browsviewd.tcl"
- set box $wmttoolObj.removeVersion
- ClassMaker::extend BrowsViewDialog RemoveVBrowsViewDialog {dbObj orig}
- RemoveVBrowsViewDialog new $box \
- -title "Delete Version" \
- -message "[$orig text]" \
- -headerSpecList $headerSpecList \
- -objectSpecList $objectSpecList \
- -objectList $versionList \
- -dbObj $obj \
- -orig $orig \
- -cancelPressed {%this delete} \
- -okPressed {
- WarningDialog new [format "%s%s" %this Warning] \
- -title "Delete Version Warning" \
- -message [BrowserProcs::removeMessage %this] \
- -helpPressed {.main helpOnName removeVersionWarning} \
- -cancelPressed {
- %this delete
- [format "%s%s" %this Warning] delete
- } \
- -okPressed {
- set dbObj [%this dbObj]
- set orig [%this orig]
- set objectSet [[%this view] objectSet]
- set selectedSet [[%this view] selectedSet]
- if [lempty $selectedSet] {
- set selectedSet $objectSet
- }
- set script ""
- foreach object $selectedSet {
- if {"$script" != ""} {
- append script " ;"
- }
- append script " $dbObj removeObject [$object object]"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- %this delete
- [format "%s%s" %this Warning] delete
- }
- [format "%s%s" %this Warning] popUp
- }
- if {[$orig isA Config] ||
- ([llength $versionList] == 1 &&
- [lindex $versionList 0] == $selectedObj)} {
- $box display
- eval [$box okPressed]
- } else {
- $box popUp
- }
- }
-
- proc BrowserProcs::scopeObjectsAre {scope} {
- case "[$wmttoolObj getStatus $scope]" in {
- {yes} {
- return 1
- }
- {no} {
- return 0
- }
- {default} {
- foreach obj [$wmttoolObj selectedObjSet] {
- set objScope [$obj getInfo Scope]
- if {"$objScope" == ""} continue
- if {"$objScope" != "$scope"} {
- $wmttoolObj setStatus "$scope" no
- return 0
- }
- }
- $wmttoolObj setStatus "$scope" yes
- return 1
- }
- }
- }
-
- proc BrowserProcs::selectObject {obj versionList mode} {
- if [lempty $versionList] {
- wmtkinfo "There are no other versions to select from"
- return
- }
-
- set headerSpecList ""
- if {"$mode" != "selected"} {
- lappend headerSpecList {Name 25 ascii {increasing 2}}
- lappend headerSpecList {Version 25 ascii {increasing 3}}
- lappend headerSpecList {Type 18 ascii {increasing 1}}
- } else {
- lappend headerSpecList {Version 25 ascii {increasing 1}}
- }
- lappend headerSpecList {"Frozen date" 30 ascii {none}}
- lappend headerSpecList {Comments 50 ascii {none}}
-
- set objectSpecList ""
- foreach tuple $versionList {
- set version [lindex $tuple 0]
- set typeSpec [getObjectSpec [$wmttoolObj objectHdlr] \
- [$version uiClass] [$version browserType] \
- ]
- if {"$typeSpec" != ""} {
- set icon [$typeSpec smallIcon]
- } else {
- set icon ""
- }
- set objectSpec "$icon"
- if {"$mode" != "selected"} {
- lappend objectSpec [lindex $tuple 1]
- lappend objectSpec [$version versionName]
- lappend objectSpec [$version browserType]
- } else {
- lappend objectSpec [$version versionName]
- }
- lappend objectSpec [$version freezeTime2String]
- lappend objectSpec [$version comments]
- lappend objectSpecList $objectSpec
- }
-
- require "browsviewd.tcl"
- set box $wmttoolObj.selectVersion
- ClassMaker::extend BrowsViewDialog SelectVBrowsViewDialog dbObj
- SelectVBrowsViewDialog new $box \
- -title "Select Version" \
- -headerSpecList $headerSpecList \
- -objectSpecList $objectSpecList \
- -objectList $versionList \
- -dbObj $obj \
- -cancelPressed {%this delete} \
- -okPressed {
- set dbObj "[%this dbObj]"
- set script ""
- foreach object [[%this view] selectedSet] {
- if {"$script" != ""} {
- append script " ;"
- }
- append script \
- " $dbObj selectVersion [lindex [$object object] 0]"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- %this delete
- }
- if {"$mode" == "selected"} {
- set selectionPolicy BROWSE
- } else {
- set selectionPolicy EXTENDED
- }
- [$box view] config \
- -rowCount 10 \
- -selectionPolicy $selectionPolicy
- $box popUp
- }
-
- proc BrowserProcs::showAccessRights {} {
- foreach obj [$wmttoolObj selectedObjSet] {
- if {! [$obj isA Controlled]} {
- return
- }
- }
-
- global classCount
- incr classCount
- require "showaccess.tcl"
- set box $wmttoolObj.showAccessRights$classCount
- ShowAccessRightsDlg new $box \
- -title "Show Access Rights" \
- -helpPressed {.main helpOnName showAccessRights}
- $box popUp
- }
-
- proc BrowserProcs::showRoleRights {} {
- global classCount
- incr classCount
- require "showroleri.tcl"
- set box $wmttoolObj.showRoleRights$classCount
- ShowRoleRightsDlg new $box \
- -title "Show Role Rights" \
- -helpPressed {.main helpOnName showRoleRights}
- $box popUp
- }
-
- proc BrowserProcs::showContext {} {
- if {! [BrowserProcs::currentObjIsA BrowsUiObj]} {
- return
- }
-
- global classCount
- set box .main.showContext$classCount
- incr classCount
- interface TemplateDialog $box {
- title "Effective Context"
- DlgColumn col {}
- helpPressed {.main helpOnName context}
- okPressed {%this delete}
- }
- $box modal $win95
- $box delCancelButton
-
- set userName [[BrowserProcs::currentUser] name]
- Label new $box.col.label \
- -text "Effective roles of user '$userName':\n" \
- -font "courier-bold-12"
- set count 0
- foreach roleName [BrowserProcs::effectiveRoles] {
- Label new $box.col.role$count \
- -text " $roleName" \
- -font "courier-normal-12"
- incr count
- }
-
- $box popUp
- }
-
- proc BrowserProcs::showInfo {} {
- set objList [$wmttoolObj selectedObjSet]
- if {[llength $objList] > 1} {
- return
- }
-
- if {"[[$wmttoolObj treeView] selected]" != ""} {
- lappend objList [[[$wmttoolObj treeView] selected] browsUiObj]
- }
- if [lempty $objList] {
- if {"[$wmttoolObj currentObj]" != ""} {
- lappend objList [[$wmttoolObj currentObj] browsUiObj]
- } else {
- foreach root [[$wmttoolObj treeView] rootSet] {
- lappend objList [$root browsUiObj]
- }
- }
- }
-
- global classCount
- incr classCount
- set box $wmttoolObj.info$classCount
- interface TemplateDialog $box {
- title "Info"
- DlgColumn col { }
- helpPressed { .main helpOnName info }
- okPressed { %this delete }
- }
- $box modal $win95
- $box delCancelButton
-
- set lineCnt 0
- set sepCnt 0
- foreach obj $objList {
- if { $sepCnt != 0 } {
- HorSeparator new $box.col.$sepCnt
- }
- incr sepCnt
- foreach header [[$obj browserObjType]::infoProperties] {
- DlgRow new $box.col.row$lineCnt \
- -spaceType NONE -justification RIGHT
- Label new $box.col.row$lineCnt.$lineCnt -text "$header:" \
- -alignment RIGHT -horStretchFactor 10 \
- -justification TOP -font "courier-bold-12"
- DlgColumn new $box.col.row$lineCnt.col
- set breakUpCnt 0
- set info [$obj getInfo $header]
- if { $info == "" } {
- set info " "
- }
- foreach line [split $info "\n"] {
- foreach part [lineBreak $line 49 " "] {
- set text [format "%-49s" $part]
- Label new $box.col.row$lineCnt.col.${lineCnt}_$breakUpCnt \
- -text $text -font "courier-normal-12"
- incr breakUpCnt
- }
- }
- incr lineCnt
- }
- }
-
- $box popUp
- }
-
- proc BrowserProcs::showProperties {} {
- busy {
- $wmttoolObj createPropContainers 0
- # Don't reuse a PropertyDialog:
- # The initial size does not change to fit new contents.
- require "propertydi.tcl"
- PropertyDialog new $wmttoolObj.editProperties $wmttoolObj \
- -editable 0 \
- -title "Show Properties" \
- -helpPressed {.main helpOnName editProperties}
- $wmttoolObj.editProperties popUp
- }
- }
-
- proc BrowserProcs::statusObjectsAre {status} {
- case "[$wmttoolObj getStatus $status]" in {
- {yes} {
- return 1
- }
- {no} {
- return 0
- }
- {default} {
- foreach obj [$wmttoolObj selectedObjSet] {
- set objStatus [$obj getInfo Status]
- if {"$objStatus" == ""} continue
- if {("$objStatus" != "reused" &&
- [$obj getInfo "In Corporate"] == "Yes") ||
- "$objStatus" != "$status"} {
- $wmttoolObj setStatus "$status" no
- return 0
- }
- }
- $wmttoolObj setStatus "$status" yes
- return 1
- }
- }
- }
-
- proc BrowserProcs::statusObjectsAreNot {status} {
- case "[$wmttoolObj getStatus not$status]" in {
- {yes} {
- return 1
- }
- {no} {
- return 0
- }
- {default} {
- foreach obj [$wmttoolObj selectedObjSet] {
- set objStatus [$obj getInfo Status]
- if {"$objStatus" == ""} continue
- if {"$objStatus" == "$status"} {
- $wmttoolObj setStatus "not$status" no
- return 0
- }
- }
- $wmttoolObj setStatus "not$status" yes
- return 1
- }
- }
- }
-
- proc BrowserProcs::string2Action {actions} {
- BrowserProcs::initializeActionTable
-
- set map 0
- foreach action $actions {
- for {set actionMap 1} \
- {$actionMap <= 512} \
- {set actionMap [expr $actionMap << 1]} {
- if {$actionTable($actionMap) == $action} {
- set map [expr $map | $actionMap]
- break
- }
- }
- }
- return $map
- }
-
- proc BrowserProcs::typeObjectsAre {type} {
- case "[$wmttoolObj getStatus $type]" in {
- {yes} {
- return 1
- }
- {no} {
- return 0
- }
- {default} {
- foreach obj [$wmttoolObj selectedObjSet] {
- if {"[$obj getInfo Type]" != "$type"} {
- $wmttoolObj setStatus "$type" no
- return 0
- }
- }
- $wmttoolObj setStatus "$type" yes
- return 1
- }
- }
- }
-
- proc BrowserProcs::unfreezeObjects {} {
- set script ""
- foreach obj [$wmttoolObj selectedObjSet] {
- if {"$script" != ""} {
- append script " ;"
- }
- append script " $obj unfreeze"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- }
-
- proc BrowserProcs::userRoles {} {
- set securityLevel [[ClientContext::global] currentSecurityLevel]
- if [$securityLevel isNil] {
- set securityLevel [$wmttoolObj corporateObj]
- }
-
- set currentUser [BrowserProcs::currentUser]
- set userRoleList ""
- while {[$securityLevel isA SecurityLevel]} {
- foreach roleL [$securityLevel roleLinks $currentUser] {
- set role [$roleL role]
- set roleName "[$role name]"
- if {[lsearch -exact $userRoleList "$roleName"] == -1} {
- lappend userRoleList $roleName
- }
- }
- set securityLevel [$securityLevel upperLevel]
- }
- return $userRoleList
- }
-
- # Do not delete this line -- regeneration end marker
-
-