1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-01 17:36:21 +03:00
Pasukhin Dmitry df4b931988
Configuration - Resource structure reorganization #429
Reorganized resources to keep source part in src and real-time scripts in resource folder.
For the installation result no changes, still installed to src for windows.
2025-03-18 22:54:43 +00:00

382 lines
10 KiB
Tcl
Executable File

# Copyright (c) 1999-2014 OPEN CASCADE SAS
#
# This file is part of Open CASCADE Technology software library.
#
# This library is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License version 2.1 as published
# by the Free Software Foundation, with special exception defined in the file
# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
# distribution for complete text of the license and disclaimer of any warranty.
#
# Alternatively, this file may be used under the terms of Open CASCADE
# commercial license or contractual agreement.
###########################
# #
# Version 1.4 #
# by SZV #
# #
###########################
#
# Open : double-clic or +
# Close : double-clic or -
# Refresh tree : close top level and re-open
#
# Attributes:
# white : interoperable
# white + c : non interoperable
# X : X Reference
# Red : not yet committed in transaction #0
#
#
proc __update { args } {
}
proc dftree { DDF_Browser } {
global env
global DFTREE_WINDOWS
global DFTREE_GLOBALS
global $DDF_Browser
puts $DDF_Browser
package require Tk
## Create images
set DFTREE_GLOBALS(ImageLabel) [DFOpenImage dfb_folder.gif]
set DFTREE_GLOBALS(ImageAttrOther) [DFOpenImage dfb_attribute.gif]
set DFTREE_GLOBALS(ImageAttrNS) [DFOpenImage dfb_attribns.gif]
## set DFTREE_LabelStyle [tixDisplayStyle imagetext \
## -font 9x15bold \
## -background Bisque3 \
## ]
## set DFTREE_LabelStyle1 [tixDisplayStyle imagetext \
## -font 9x15bold \
## -background Bisque3 \
## -foreground SeaGreen2 \
## ]
## set DFTREE_AttributeStyle [tixDisplayStyle imagetext \
## -font 9x15 \
## -background Bisque3 \
## ]
## set DFTREE_AttributeStyle1 [tixDisplayStyle imagetext \
## -font 9x15 \
## -background Bisque3 \
## -foreground DarkGreen \
## ]
## set DFTREE_AttributeStyle2 [tixDisplayStyle imagetext \
## -font 9x15 \
## -background Bisque3 \
## -foreground Red \
## ]
set w .$DDF_Browser
toplevel $w -width 700 -height 400 -background bisque3
wm minsize $w 700 400
########
# Tree #
########
#set tree1 [ttk::treeview $w.tree -show tree]
set tree1 [ttk::treeview $w.tree -show tree -xscrollcommand "$w.tree.xscroll set" -yscrollcommand "$w.tree.yscroll set"]
set aScrollX [ttk::scrollbar $w.tree.xscroll -command "$w.tree xview" -orient horizontal]
set aScrollY [ttk::scrollbar $w.tree.yscroll -command "$w.tree yview"]
pack $aScrollX -side bottom -fill x
pack $aScrollY -side right -fill y
$tree1 tag bind Label <<TreeviewOpen>> [list DFTREE:Tree:Open $DDF_Browser $w]
$tree1 tag configure Label -font 9x15bold -foreground DarkGreen
#$tree1 tag configure Attribute -font 9x15 -background bisque3
#$tree1 tag configure AttributeList -font 9x15 -background bisque3
pack $tree1 -expand yes -fill both -padx 4 -pady 4
# to see different fonts: /usr/openwin/lib/X11/fonts/misc or xlsfonts?
# 8x13 8x13bold 9x15 9x15bold
# hlist.font 8x13bold
# hlist.gap "15"
# hlist.indent "30"
set DFTREE_WINDOWS($w,tree) $tree1
set DFTREE_WINDOWS($w,root) [$tree1 insert {} end \
-text $DDF_Browser \
-values "" \
-tags Label]
# Here we need to open first node!
return
}
###############################################################################
#
#
proc DFTREE:Tree:Open { DDF_Browser w } {
global DFTREE_WINDOWS
global DFTREE_GLOBALS
global $DDF_Browser
set df_tree $DFTREE_WINDOWS($w,tree)
set df_node [$df_tree focus]
#if {$df_node == $DFTREE_WINDOWS($w,root)} {
# This is root
set chdlist [$df_tree children $df_node]
if {$chdlist != {}} {
# The root branch already exists in hlist.
# Clear all its children to force the tree to be updated.
$df_tree delete $chdlist
}
#}
#update
DFTREE:Tree:Fill $DDF_Browser $df_tree $df_node
return
}
###############################################################################
#
#
proc DFTREE:Tree:Fill { DDF_Browser df_tree df_node } {
global DFTREE_GLOBALS
global $DDF_Browser
set loc [lindex [$df_tree item $df_node -values] 0]
set type [lindex [$df_tree item $df_node -tags] 0]
switch -glob $type {
Label {
DFTREE:Tree:UpdateLabel $DDF_Browser $df_tree $df_node $loc
}
#AttributeList {
# DFTREE:Tree:UpdateAttributeList $DDF_Browser $df_tree $df_node $loc
#}
default {
}
}
return
}
###############################################################################
# $df_entry is a label entry, "1:3:2" for example, or "" for root.
#
proc DFTREE:Tree:UpdateLabel { DDF_Browser df_tree df_node df_entry } {
global DFTREE_GLOBALS
global $DDF_Browser
foreach fullname [split [DFOpenLabel $DDF_Browser $df_entry] "\\" ] {
FCTREE:Tree:DecodeLabelItem $DDF_Browser $df_tree $df_node $df_entry $fullname
}
return
}
###############################################################################
#
#
proc DFTREE:Tree:UpdateAttributeList { DDF_Browser df_tree df_node df_entry} {
global DFTREE_GLOBALS
global $DDF_Browser
set image_other $DFTREE_GLOBALS(ImageAttrOther)
set image_ns $DFTREE_GLOBALS(ImageAttrNS)
#set xrefimage $DFTREE_GLOBALS(ImageAttrOther)
# abv: index attributes
set num 0
set attributes [split [DFOpenAttributeList $DDF_Browser $df_entry ] "\\" ]
set iattributes {}
foreach fullname $attributes {
set num [expr $num + 1]
lappend fullname $num
lappend iattributes $fullname
}
foreach fullname [lsort $iattributes] {
# Information first split
set tmplist [split $fullname " "]
set name [lindex $tmplist 0]
set transaction [lindex $tmplist 1]
set valid [lindex $tmplist 2]
set forgotten [lindex $tmplist 3]
set backuped [lindex $tmplist 4]
set maybeopen [lindex $tmplist 5]
# Name analysis to suppress the map address.
set shortlist [split $name "#"]
set shortname [lindex $shortlist 0]
set index [lindex $shortlist 1]
# Package analysis to determine the icon type.
#set pk [lindex [split $name _] 0]
set node_img $image_other
#if {$pk == "TDataStd" || $pk == "TNaming"} {set node_img $standardimage}
#if {$pk == "TXRef"} {set node_img $xrefimage}
if {$shortname == "TNaming_NamedShape"} {set node_img $image_ns}
set textname "$shortname"
# if { [llength $tmplist] >5 } { set textname [lindex $tmplist 5] }
set textname "$textname [DFGetAttributeValue $DDF_Browser $df_entry [lindex $tmplist 6]]"
# Transaction analysis
if {$transaction == "0"} {
# set locstyle $DFTREE_AttributeStyle
} else {
# set textname "$textname T=$transaction"
# set locstyle $DFTREE_AttributeStyle1
}
# Valid?
if {$valid == "NotValid"} {set textname "$textname $valid"}
# Forgotten?
if {$forgotten == "Forgotten"} {set textname "$textname $forgotten"}
# Backuped?
if {$backuped == "Backuped"} {set textname "$textname $backuped"}
set df_new [$df_tree insert $df_node end \
-text $textname -image $node_img -tags Attribute]
if {$maybeopen == "1"} {
$df_tree item $df_new -open true
DFTREE:Tree:UpdateAttribute $DDF_Browser $df_tree $df_new $index
}
}
}
###############################################################################
# $loc is always the attribute index
#
proc DFTREE:Tree:UpdateAttribute { DDF_Browser df_tree df_node a_index } {
global DFTREE_GLOBALS
global $DDF_Browser
set tmplist [split [DFOpenAttribute $DDF_Browser $a_index ] "\\"]
# Failed or not?
if {[lindex $tmplist 0] == "Failed"} {
## set locstyle $DFTREE_AttributeStyle2
} else {
## set locstyle $DFTREE_AttributeStyle
}
foreach name $tmplist {
$df_tree insert $df_node end -text $name -tags Terminal
}
return
}
###############################################################################
# item:
# "Entry Name=TheNameIfExists Modified|NotModified 0|1"
proc FCTREE:Tree:DecodeLabelItem { DDF_Browser df_tree df_node df_entry labelItem} {
global DFTREE_GLOBALS
global $DDF_Browser
set tmplist [split $labelItem " " ]
set labname [lindex $tmplist 0]
set textname "$labname"
if {$labname == "AttributeList"} {
# Attribute List
# --------------
#set modified [lindex $tmplist 1]
# Modified or not?
#if {$modified == "Modified"} {
# set textname "$textname $modified"
## set locstyle $DFTREE_AttributeStyle1
#} else {
## set locstyle $DFTREE_AttributeStyle
#}
#set df_new [$df_tree insert $df_node end \
# -text $textname \
# -image $DFTREE_GLOBALS(ImageAttrList) \
# -tags AttributeList]
#$df_tree item $df_new -open true
DFTREE:Tree:UpdateAttributeList $DDF_Browser $df_tree $df_node $df_entry
} else {
# Sub-label(s)
# ------------
set name [lindex $tmplist 1]
set modified [lindex $tmplist 2]
set maybeopen [lindex $tmplist 3]
# Name?
set ll [expr [string length $name] -2]
if {$ll > 0} {
set textname "$textname [string range $name 1 $ll]"
}
# Modified or not?
if {$modified == "Modified"} {
set textname "$textname $modified"
}
set df_new [$df_tree insert $df_node end \
-text $textname \
-image $DFTREE_GLOBALS(ImageLabel) \
-values $labname \
-tags Label]
if {$maybeopen == "1"} {
$df_tree item $df_new -open true
}
DFTREE:Tree:UpdateLabel $DDF_Browser $df_tree $df_new $labname
}
}
###############################################################################
#
#
proc DFGetAttributeValue { DDF_Browser lab index } {
global $DDF_Browser; # necessary for DRAW command to see the browser
if {[catch "XAttributeValue $DDF_Browser $lab $index" ret]} {
return ""
}
if {"$ret" == ""} { return "" }
return "\[$ret\]"
}
###############################################################################
#
#
proc DFOpenImage { img } {
global env
if {[catch "image create photo -file $env(CSF_OCCTResourcePath)/DrawResources/$img" ret]} {
return ""
}
return $ret
}