?? notebook.wgt
字號(hào):
# $Id: notebook.wgt,v 1.16 2002/10/10 06:35:55 cgavin Exp $
##############################################################################
#
# Visual TCL - A cross-platform application development environment
#
# Copyright (C) 2001 Damon Courtney
#
# Description file for Bwidgets notebook
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##############################################################################
#
Class NoteBook
Lib bwidget
Icon icon_BwTabnotebook.gif
TreeLabel BWidget Tabbed Notebook
CreateCmd NoteBook
MegaWidget yes
DefaultOptions -width 300 -height 200
DefaultValues -background -foreground -font
ClassOption -_bwidgets_notebook_pages
InsertCmd vTcl::widgets::bwidgets::notebook::insertCmd
DeleteCmd vTcl::widgets::bwidgets::notebook::deleteCmd
TreeChildrenCmd {vTcl::widgets::bwidgets::notebook::treeChildrenCmd
vTcl::widgets::bwidgets::notebook::treeChildrenChildsite}
SelectSiteCmd vTcl::widgets::bwidgets::notebook::selectSiteCmd
DeleteSiteCmd vTcl::widgets::bwidgets::notebook::deleteSiteCmd
DumpCmd vTcl::widgets::bwidgets::notebook::dumpCmd
DumpInfoCmd vTcl::widgets::bwidgets::notebook::dumpInfoCmd
GetImagesCmd vTcl::widgets::bwidgets::notebook::getImagesCmd
## Tabbed notebook support
NewOption -_bwidgets_notebook_pages "pages" combobox
OptionConfigCmd -_bwidgets_notebook_pages config vTcl::widgets::bwidgets::config_pages
OptionConfigCmd -_bwidgets_notebook_pages update vTcl::widgets::bwidgets::update_pages
OptionConfigCmd -_bwidgets_notebook_pages get vTcl::widgets::bwidgets::get_pages
OptionConfigCmd -_bwidgets_notebook_pages select vTcl::widgets::bwidgets::select_page
OptionConfigCmd -_bwidgets_notebook_pages edit vTcl::itemEdit::edit
OptionConfigCmd -_bwidgets_notebook_pages editArg vTcl::widgets::bwidgets::notebook::edit
## Page-specific options
NewOption -createcmd "create cmd" command
NewOption -raisecmd "raise cmd" command
NewOption -leavecmd "leave cmd" command
## Right-click menu
Function "Edit Pages..." vTcl::widgets::bwidgets::notebook::editCmd
namespace eval ::vTcl::widgets::bwidgets::notebook::edit {
proc getTitle {target} {
return "Edit pages for $target"
}
proc getLabelOption {} {
return -text
}
proc getItems {target} {
## first item in the list is the current index
set pages [$target pages]
set current [$target index [$target raise]]
set values $current
foreach page $pages {
lappend values [$target itemcget $page -text]
}
return $values
}
proc addItem {target} {
set pages [$target pages]
set index 0
## repeat until we find an unused page number
while {1} {
incr index
set newpage "page$index"
if {[lsearch -exact $pages $newpage] == -1} break
}
$target insert end $newpage -text "New Page"
$target raise $newpage
vTcl:init_wtree
return "New Page"
}
proc removeItem {target index} {
set pages [$target pages]
set page [lindex $pages $index]
$target delete $page
vTcl:init_wtree
}
proc itemConfigure {target index args} {
set pages [$target pages]
set page [lindex $pages $index]
if {$args == ""} {
return [$target itemconfigure $page]
} else {
eval $target itemconfigure $page $args
}
}
proc moveUpOrDown {target index direction} {
set offset(up) -1
set offset(down) 1
set pages [$target pages]
set length [llength $pages]
set page [lindex $pages $index]
$target move $page [expr ($index + $offset($direction)) % $length]
vTcl:init_wtree
}
}
namespace eval vTcl::widgets::bwidgets::notebook {
proc editCmd {} {
set target $::vTcl(w,widget)
::vTcl::itemEdit::edit $target ::vTcl::widgets::bwidgets::notebook::edit
}
proc deleteCmd {target} {
bindtags $target "nothing"
NoteBook::_destroy $target
destroy $target
}
proc insertCmd {target} {
$target insert end page1 -text {Page 1}
$target insert end page2 -text {Page 2}
$target insert end page3 -text {Page 3}
$target raise page1
}
# All right, I explain it: 0 is the number of extra levels
# in the window path between the megawidget and its
# pages (childsites).
proc treeChildrenCmd {target {diff \#0}} {
set children ""
set wantsdiff [expr {$diff != ""}]
foreach site [treeChildrenChildsite $target] {
foreach child [::vTcl:complete_widget_tree $site $wantsdiff] {
lappend children $child$diff
}
}
return $children
}
proc treeChildrenChildsite {target} {
set pages [$target pages]
set sites ""
foreach page $pages {
lappend sites [$target getframe $page]
}
return $sites
}
proc selectSiteCmd {target site} {
set pages [$target pages]
foreach page $pages {
if {[$target getframe $page] == $site} {
$target raise $page
break
}
}
}
proc deleteSiteCmd {target site} {
set pages [$target pages]
foreach page $pages {
if {[$target getframe $page] == $site} {
$target delete $page
$target raise [$target pages 0]
break
}
}
}
proc dumpCmd {target basename} {
set result [vTcl:dump_widget_opt $target $basename]
set pages [$target pages]
foreach page $pages {
set conf [$target itemconfigure $page]
set pairs [vTcl:get_subopts_special $conf $target]
append result "$::vTcl(tab)$basename insert end $page \\\n"
append result "[vTcl:clean_pairs $pairs]\n"
}
set size [llength $pages]
for {set i 0} {$i < $size} {incr i} {
set site [$target getframe [lindex $pages $i]]
append result "$::vTcl(tab)"
set sitevariable "site_[llength [split $site .]]_$i"
append result "set $sitevariable "
append result "\[$basename getframe [lindex $pages $i]\]\n"
append result \
[vTcl::widgets::bwidgets::dump_subwidgets $site \$$sitevariable]
}
append result "$::vTcl(tab)$basename raise [lindex $pages 0]\n"
return $result
}
proc dumpInfoCmd {target basename} {
global classes
set result [vTcl:dump:widget_info $target $basename]
set pages [$target pages]
set size [llength $pages]
for {set i 0} {$i < $size} {incr i} {
set site [$target getframe [lindex $pages $i]]
append result "$::vTcl(tab)"
set sitevariable "site_[llength [split $site .]]_$i"
append result "set $sitevariable "
append result "\[$basename getframe [lindex $pages $i]\]\n"
append result [$classes(Frame,dumpInfoCmd) $site \$$sitevariable]
}
return $result
}
proc getImagesCmd {target} {
set result {}
set pages [$target pages]
foreach page $pages {
set image [$target itemcget $page -image]
if {$image != ""} {
lappend result $image
}
}
return $result
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -