arcadia 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +39 -38
- data/bin/arc +3 -0
- data/bin/arcadia +0 -1
- data/conf/arcadia.conf +54 -35
- data/conf/arcadia.init.rb +26 -3
- data/conf/arcadia.res.rb +56 -4
- data/ext/ae-breakpoints/ae-breakpoints.rb +1 -1
- data/ext/ae-dir-projects/ae-dir-projects.rb +113 -45
- data/ext/ae-editor/ae-editor.conf +6 -2
- data/ext/ae-editor/ae-editor.rb +1009 -616
- data/ext/ae-editor/langs/coderay.tokens +40 -0
- data/ext/ae-editor/langs/conf.lang +12 -10
- data/ext/ae-editor/langs/erb.lang.bind +1 -0
- data/ext/ae-editor/langs/java.lang +4 -0
- data/ext/ae-editor/langs/rb.lang +25 -55
- data/ext/ae-editor/langs/rhtml.lang +4 -0
- data/ext/ae-editor/langs/tokens.lang.bind +1 -0
- data/ext/ae-editor/langs/xml.lang +4 -0
- data/ext/ae-file-history/ae-file-history.rb +140 -32
- data/ext/ae-output/ae-output.rb +267 -262
- data/ext/ae-rad/ae-rad-inspector.rb +1 -1
- data/ext/ae-rad/ae-rad-libs.rb +15 -7
- data/ext/ae-rad/ae-rad.conf +4 -4
- data/ext/ae-rad/lib/tk/al-tk.rb +4 -3
- data/ext/ae-ruby-debug/ae-ruby-debug.conf +4 -2
- data/ext/ae-ruby-debug/ae-ruby-debug.rb +40 -15
- data/ext/ae-search-in-files/ae-search-in-files.rb +70 -14
- data/ext/ae-search-in-files/ext/ack-in-files/ack-in-files.conf +15 -0
- data/ext/ae-search-in-files/ext/ack-in-files/ack-in-files.rb +80 -0
- data/ext/ae-shell/ae-shell.conf +4 -1
- data/ext/ae-shell/ae-shell.rb +78 -43
- data/ext/test-shutdown-after-startup/test-shutdown-after-startup.conf +4 -0
- data/ext/test-shutdown-after-startup/test-shutdown-after-startup.rb +20 -0
- data/lib/a-commons.rb +118 -22
- data/lib/a-contracts.rb +46 -2
- data/lib/a-core.rb +970 -284
- data/lib/a-tkcommons.rb +16 -8
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ArrowButton.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/BWidget.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Button.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ButtonBox.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ComboBox.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Dialog.html +20 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DragSite.html +6 -4
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DropSite.html +15 -3
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DynamicHelp.html +8 -5
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Entry.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Label.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/LabelEntry.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/LabelFrame.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ListBox.html +1 -1
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/MainFrame.html +8 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/MessageDlg.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/NoteBook.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PagesManager.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PanedWindow.html +21 -5
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PanelFrame.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PasswdDlg.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ProgressBar.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ProgressDlg.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrollView.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrollableFrame.html +5 -2
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrolledWindow.html +36 -4
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SelectColor.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SelectFont.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Separator.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SpinBox.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/StatusBar.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/TitleFrame.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Tree.html +21 -31
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Widget.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/contents.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/index.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/navtree.html +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/options.htm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/CHANGES.txt +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/ChangeLog +289 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/LICENSE.txt +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/README.txt +2 -2
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/arrow.tcl +1 -1
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/bitmap.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/button.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/buttonbox.tcl +23 -12
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/color.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/combobox.tcl +101 -25
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/basic.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/bwidget.xbm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/demo.tcl +1 -1
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/dnd.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/manager.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/select.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/tmpldlg.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/tree.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/x1.xbm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dialog.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dragsite.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dropsite.tcl +2 -1
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dynhelp.tcl +194 -33
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/entry.tcl +8 -5
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/font.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/bold.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/copy.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/cut.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/dragfile.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/dragicon.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/error.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/file.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/folder.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/hourglass.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/info.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/italic.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/minus.xbm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/new.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/opcopy.xbm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/open.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/openfold.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/oplink.xbm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/opmove.xbm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/overstrike.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/palette.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/passwd.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/paste.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/plus.xbm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/print.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/question.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/redo.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/save.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/target.xbm +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/underline.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/undo.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/warning.gif +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/init.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/label.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/labelentry.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/labelframe.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/da.rc +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/de.rc +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/en.rc +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/es.rc +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/fr.rc +0 -0
- data/tcl/BWidget-1.9.0/lang/hu.rc +52 -0
- data/tcl/BWidget-1.9.0/lang/nl.rc +52 -0
- data/tcl/BWidget-1.9.0/lang/no.rc +52 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/listbox.tcl +89 -34
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/mainframe.tcl +14 -13
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/messagedlg.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/notebook.tcl +3 -1
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/pagesmgr.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/panedw.tcl +22 -18
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/panelframe.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/passwddlg.tcl +7 -3
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/pkgIndex.tcl +2 -2
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/progressbar.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/progressdlg.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollframe.tcl +60 -24
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollview.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollw.tcl +13 -11
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/separator.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/spinbox.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/statusbar.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/tests/entry.test +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/titleframe.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/tree.tcl +51 -41
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/utils.tcl +26 -11
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/widget.tcl +53 -19
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/wizard.tcl +0 -0
- data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/xpm2image.tcl +0 -0
- metadata +170 -145
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ----------------------------------------------------------------------------
|
|
2
2
|
# mainframe.tcl
|
|
3
3
|
# This file is part of Unifix BWidget Toolkit
|
|
4
|
-
# $Id: mainframe.tcl,v 1.
|
|
4
|
+
# $Id: mainframe.tcl,v 1.24 2009/07/01 14:41:30 oehhar Exp $
|
|
5
5
|
# ------------------------------------------------------------------------------
|
|
6
6
|
# Index of commands:
|
|
7
7
|
# - MainFrame::create
|
|
@@ -395,18 +395,7 @@ proc MainFrame::getmenu { path menuid } {
|
|
|
395
395
|
proc MainFrame::setmenustate { path tag state } {
|
|
396
396
|
variable _widget
|
|
397
397
|
|
|
398
|
-
#
|
|
399
|
-
# foreach {menu entry} $_widget($path,tags,$tag) {
|
|
400
|
-
# $menu entryconfigure $entry -state $state
|
|
401
|
-
# }
|
|
402
|
-
# }
|
|
403
|
-
|
|
404
|
-
# We need a more sophisticated state system.
|
|
405
|
-
# The original model was this: each menu item has a list of tags;
|
|
406
|
-
# whenever any one of those tags changed state, the menu item did too.
|
|
407
|
-
# This makes it hard to have items that are enabled only when both tagA and
|
|
408
|
-
# tagB are. The new model therefore only sets the menustate to enabled
|
|
409
|
-
# when ALL of its tags are enabled.
|
|
398
|
+
# Set menustate to enabled when ALL of its tags are enabled.
|
|
410
399
|
|
|
411
400
|
# First see if this is a real tag
|
|
412
401
|
if { [info exists _widget($path,tagstate,$tag)] } {
|
|
@@ -431,6 +420,18 @@ proc MainFrame::setmenustate { path tag state } {
|
|
|
431
420
|
return
|
|
432
421
|
}
|
|
433
422
|
|
|
423
|
+
# -----------------------------------------------------------------------------
|
|
424
|
+
# Command MainFrame::getmenustate
|
|
425
|
+
# -----------------------------------------------------------------------------
|
|
426
|
+
proc MainFrame::getmenustate { path tag } {
|
|
427
|
+
variable _widget
|
|
428
|
+
|
|
429
|
+
if {$_widget($path,tagstate,$tag)} {
|
|
430
|
+
return normal
|
|
431
|
+
} else {
|
|
432
|
+
return disabled
|
|
433
|
+
}
|
|
434
|
+
}
|
|
434
435
|
|
|
435
436
|
# -----------------------------------------------------------------------------
|
|
436
437
|
# Command MainFrame::menuonly
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ---------------------------------------------------------------------------
|
|
2
2
|
# notebook.tcl
|
|
3
3
|
# This file is part of Unifix BWidget Toolkit
|
|
4
|
-
# $Id: notebook.tcl,v 1.
|
|
4
|
+
# $Id: notebook.tcl,v 1.25 2009/07/01 14:41:30 oehhar Exp $
|
|
5
5
|
# ---------------------------------------------------------------------------
|
|
6
6
|
# Index of commands:
|
|
7
7
|
# - NoteBook::create
|
|
@@ -304,6 +304,7 @@ proc NoteBook::delete { path page {destroyframe 1} } {
|
|
|
304
304
|
destroy $path.f$page
|
|
305
305
|
}
|
|
306
306
|
_redraw $path
|
|
307
|
+
unset data($page,width) data($page,realized)
|
|
307
308
|
}
|
|
308
309
|
|
|
309
310
|
|
|
@@ -503,6 +504,7 @@ proc NoteBook::_itemconfigure { path page lres } {
|
|
|
503
504
|
$state == "disabled" && $data(select) == $page } {
|
|
504
505
|
set data(select) ""
|
|
505
506
|
}
|
|
507
|
+
_set_help $path $page
|
|
506
508
|
return $res
|
|
507
509
|
}
|
|
508
510
|
|
|
File without changes
|
|
@@ -58,6 +58,18 @@ proc PanedWindow::create { path args } {
|
|
|
58
58
|
set _panedw($path,weights) ""
|
|
59
59
|
set _panedw($path,configuredone) 0
|
|
60
60
|
|
|
61
|
+
set activator [Widget::getoption $path -activator]
|
|
62
|
+
if {[string equal $activator ""]} {
|
|
63
|
+
if { $::tcl_platform(platform) != "windows" } {
|
|
64
|
+
Widget::setMegawidgetOption $path -activator button
|
|
65
|
+
} else {
|
|
66
|
+
Widget::setMegawidgetOption $path -activator line
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if {[string equal [Widget::getoption $path -activator] "line"]} {
|
|
70
|
+
Widget::setMegawidgetOption $path -width 3
|
|
71
|
+
}
|
|
72
|
+
|
|
61
73
|
bind $path <Configure> [list PanedWindow::_realize $path %w %h]
|
|
62
74
|
bind $path <Destroy> [list PanedWindow::_destroy $path]
|
|
63
75
|
|
|
@@ -116,28 +128,20 @@ proc PanedWindow::add { path args } {
|
|
|
116
128
|
|
|
117
129
|
if { $num > 0 } {
|
|
118
130
|
set frame [frame $path.sash$num -relief flat -bd 0 \
|
|
119
|
-
|
|
120
|
-
set sep
|
|
121
|
-
|
|
122
|
-
set but
|
|
123
|
-
|
|
124
|
-
set
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
set activator [Widget::getoption $path -activator]
|
|
128
|
-
if {$activator == ""} {
|
|
129
|
-
if { $::tcl_platform(platform) != "windows" } {
|
|
130
|
-
set activator button
|
|
131
|
-
} else {
|
|
132
|
-
set activator line
|
|
133
|
-
}
|
|
134
|
-
}
|
|
131
|
+
-highlightthickness 0 -width $width -height $width -bg $bg]
|
|
132
|
+
set sep [frame $frame.sep -bd 5 -relief raised \
|
|
133
|
+
-highlightthickness 0 -bg $bg]
|
|
134
|
+
set but [frame $frame.but -bd 1 -relief raised \
|
|
135
|
+
-highlightthickness 0 -bg $bg -width $wbut -height $wbut]
|
|
136
|
+
set sepsize 2
|
|
137
|
+
|
|
138
|
+
set activator [Widget::getoption $path -activator]
|
|
135
139
|
if {$activator == "button"} {
|
|
136
140
|
set activator $but
|
|
141
|
+
set placeButton 1
|
|
137
142
|
} else {
|
|
138
143
|
set activator $sep
|
|
139
|
-
|
|
140
|
-
$sep configure -bd 3
|
|
144
|
+
$sep configure -bd 1
|
|
141
145
|
set placeButton 0
|
|
142
146
|
}
|
|
143
147
|
if {[string equal $side "top"] || [string equal $side "bottom"]} {
|
|
File without changes
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# passwddlg.tcl
|
|
3
3
|
# This file is part of Unifix BWidget Toolkit
|
|
4
4
|
# by Stephane Lavirotte (Stephane.Lavirotte@sophia.inria.fr)
|
|
5
|
-
# $Id: passwddlg.tcl,v 1.
|
|
5
|
+
# $Id: passwddlg.tcl,v 1.12 2009/06/11 15:42:51 oehhar Exp $
|
|
6
6
|
# -----------------------------------------------------------------------------
|
|
7
7
|
# Index of commands:
|
|
8
8
|
# - PasswdDlg::create
|
|
@@ -166,8 +166,12 @@ proc PasswdDlg::_verifonlogin { path labpass } {
|
|
|
166
166
|
# -----------------------------------------------------------------------------
|
|
167
167
|
# Command PasswdDlg::_verifonpasswd
|
|
168
168
|
# -----------------------------------------------------------------------------
|
|
169
|
-
proc PasswdDlg::_verifonpasswd { path
|
|
170
|
-
|
|
169
|
+
proc PasswdDlg::_verifonpasswd { path labpass } {
|
|
170
|
+
if {[string equal [$labpass cget -state] "disabled"]} {
|
|
171
|
+
Dialog::enddialog $path 0
|
|
172
|
+
} else {
|
|
173
|
+
focus $labpass
|
|
174
|
+
}
|
|
171
175
|
}
|
|
172
176
|
|
|
173
177
|
# -----------------------------------------------------------------------------
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
if {[catch {package require Tcl}]} return
|
|
2
|
-
package ifneeded BWidget 1.
|
|
2
|
+
package ifneeded BWidget 1.9 "\
|
|
3
3
|
package require Tk 8.1.1;\
|
|
4
|
-
[list tclPkgSetup $dir BWidget 1.
|
|
4
|
+
[list tclPkgSetup $dir BWidget 1.9 {
|
|
5
5
|
{arrow.tcl source {ArrowButton ArrowButton::create ArrowButton::use}}
|
|
6
6
|
{labelframe.tcl source {LabelFrame LabelFrame::create LabelFrame::use}}
|
|
7
7
|
{labelentry.tcl source {LabelEntry LabelEntry::create LabelEntry::use}}
|
|
File without changes
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ----------------------------------------------------------------------------
|
|
2
2
|
# scrollframe.tcl
|
|
3
3
|
# This file is part of Unifix BWidget Toolkit
|
|
4
|
-
# $Id: scrollframe.tcl,v 1.
|
|
4
|
+
# $Id: scrollframe.tcl,v 1.11 2009/07/17 15:29:51 oehhar Exp $
|
|
5
5
|
# ----------------------------------------------------------------------------
|
|
6
6
|
# Index of commands:
|
|
7
7
|
# - ScrollableFrame::create
|
|
@@ -17,27 +17,45 @@
|
|
|
17
17
|
namespace eval ScrollableFrame {
|
|
18
18
|
Widget::define ScrollableFrame scrollframe
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
20
|
+
# If themed, there is no background and -bg option
|
|
21
|
+
if {[Widget::theme]} {
|
|
22
|
+
Widget::declare ScrollableFrame {
|
|
23
|
+
{-width Int 0 0 {}}
|
|
24
|
+
{-height Int 0 0 {}}
|
|
25
|
+
{-areawidth Int 0 0 {}}
|
|
26
|
+
{-areaheight Int 0 0 {}}
|
|
27
|
+
{-constrainedwidth Boolean 0 0}
|
|
28
|
+
{-constrainedheight Boolean 0 0}
|
|
29
|
+
{-xscrollcommand TkResource "" 0 canvas}
|
|
30
|
+
{-yscrollcommand TkResource "" 0 canvas}
|
|
31
|
+
{-xscrollincrement TkResource "" 0 canvas}
|
|
32
|
+
{-yscrollincrement TkResource "" 0 canvas}
|
|
33
|
+
}
|
|
34
|
+
} else {
|
|
35
|
+
Widget::declare ScrollableFrame {
|
|
36
|
+
{-background TkResource "" 0 frame}
|
|
37
|
+
{-width Int 0 0 {}}
|
|
38
|
+
{-height Int 0 0 {}}
|
|
39
|
+
{-areawidth Int 0 0 {}}
|
|
40
|
+
{-areaheight Int 0 0 {}}
|
|
41
|
+
{-constrainedwidth Boolean 0 0}
|
|
42
|
+
{-constrainedheight Boolean 0 0}
|
|
43
|
+
{-xscrollcommand TkResource "" 0 canvas}
|
|
44
|
+
{-yscrollcommand TkResource "" 0 canvas}
|
|
45
|
+
{-xscrollincrement TkResource "" 0 canvas}
|
|
46
|
+
{-yscrollincrement TkResource "" 0 canvas}
|
|
47
|
+
{-bg Synonym -background}
|
|
48
|
+
}
|
|
33
49
|
}
|
|
34
50
|
|
|
35
51
|
Widget::addmap ScrollableFrame "" :cmd {
|
|
36
|
-
-
|
|
52
|
+
-width {} -height {}
|
|
37
53
|
-xscrollcommand {} -yscrollcommand {}
|
|
38
54
|
-xscrollincrement {} -yscrollincrement {}
|
|
39
55
|
}
|
|
40
|
-
|
|
56
|
+
if { ! [Widget::theme]} {
|
|
57
|
+
Widget::addmap ScrollableFrame "" .frame {-background {}}
|
|
58
|
+
}
|
|
41
59
|
|
|
42
60
|
variable _widget
|
|
43
61
|
|
|
@@ -58,18 +76,30 @@ proc ScrollableFrame::create { path args } {
|
|
|
58
76
|
if {[Widget::theme]} {
|
|
59
77
|
set frame [eval [list ttk::frame $path.frame] \
|
|
60
78
|
[Widget::subcget $path .frame]]
|
|
79
|
+
set bg [ttk::style lookup TFrame -background]
|
|
61
80
|
} else {
|
|
62
81
|
set frame [eval [list frame $path.frame] \
|
|
63
82
|
[Widget::subcget $path .frame] \
|
|
64
83
|
-highlightthickness 0 -borderwidth 0 -relief flat]
|
|
84
|
+
set bg [$frame cget -background]
|
|
65
85
|
}
|
|
86
|
+
# Give canvas frame (or theme) background
|
|
87
|
+
$canvas configure -background $bg
|
|
66
88
|
|
|
67
89
|
$canvas create window 0 0 -anchor nw -window $frame -tags win \
|
|
68
90
|
-width [Widget::cget $path -areawidth] \
|
|
69
91
|
-height [Widget::cget $path -areaheight]
|
|
70
92
|
|
|
71
93
|
bind $frame <Configure> \
|
|
72
|
-
|
|
94
|
+
[list ScrollableFrame::_frameConfigure $canvas]
|
|
95
|
+
# add <unmap> binding: <configure> is not called when frame
|
|
96
|
+
# becomes so small that it suddenly falls outside of currently visible area.
|
|
97
|
+
# but now we need to add a <map> binding too
|
|
98
|
+
bind $frame <Map> \
|
|
99
|
+
[list ScrollableFrame::_frameConfigure $canvas]
|
|
100
|
+
bind $frame <Unmap> \
|
|
101
|
+
[list ScrollableFrame::_frameConfigure $canvas 1]
|
|
102
|
+
|
|
73
103
|
bindtags $path [list $path BwScrollableFrame [winfo toplevel $path] all]
|
|
74
104
|
|
|
75
105
|
return [Widget::create ScrollableFrame $path]
|
|
@@ -207,20 +237,26 @@ proc ScrollableFrame::_resize { path } {
|
|
|
207
237
|
if { [Widget::getoption $path -constrainedheight] } {
|
|
208
238
|
$path:cmd itemconfigure win -height [winfo height $path]
|
|
209
239
|
}
|
|
240
|
+
# scollregion must also be reset when canvas size changes
|
|
241
|
+
_frameConfigure $path
|
|
210
242
|
}
|
|
211
243
|
|
|
212
244
|
|
|
213
245
|
# ----------------------------------------------------------------------------
|
|
214
246
|
# Command ScrollableFrame::_frameConfigure
|
|
215
247
|
# ----------------------------------------------------------------------------
|
|
216
|
-
proc ScrollableFrame::
|
|
248
|
+
proc ScrollableFrame::_max {a b} {return [expr {$a <= $b ? $b : $a}]}
|
|
249
|
+
proc ScrollableFrame::_frameConfigure {canvas {unmap 0}} {
|
|
217
250
|
# This ensures that we don't get funny scrollability in the frame
|
|
218
251
|
# when it is smaller than the canvas space
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
252
|
+
# use [winfo] to get height & width of frame
|
|
253
|
+
|
|
254
|
+
# [winfo] doesn't work for unmapped frame
|
|
255
|
+
set frameh [expr {$unmap ? 0 : [winfo height $canvas.frame]}]
|
|
256
|
+
set framew [expr {$unmap ? 0 : [winfo width $canvas.frame]}]
|
|
257
|
+
|
|
258
|
+
set height [_max $frameh [winfo height $canvas]]
|
|
259
|
+
set width [_max $framew [winfo width $canvas]]
|
|
260
|
+
|
|
225
261
|
$canvas:cmd configure -scrollregion [list 0 0 $width $height]
|
|
226
262
|
}
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# -----------------------------------------------------------------------------
|
|
2
2
|
# scrollw.tcl
|
|
3
3
|
# This file is part of Unifix BWidget Toolkit
|
|
4
|
-
# $Id: scrollw.tcl,v 1.
|
|
4
|
+
# $Id: scrollw.tcl,v 1.13 2009/06/29 13:28:24 oehhar Exp $
|
|
5
5
|
# -----------------------------------------------------------------------------
|
|
6
6
|
# Index of commands:
|
|
7
7
|
# - ScrolledWindow::create
|
|
@@ -198,12 +198,13 @@ proc ScrolledWindow::_set_hscroll { path vmin vmax } {
|
|
|
198
198
|
Widget::getVariable $path data
|
|
199
199
|
|
|
200
200
|
if {$data(realized) && $data(hsb,present)} {
|
|
201
|
-
if {$data(hsb,auto)} {
|
|
201
|
+
if {$data(hsb,auto) && ![info exists data(hlock)]} {
|
|
202
202
|
if {$data(hsb,packed) && $vmin == 0 && $vmax == 1} {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
203
|
+
set data(hsb,packed) 0
|
|
204
|
+
grid remove $path.hscroll
|
|
205
|
+
set data(hlock) 1
|
|
206
|
+
update idletasks
|
|
207
|
+
unset data(hlock)
|
|
207
208
|
} elseif {!$data(hsb,packed) && ($vmin != 0 || $vmax != 1)} {
|
|
208
209
|
set data(hsb,packed) 1
|
|
209
210
|
grid $path.hscroll -column 1 -row $data(hsb,row) \
|
|
@@ -225,12 +226,13 @@ proc ScrolledWindow::_set_vscroll { path vmin vmax } {
|
|
|
225
226
|
Widget::getVariable $path data
|
|
226
227
|
|
|
227
228
|
if {$data(realized) && $data(vsb,present)} {
|
|
228
|
-
if {$data(vsb,auto)} {
|
|
229
|
+
if {$data(vsb,auto) && ![info exists data(vlock)]} {
|
|
229
230
|
if {$data(vsb,packed) && $vmin == 0 && $vmax == 1} {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
231
|
+
set data(vsb,packed) 0
|
|
232
|
+
grid remove $path.vscroll
|
|
233
|
+
set data(vlock) 1
|
|
234
|
+
update idletasks
|
|
235
|
+
unset data(vlock)
|
|
234
236
|
} elseif {!$data(vsb,packed) && ($vmin != 0 || $vmax != 1) } {
|
|
235
237
|
set data(vsb,packed) 1
|
|
236
238
|
grid $path.vscroll -column $data(vsb,column) -row 1 \
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ----------------------------------------------------------------------------
|
|
2
2
|
# tree.tcl
|
|
3
3
|
# This file is part of Unifix BWidget Toolkit
|
|
4
|
-
# $Id: tree.tcl,v 1.
|
|
4
|
+
# $Id: tree.tcl,v 1.60 2009/07/24 16:01:55 oehhar Exp $
|
|
5
5
|
# ----------------------------------------------------------------------------
|
|
6
6
|
# Index of commands:
|
|
7
7
|
# - Tree::create
|
|
@@ -327,6 +327,7 @@ proc Tree::insert { path index parent node args } {
|
|
|
327
327
|
if { [info exists data($node)] } {
|
|
328
328
|
return -code error "node \"$node\" already exists"
|
|
329
329
|
}
|
|
330
|
+
set parent [_node_name $path $parent]
|
|
330
331
|
if { ![info exists data($parent)] } {
|
|
331
332
|
return -code error "node \"$parent\" does not exist"
|
|
332
333
|
}
|
|
@@ -440,7 +441,7 @@ proc Tree::bindArea { path event script } {
|
|
|
440
441
|
# ----------------------------------------------------------------------------
|
|
441
442
|
proc Tree::bindText { path event script } {
|
|
442
443
|
if {[string length $script]} {
|
|
443
|
-
append script " \[Tree::_get_node_name [list $path] current 2\]"
|
|
444
|
+
append script " \[Tree::_get_node_name [list $path] current 2 1\]"
|
|
444
445
|
}
|
|
445
446
|
$path.c bind "node" $event $script
|
|
446
447
|
if {[Widget::getoption $path -selectfill]} {
|
|
@@ -456,7 +457,7 @@ proc Tree::bindText { path event script } {
|
|
|
456
457
|
# ----------------------------------------------------------------------------
|
|
457
458
|
proc Tree::bindImage { path event script } {
|
|
458
459
|
if {[string length $script]} {
|
|
459
|
-
append script " \[Tree::_get_node_name [list $path] current 2\]"
|
|
460
|
+
append script " \[Tree::_get_node_name [list $path] current 2 1\]"
|
|
460
461
|
}
|
|
461
462
|
$path.c bind "img" $event $script
|
|
462
463
|
if {[Widget::getoption $path -selectfill]} {
|
|
@@ -704,7 +705,11 @@ proc Tree::selection { path cmd args } {
|
|
|
704
705
|
return -code error \
|
|
705
706
|
"wrong#args: Expected $path selection get"
|
|
706
707
|
}
|
|
707
|
-
|
|
708
|
+
set nodes [list]
|
|
709
|
+
foreach node $data(selnodes) {
|
|
710
|
+
lappend nodes [_node_name_rev $path $node]
|
|
711
|
+
}
|
|
712
|
+
return $nodes
|
|
708
713
|
}
|
|
709
714
|
includes {
|
|
710
715
|
if {[llength $args] != 1} {
|
|
@@ -838,10 +843,10 @@ proc Tree::find {path findInfo {confine ""}} {
|
|
|
838
843
|
set xi [expr {[lindex [$path.c coords n:$node] 0] - $padx}]
|
|
839
844
|
set xs [lindex [$path.c bbox n:$node] 2]
|
|
840
845
|
if {$x >= $xi && $x <= $xs} {
|
|
841
|
-
return $node
|
|
846
|
+
return [_node_name_rev $path $node]
|
|
842
847
|
}
|
|
843
848
|
} else {
|
|
844
|
-
return $node
|
|
849
|
+
return [_node_name_rev $path $node]
|
|
845
850
|
}
|
|
846
851
|
}
|
|
847
852
|
return ""
|
|
@@ -1364,12 +1369,10 @@ proc Tree::_draw_subnodes { path nodes x0 y0 deltax deltay padx showlines } {
|
|
|
1364
1369
|
set yp $y1
|
|
1365
1370
|
set y1 [_draw_node $path $node $x0 [expr {$y1+$deltay}] $deltax $deltay $padx $showlines]
|
|
1366
1371
|
}
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
incr y0 $deltay
|
|
1372
|
-
}
|
|
1372
|
+
# Only draw a line to the invisible root node above the tree widget when
|
|
1373
|
+
# there are multiple top nodes.
|
|
1374
|
+
set len [llength $nodes]
|
|
1375
|
+
if { $showlines && $len && !($y0 < 0 && $len < 2) } {
|
|
1373
1376
|
set id [$path.c create line $x0 $y0 $x0 [expr {$yp+$deltay}] \
|
|
1374
1377
|
-fill [Widget::getoption $path -linesfill] \
|
|
1375
1378
|
-stipple [Widget::getoption $path -linestipple] \
|
|
@@ -1528,7 +1531,10 @@ proc Tree::_redraw_selection { path } {
|
|
|
1528
1531
|
}
|
|
1529
1532
|
set id [$path.c create rectangle $bbox -tags [list sel s:$node] \
|
|
1530
1533
|
-fill $selbg -outline $selbg]
|
|
1531
|
-
|
|
1534
|
+
if {$selfg != ""} {
|
|
1535
|
+
# Don't allow an empty fill - that would be transparent
|
|
1536
|
+
$path.c itemconfigure "n:$node" -fill $selfg
|
|
1537
|
+
}
|
|
1532
1538
|
$path.c lower $id
|
|
1533
1539
|
}
|
|
1534
1540
|
}
|
|
@@ -1592,8 +1598,7 @@ proc Tree::_drop_cmd { path source X Y op type dnddata } {
|
|
|
1592
1598
|
set data(dnd,afterid) ""
|
|
1593
1599
|
}
|
|
1594
1600
|
set data(dnd,scroll) ""
|
|
1595
|
-
if {[llength $
|
|
1596
|
-
&& [llength [set cmd [Widget::getoption $path -dropcmd]]]} {
|
|
1601
|
+
if {[llength [set cmd [Widget::getoption $path -dropcmd]]]} {
|
|
1597
1602
|
return [uplevel \#0 $cmd \
|
|
1598
1603
|
[list $path $source $data(dnd,node) $op $type $dnddata]]
|
|
1599
1604
|
}
|
|
@@ -1849,14 +1854,15 @@ proc Tree::_auto_scroll { path x y } {
|
|
|
1849
1854
|
# ----------------------------------------------------------------------------
|
|
1850
1855
|
# Command Tree::_scroll
|
|
1851
1856
|
# ----------------------------------------------------------------------------
|
|
1852
|
-
proc Tree::_scroll { path
|
|
1857
|
+
proc Tree::_scroll { path scroll } {
|
|
1853
1858
|
variable $path
|
|
1854
1859
|
upvar 0 $path data
|
|
1855
|
-
|
|
1860
|
+
set cmd [lindex $scroll 0]
|
|
1861
|
+
set dir [lindex $scroll 1]
|
|
1856
1862
|
if { ($dir == -1 && [lindex [$path.c $cmd] 0] > 0) ||
|
|
1857
1863
|
($dir == 1 && [lindex [$path.c $cmd] 1] < 1) } {
|
|
1858
1864
|
$path.c $cmd scroll $dir units
|
|
1859
|
-
set data(dnd,afterid) [after
|
|
1865
|
+
set data(dnd,afterid) [after 50 [list Tree::_scroll $path $scroll]]
|
|
1860
1866
|
} else {
|
|
1861
1867
|
set data(dnd,afterid) ""
|
|
1862
1868
|
DropSite::setcursor dot
|
|
@@ -2086,8 +2092,12 @@ proc Tree::_set_current_node {win node} {
|
|
|
2086
2092
|
# Results:
|
|
2087
2093
|
# node name of the tree node.
|
|
2088
2094
|
|
|
2089
|
-
proc Tree::_get_node_name {path {item current} {tagindex end-1}} {
|
|
2090
|
-
|
|
2095
|
+
proc Tree::_get_node_name {path {item current} {tagindex end-1} {truename 0}} {
|
|
2096
|
+
set node [string range [lindex [$path.c gettags $item] $tagindex] 2 end]
|
|
2097
|
+
if {$truename} {
|
|
2098
|
+
return [_node_name_rev $path $node]
|
|
2099
|
+
}
|
|
2100
|
+
return $node
|
|
2091
2101
|
}
|
|
2092
2102
|
|
|
2093
2103
|
# Tree::_get_node_padx --
|
|
@@ -2139,7 +2149,8 @@ proc Tree::_get_node_deltax {path node} {
|
|
|
2139
2149
|
# list The list of tags to apply to the canvas item
|
|
2140
2150
|
proc Tree::_get_node_tags {path node {tags ""}} {
|
|
2141
2151
|
eval [linsert $tags 0 lappend list TreeItemSentinal]
|
|
2142
|
-
if {[Widget::getoption $path.$node -helptext] == ""
|
|
2152
|
+
if {[Widget::getoption $path.$node -helptext] == "" &&
|
|
2153
|
+
[Widget::getoption $path.$node -helpcmd] == ""} { return $list }
|
|
2143
2154
|
|
|
2144
2155
|
switch -- [Widget::getoption $path.$node -helptype] {
|
|
2145
2156
|
balloon {
|
|
@@ -2167,29 +2178,22 @@ proc Tree::_set_help { path node } {
|
|
|
2167
2178
|
Widget::getVariable $path help
|
|
2168
2179
|
|
|
2169
2180
|
set item $path.$node
|
|
2170
|
-
set opts [list -helptype -helptext -helpvar]
|
|
2171
|
-
foreach {cty ctx cv} [eval [linsert $opts 0 Widget::hasChangedX $item]] break
|
|
2181
|
+
set opts [list -helptype -helptext -helpvar -helpcmd]
|
|
2182
|
+
foreach {cty ctx cv cc} [eval [linsert $opts 0 Widget::hasChangedX $item]] break
|
|
2172
2183
|
set text [Widget::getoption $item -helptext]
|
|
2184
|
+
set cmd [Widget::getoption $item -helpcmd]
|
|
2173
2185
|
|
|
2174
|
-
## If we've never set help for this item before, and text is not
|
|
2175
|
-
## we need to setup help.
|
|
2186
|
+
## If we've never set help for this item before, and text or cmd is not
|
|
2187
|
+
## blank, we need to setup help. We also need to reset help if any of the
|
|
2176
2188
|
## options have changed.
|
|
2177
|
-
if { (![info exists help($node)] && $text != ""
|
|
2189
|
+
if { (![info exists help($node)] && ($text != "" || $cmd != ""))
|
|
2190
|
+
|| $cty || $ctx || $cv } {
|
|
2178
2191
|
set help($node) 1
|
|
2179
2192
|
set type [Widget::getoption $item -helptype]
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
DynamicHelp::register $path.c balloon b:$node $text
|
|
2185
|
-
}
|
|
2186
|
-
variable {
|
|
2187
|
-
set var [Widget::getoption $item -helpvar]
|
|
2188
|
-
DynamicHelp::register $path.c variable n:$node $var $text
|
|
2189
|
-
DynamicHelp::register $path.c variable i:$node $var $text
|
|
2190
|
-
DynamicHelp::register $path.c variable b:$node $var $text
|
|
2191
|
-
}
|
|
2192
|
-
}
|
|
2193
|
+
set var [Widget::getoption $item -helpvar]
|
|
2194
|
+
DynamicHelp::add $path.c -item n:$node -type $type -text $text -variable $var -command $cmd
|
|
2195
|
+
DynamicHelp::add $path.c -item i:$node -type $type -text $text -variable $var -command $cmd
|
|
2196
|
+
DynamicHelp::add $path.c -item b:$node -type $type -text $text -variable $var -command $cmd
|
|
2193
2197
|
}
|
|
2194
2198
|
}
|
|
2195
2199
|
|
|
@@ -2202,9 +2206,15 @@ proc Tree::_mouse_select { path cmd args } {
|
|
|
2202
2206
|
}
|
|
2203
2207
|
}
|
|
2204
2208
|
|
|
2205
|
-
|
|
2206
2209
|
proc Tree::_node_name { path node } {
|
|
2207
|
-
|
|
2210
|
+
# Make sure node names are safe as tags and variable names
|
|
2211
|
+
set map [list & \1 | \2 ^ \3 ! \4 :: \5]
|
|
2212
|
+
return [string map $map $node]
|
|
2213
|
+
}
|
|
2214
|
+
|
|
2215
|
+
proc Tree::_node_name_rev { path node } {
|
|
2216
|
+
# Allow reverse interpretation of node names
|
|
2217
|
+
set map [list \1 & \2 | \3 ^ \4 ! \5 ::]
|
|
2208
2218
|
return [string map $map $node]
|
|
2209
2219
|
}
|
|
2210
2220
|
|