home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 1997 November
/
PCWorld_1997-11_cd.bin
/
software
/
programy
/
komix
/
DATA.Z
/
browserpro.tcl
< prev
next >
Wrap
Text File
|
1997-03-07
|
33KB
|
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