📄 tixpanedwindow.wgt
字号:
Name tixPanedWindow
Lib tix
Class TixPanedWindow
Icon @vTcl::widgets::tix::panedwindow::getIcon
TreeLabel Tix PanedWindow
DefaultOptions -orient vertical
DefaultValues -background
DumpCmd vTcl::widgets::tix::panedwindow::dumpCmd
DumpInfoCmd vTcl::widgets::tix::panedwindow::dumpInfoCmd
DumpChildren no
MegaWidget yes
InsertCmd vTcl::widgets::tix::panedwindow::insertCmd
DeleteSiteCmd vTcl::widgets::tix::panedwindow::deleteSiteCmd
TreeChildrenCmd "vTcl::widgets::tix::panedwindow::treeChildrenCmd \
vTcl::widgets::tix::panedwindow::treeChildrenChildsite"
## Right-click menu
Function "Edit Panes..." vTcl::widgets::tix::panedwindow::editCmd
NewOption -allowresize "allow resize" boolean
NewOption -orientation "orientation" choice {vertical horizontal}
## Special proc for setting up icons on the toolbar.
proc vTcl:TixPanedWindow:ToolBarSetup {} {
vTcl:toolbar_add tix TixPanedWindow \
"vertical paned window" \
icon_tixPanedWindow.gif "-orientation vertical"
vTcl:toolbar_add tix TixPanedWindow \
"horizontal paned window" \
../lib/Widgets/tix/tixPanedWindowHoriz.gif "-orientation horizontal"
}
## Panes editing support
NewOption -_tix_panes "panes" combobox
ClassOption -_tix_panes
OptionConfigCmd -_tix_panes config vTcl::widgets::tix::panedwindow::config_panes
OptionConfigCmd -_tix_panes update vTcl::widgets::tix::panedwindow::update_panes
OptionConfigCmd -_tix_panes get vTcl::widgets::tix::panedwindow::get_panes
OptionConfigCmd -_tix_panes select vTcl::widgets::tix::panedwindow::select_pane
OptionConfigCmd -_tix_panes edit vTcl::itemEdit::edit
OptionConfigCmd -_tix_panes editArg vTcl::widgets::tix::panedwindow::edit
namespace eval vTcl::widgets::tix::panedwindow::edit {
proc getTitle {target} {
return "Edit panes for $target"
}
proc getLabelOption {} {
return {}
}
proc getItems {target} {
## first item in the list is the current index
set panes [$target panes]
set current 0
set values $current
for {set i 0} {$i < [llength $panes]} {incr i} {
lappend values "Pane [expr $i + 1]"
}
return $values
}
proc addItem {target} {
set index 0
set panes [$target panes]
## repeat until we find an unused pane number
while {1} {
incr index
set newpane "pane$index"
if {[lsearch -exact $panes $newpane] == -1} break
}
$target add $newpane
vTcl:init_wtree
return "Pane $index"
}
proc removeItem {target index} {
set panes [$target panes]
set pane [lindex $panes $index]
$target delete $pane
vTcl:init_wtree
}
proc itemConfigure {target index args} {
set panes [$target panes]
set pane [lindex $panes $index]
if {$args == ""} {
return [$target paneconfigure $pane]
} else {
eval $target paneconfigure $pane $args
}
}
proc moveUpOrDown {target index direction} {
error "Not implemented"
}
}
namespace eval vTcl::widgets::tix::panedwindow {
proc editCmd {} {
set target $::vTcl(w,widget)
::vTcl::itemEdit::edit $target vTcl::widgets::tix::panedwindow::edit
}
proc getIcon {{w ""}} {
if {[lempty $w]} {
return [list icon_tixPanedWindow.gif ../lib/Widgets/tix/tixPanedWindowHoriz.gif]
}
switch [$w cget -orientation] {
vertical {
return icon_tixPanedWindow.gif
}
horizontal {
return ../lib/Widgets/tix/tixPanedWindowHoriz.gif
}
}
}
proc update_panes {target var} {
## there is a trace on var to update the combobox
## first item in the list is the current index
set panes [$target panes]
set current 0
set values $current
for {set i 0} {$i < [llength $panes]} {incr i} {
lappend values "Pane [expr $i + 1]"
}
## this will trigger the trace
set ::$var $values
}
proc config_panes {target var} {
}
proc get_panes {target} {
}
proc select_pane {target index} {
}
proc insertCmd {target} {
## Add two pages to start with.
$target add pane1
$target add pane2
$target subwidget pane1 configure -width 30 -height 30
$target subwidget pane2 configure -width 30 -height 30
}
proc treeChildrenCmd {target {diff ""}} {
set children ""
set wantsdiff [expr {$diff != ""}]
set entries [$target panes]
foreach pane $entries {
set site [$target subwidget $pane]
foreach child [vTcl:complete_widget_tree $site $wantsdiff] {
lappend children $child$diff
}
}
return $children
}
proc treeChildrenChildsite {target} {
set entries [$target panes]
set sites ""
foreach pane $entries {
lappend sites [$target subwidget $pane]
}
return $sites
}
proc deleteSiteCmd {target site} {
set entries [$target panes]
foreach page $entries {
set subwidget [$target subwidget $page]
if {$site == $subwidget} {
$target delete $page
return
}
}
}
proc dumpCmd {target basename} {
global vTcl
set result [vTcl:dump_widget_opt $target $basename]
set entries [$target panes]
foreach page $entries {
set validcfg ""
set conf [$target paneconfigure $page]
foreach c $conf {
# Filter the valid options out
if [regexp -- {^-(after|allow|at|before|expand|max|min|size)} $c] {
lappend validcfg $c
}
}
set pairs [vTcl:conf_to_pairs $validcfg ""]
append result "$vTcl(tab)$basename add $page \\\n"
append result "[vTcl:clean_pairs $pairs]\n"
}
set index 0
foreach page $entries {
set subwidget [$target subwidget $page]
set sitevariable "site_[llength [split $subwidget .]]_[vTcl:rename $page]"
append result "$vTcl(tab)"
append result "set $sitevariable "
append result "\[$basename subwidget \[lindex \[$basename panes\] $index\]\]\n"
append result [vTcl:lib_tix:dump_subwidgets $subwidget \$$sitevariable]
incr index
}
return $result
}
proc dumpInfoCmd {target basename} {
global vTcl classes
set result [vTcl:dump:widget_info $target $basename]
set entries [$target panes]
set index 0
foreach page $entries {
set subwidget [$target subwidget $page]
set sitevariable "site_[llength [split $subwidget .]]_[vTcl:rename $page]"
append result "$vTcl(tab)"
append result "set $sitevariable "
append result "\[$basename subwidget \[lindex \[$basename panes\] $index\]\]\n"
append result [$classes(Frame,dumpInfoCmd) $subwidget \$$sitevariable]
incr index
}
return $result
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -