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.
Files changed (168) hide show
  1. data/README +39 -38
  2. data/bin/arc +3 -0
  3. data/bin/arcadia +0 -1
  4. data/conf/arcadia.conf +54 -35
  5. data/conf/arcadia.init.rb +26 -3
  6. data/conf/arcadia.res.rb +56 -4
  7. data/ext/ae-breakpoints/ae-breakpoints.rb +1 -1
  8. data/ext/ae-dir-projects/ae-dir-projects.rb +113 -45
  9. data/ext/ae-editor/ae-editor.conf +6 -2
  10. data/ext/ae-editor/ae-editor.rb +1009 -616
  11. data/ext/ae-editor/langs/coderay.tokens +40 -0
  12. data/ext/ae-editor/langs/conf.lang +12 -10
  13. data/ext/ae-editor/langs/erb.lang.bind +1 -0
  14. data/ext/ae-editor/langs/java.lang +4 -0
  15. data/ext/ae-editor/langs/rb.lang +25 -55
  16. data/ext/ae-editor/langs/rhtml.lang +4 -0
  17. data/ext/ae-editor/langs/tokens.lang.bind +1 -0
  18. data/ext/ae-editor/langs/xml.lang +4 -0
  19. data/ext/ae-file-history/ae-file-history.rb +140 -32
  20. data/ext/ae-output/ae-output.rb +267 -262
  21. data/ext/ae-rad/ae-rad-inspector.rb +1 -1
  22. data/ext/ae-rad/ae-rad-libs.rb +15 -7
  23. data/ext/ae-rad/ae-rad.conf +4 -4
  24. data/ext/ae-rad/lib/tk/al-tk.rb +4 -3
  25. data/ext/ae-ruby-debug/ae-ruby-debug.conf +4 -2
  26. data/ext/ae-ruby-debug/ae-ruby-debug.rb +40 -15
  27. data/ext/ae-search-in-files/ae-search-in-files.rb +70 -14
  28. data/ext/ae-search-in-files/ext/ack-in-files/ack-in-files.conf +15 -0
  29. data/ext/ae-search-in-files/ext/ack-in-files/ack-in-files.rb +80 -0
  30. data/ext/ae-shell/ae-shell.conf +4 -1
  31. data/ext/ae-shell/ae-shell.rb +78 -43
  32. data/ext/test-shutdown-after-startup/test-shutdown-after-startup.conf +4 -0
  33. data/ext/test-shutdown-after-startup/test-shutdown-after-startup.rb +20 -0
  34. data/lib/a-commons.rb +118 -22
  35. data/lib/a-contracts.rb +46 -2
  36. data/lib/a-core.rb +970 -284
  37. data/lib/a-tkcommons.rb +16 -8
  38. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ArrowButton.html +0 -0
  39. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/BWidget.html +0 -0
  40. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Button.html +0 -0
  41. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ButtonBox.html +0 -0
  42. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ComboBox.html +0 -0
  43. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Dialog.html +20 -0
  44. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DragSite.html +6 -4
  45. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DropSite.html +15 -3
  46. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/DynamicHelp.html +8 -5
  47. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Entry.html +0 -0
  48. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Label.html +0 -0
  49. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/LabelEntry.html +0 -0
  50. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/LabelFrame.html +0 -0
  51. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ListBox.html +1 -1
  52. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/MainFrame.html +8 -0
  53. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/MessageDlg.html +0 -0
  54. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/NoteBook.html +0 -0
  55. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PagesManager.html +0 -0
  56. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PanedWindow.html +21 -5
  57. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PanelFrame.html +0 -0
  58. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/PasswdDlg.html +0 -0
  59. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ProgressBar.html +0 -0
  60. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ProgressDlg.html +0 -0
  61. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrollView.html +0 -0
  62. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrollableFrame.html +5 -2
  63. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/ScrolledWindow.html +36 -4
  64. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SelectColor.html +0 -0
  65. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SelectFont.html +0 -0
  66. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Separator.html +0 -0
  67. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/SpinBox.html +0 -0
  68. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/StatusBar.html +0 -0
  69. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/TitleFrame.html +0 -0
  70. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Tree.html +21 -31
  71. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/Widget.html +0 -0
  72. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/contents.html +0 -0
  73. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/index.html +0 -0
  74. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/navtree.html +0 -0
  75. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/BWman/options.htm +0 -0
  76. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/CHANGES.txt +0 -0
  77. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/ChangeLog +289 -0
  78. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/LICENSE.txt +0 -0
  79. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/README.txt +2 -2
  80. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/arrow.tcl +1 -1
  81. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/bitmap.tcl +0 -0
  82. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/button.tcl +0 -0
  83. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/buttonbox.tcl +23 -12
  84. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/color.tcl +0 -0
  85. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/combobox.tcl +101 -25
  86. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/basic.tcl +0 -0
  87. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/bwidget.xbm +0 -0
  88. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/demo.tcl +1 -1
  89. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/dnd.tcl +0 -0
  90. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/manager.tcl +0 -0
  91. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/select.tcl +0 -0
  92. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/tmpldlg.tcl +0 -0
  93. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/tree.tcl +0 -0
  94. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/demo/x1.xbm +0 -0
  95. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dialog.tcl +0 -0
  96. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dragsite.tcl +0 -0
  97. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dropsite.tcl +2 -1
  98. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/dynhelp.tcl +194 -33
  99. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/entry.tcl +8 -5
  100. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/font.tcl +0 -0
  101. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/bold.gif +0 -0
  102. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/copy.gif +0 -0
  103. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/cut.gif +0 -0
  104. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/dragfile.gif +0 -0
  105. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/dragicon.gif +0 -0
  106. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/error.gif +0 -0
  107. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/file.gif +0 -0
  108. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/folder.gif +0 -0
  109. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/hourglass.gif +0 -0
  110. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/info.gif +0 -0
  111. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/italic.gif +0 -0
  112. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/minus.xbm +0 -0
  113. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/new.gif +0 -0
  114. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/opcopy.xbm +0 -0
  115. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/open.gif +0 -0
  116. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/openfold.gif +0 -0
  117. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/oplink.xbm +0 -0
  118. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/opmove.xbm +0 -0
  119. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/overstrike.gif +0 -0
  120. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/palette.gif +0 -0
  121. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/passwd.gif +0 -0
  122. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/paste.gif +0 -0
  123. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/plus.xbm +0 -0
  124. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/print.gif +0 -0
  125. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/question.gif +0 -0
  126. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/redo.gif +0 -0
  127. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/save.gif +0 -0
  128. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/target.xbm +0 -0
  129. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/underline.gif +0 -0
  130. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/undo.gif +0 -0
  131. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/images/warning.gif +0 -0
  132. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/init.tcl +0 -0
  133. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/label.tcl +0 -0
  134. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/labelentry.tcl +0 -0
  135. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/labelframe.tcl +0 -0
  136. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/da.rc +0 -0
  137. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/de.rc +0 -0
  138. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/en.rc +0 -0
  139. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/es.rc +0 -0
  140. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/lang/fr.rc +0 -0
  141. data/tcl/BWidget-1.9.0/lang/hu.rc +52 -0
  142. data/tcl/BWidget-1.9.0/lang/nl.rc +52 -0
  143. data/tcl/BWidget-1.9.0/lang/no.rc +52 -0
  144. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/listbox.tcl +89 -34
  145. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/mainframe.tcl +14 -13
  146. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/messagedlg.tcl +0 -0
  147. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/notebook.tcl +3 -1
  148. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/pagesmgr.tcl +0 -0
  149. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/panedw.tcl +22 -18
  150. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/panelframe.tcl +0 -0
  151. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/passwddlg.tcl +7 -3
  152. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/pkgIndex.tcl +2 -2
  153. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/progressbar.tcl +0 -0
  154. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/progressdlg.tcl +0 -0
  155. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollframe.tcl +60 -24
  156. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollview.tcl +0 -0
  157. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/scrollw.tcl +13 -11
  158. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/separator.tcl +0 -0
  159. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/spinbox.tcl +0 -0
  160. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/statusbar.tcl +0 -0
  161. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/tests/entry.test +0 -0
  162. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/titleframe.tcl +0 -0
  163. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/tree.tcl +51 -41
  164. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/utils.tcl +26 -11
  165. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/widget.tcl +53 -19
  166. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/wizard.tcl +0 -0
  167. data/tcl/{BWidget-1.8.0 → BWidget-1.9.0}/xpm2image.tcl +0 -0
  168. 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.23 2006/03/24 22:19:57 dev_null42a Exp $
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
- # if { [info exists _widget($path,tags,$tag)] } {
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
@@ -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.23 2005/01/26 01:01:26 hobbs Exp $
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
 
@@ -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
- -highlightthickness 0 -width $width -height $width -bg $bg]
120
- set sep [frame $frame.sep -bd 5 -relief raised \
121
- -highlightthickness 0 -bg $bg]
122
- set but [frame $frame.but -bd 1 -relief raised \
123
- -highlightthickness 0 -bg $bg -width $wbut -height $wbut]
124
- set placeButton 1
125
- set sepsize 2
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
- set sepsize 4
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"]} {
@@ -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.11 2006/09/28 22:31:28 dev_null42a Exp $
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 lablog } {
170
- focus $lablog
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.8 "\
2
+ package ifneeded BWidget 1.9 "\
3
3
  package require Tk 8.1.1;\
4
- [list tclPkgSetup $dir BWidget 1.8 {
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}}
@@ -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.7 2005/07/28 00:40:42 hobbs Exp $
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
- Widget::declare ScrollableFrame {
21
- {-background TkResource "" 0 frame}
22
- {-width Int 0 0 {}}
23
- {-height Int 0 0 {}}
24
- {-areawidth Int 0 0 {}}
25
- {-areaheight Int 0 0 {}}
26
- {-constrainedwidth Boolean 0 0}
27
- {-constrainedheight Boolean 0 0}
28
- {-xscrollcommand TkResource "" 0 canvas}
29
- {-yscrollcommand TkResource "" 0 canvas}
30
- {-xscrollincrement TkResource "" 0 canvas}
31
- {-yscrollincrement TkResource "" 0 canvas}
32
- {-bg Synonym -background}
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
- -background {} -width {} -height {}
52
+ -width {} -height {}
37
53
  -xscrollcommand {} -yscrollcommand {}
38
54
  -xscrollincrement {} -yscrollincrement {}
39
55
  }
40
- Widget::addmap ScrollableFrame "" .frame {-background {}}
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
- [list ScrollableFrame::_frameConfigure $canvas $frame %w %h]
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::_frameConfigure {canvas frame width height} {
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
- if {[winfo height $frame] < [winfo height $canvas]} {
220
- set height [winfo height $canvas]
221
- }
222
- if {[winfo width $frame] < [winfo width $canvas]} {
223
- set width [winfo width $canvas]
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
  }
@@ -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.12 2006/08/21 20:54:14 dev_null42a Exp $
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
- if {![info exists data(hlock)]} {
204
- set data(hsb,packed) 0
205
- grid remove $path.hscroll
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
- if {![info exists data(vlock)]} {
231
- set data(vsb,packed) 0
232
- grid remove $path.vscroll
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 \
@@ -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.54 2006/09/28 15:46:06 dev_null42a Exp $
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
- return $data(selnodes)
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
- if { $showlines && [llength $nodes] } {
1368
- if {$y0 < 0} {
1369
- # Adjust the drawing of the line to the first root node
1370
- # to start at the vertical point (not go up).
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
- $path.c itemconfigure "n:$node" -fill $selfg
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 $data(dnd,node)]
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 cmd dir } {
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 100 [list Tree::_scroll $path $cmd $dir]]
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
- return [string range [lindex [$path.c gettags $item] $tagindex] 2 end]
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] == ""} { return $list }
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 blank,
2175
- ## we need to setup help. We also need to reset help if any of the
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 != "") || $cty || $ctx || $cv } {
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
- switch $type {
2181
- balloon {
2182
- DynamicHelp::register $path.c balloon n:$node $text
2183
- DynamicHelp::register $path.c balloon i:$node $text
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
- set map [list & _ | _ ^ _ ! _]
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