arcadia 0.1.1 → 0.1.2

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 (167) hide show
  1. data/README +126 -123
  2. data/arcadia.rb +770 -756
  3. data/base/a-contracts.rb +130 -93
  4. data/base/a-ext.rb +280 -280
  5. data/base/a-libs.rb +5 -11
  6. data/base/a-utils.rb +235 -44
  7. data/conf/arcadia.conf +20 -16
  8. data/conf/arcadia.init.rb +0 -0
  9. data/conf/arcadia.res.rb +74 -0
  10. data/ext/ae-complete-code/ae-complete-code.conf +0 -0
  11. data/ext/ae-complete-code/ae-complete-code.rb +80 -79
  12. data/ext/ae-debug/ae-debug.conf +0 -0
  13. data/ext/ae-debug/ae-debug.rb +2 -6
  14. data/ext/ae-debug/debug1.57.rb +0 -0
  15. data/ext/ae-doc-code/ae-doc-code.conf +15 -0
  16. data/ext/ae-doc-code/ae-doc-code.rb +289 -0
  17. data/ext/ae-editor/ae-editor.conf +17 -8
  18. data/ext/ae-editor/ae-editor.rb +738 -396
  19. data/ext/ae-event-log/ae-event-log.conf +0 -0
  20. data/ext/ae-event-log/ae-event-log.rb +0 -0
  21. data/ext/ae-file-history/ae-file-history.conf +2 -2
  22. data/ext/ae-file-history/ae-file-history.rb +286 -290
  23. data/ext/ae-inspector/ae-inspector.conf +0 -0
  24. data/ext/ae-inspector/ae-inspector.rb +0 -0
  25. data/ext/ae-output-event/ae-output-event.conf +2 -2
  26. data/ext/ae-output/ae-output.conf +2 -2
  27. data/ext/ae-output/ae-output.rb +173 -178
  28. data/ext/ae-palette/ae-palette.conf +0 -0
  29. data/ext/ae-palette/ae-palette.rb +0 -0
  30. data/ext/ae-shell/ae-shell.conf +0 -0
  31. data/ext/ae-shell/ae-shell.rb +54 -54
  32. data/lib/tk/al-tk.rb +3076 -3082
  33. data/lib/tk/al-tk.res.rb +0 -0
  34. data/lib/tk/al-tkarcadia.rb +0 -0
  35. data/lib/tk/al-tkcustom.rb +0 -0
  36. data/lib/tkext/al-bwidget.rb +0 -0
  37. data/lib/tkext/al-iwidgets.rb +0 -0
  38. data/lib/tkext/al-tile.rb +0 -0
  39. data/lib/tkext/al-tktable.rb +0 -0
  40. data/tcl/BWidget-1.8.0/BWman/ArrowButton.html +276 -0
  41. data/tcl/BWidget-1.8.0/BWman/BWidget.html +228 -0
  42. data/tcl/BWidget-1.8.0/BWman/Button.html +273 -0
  43. data/tcl/BWidget-1.8.0/BWman/ButtonBox.html +264 -0
  44. data/tcl/BWidget-1.8.0/BWman/ComboBox.html +402 -0
  45. data/tcl/BWidget-1.8.0/BWman/Dialog.html +314 -0
  46. data/tcl/BWidget-1.8.0/BWman/DragSite.html +139 -0
  47. data/tcl/BWidget-1.8.0/BWman/DropSite.html +254 -0
  48. data/tcl/BWidget-1.8.0/BWman/DynamicHelp.html +248 -0
  49. data/tcl/BWidget-1.8.0/BWman/Entry.html +341 -0
  50. data/tcl/BWidget-1.8.0/BWman/Label.html +331 -0
  51. data/tcl/BWidget-1.8.0/BWman/LabelEntry.html +194 -0
  52. data/tcl/BWidget-1.8.0/BWman/LabelFrame.html +144 -0
  53. data/tcl/BWidget-1.8.0/BWman/ListBox.html +678 -0
  54. data/tcl/BWidget-1.8.0/BWman/MainFrame.html +283 -0
  55. data/tcl/BWidget-1.8.0/BWman/MessageDlg.html +218 -0
  56. data/tcl/BWidget-1.8.0/BWman/NoteBook.html +374 -0
  57. data/tcl/BWidget-1.8.0/BWman/PagesManager.html +180 -0
  58. data/tcl/BWidget-1.8.0/BWman/PanedWindow.html +142 -0
  59. data/tcl/BWidget-1.8.0/BWman/PanelFrame.html +153 -0
  60. data/tcl/BWidget-1.8.0/BWman/PasswdDlg.html +214 -0
  61. data/tcl/BWidget-1.8.0/BWman/ProgressBar.html +152 -0
  62. data/tcl/BWidget-1.8.0/BWman/ProgressDlg.html +145 -0
  63. data/tcl/BWidget-1.8.0/BWman/ScrollView.html +130 -0
  64. data/tcl/BWidget-1.8.0/BWman/ScrollableFrame.html +191 -0
  65. data/tcl/BWidget-1.8.0/BWman/ScrolledWindow.html +116 -0
  66. data/tcl/BWidget-1.8.0/BWman/SelectColor.html +164 -0
  67. data/tcl/BWidget-1.8.0/BWman/SelectFont.html +152 -0
  68. data/tcl/BWidget-1.8.0/BWman/Separator.html +77 -0
  69. data/tcl/BWidget-1.8.0/BWman/SpinBox.html +250 -0
  70. data/tcl/BWidget-1.8.0/BWman/StatusBar.html +147 -0
  71. data/tcl/BWidget-1.8.0/BWman/TitleFrame.html +107 -0
  72. data/tcl/BWidget-1.8.0/BWman/Tree.html +947 -0
  73. data/tcl/BWidget-1.8.0/BWman/Widget.html +502 -0
  74. data/tcl/BWidget-1.8.0/BWman/contents.html +84 -0
  75. data/tcl/BWidget-1.8.0/BWman/index.html +7 -0
  76. data/tcl/BWidget-1.8.0/BWman/navtree.html +41 -0
  77. data/tcl/BWidget-1.8.0/BWman/options.htm +458 -0
  78. data/tcl/BWidget-1.8.0/CHANGES.txt +266 -0
  79. data/tcl/BWidget-1.8.0/ChangeLog +1641 -0
  80. data/tcl/BWidget-1.8.0/LICENSE.txt +41 -0
  81. data/tcl/BWidget-1.8.0/README.txt +127 -0
  82. data/tcl/BWidget-1.8.0/arrow.tcl +551 -0
  83. data/tcl/BWidget-1.8.0/bitmap.tcl +94 -0
  84. data/tcl/BWidget-1.8.0/button.tcl +324 -0
  85. data/tcl/BWidget-1.8.0/buttonbox.tcl +403 -0
  86. data/tcl/BWidget-1.8.0/color.tcl +493 -0
  87. data/tcl/BWidget-1.8.0/combobox.tcl +809 -0
  88. data/tcl/BWidget-1.8.0/demo/basic.tcl +199 -0
  89. data/tcl/BWidget-1.8.0/demo/bwidget.xbm +46 -0
  90. data/tcl/BWidget-1.8.0/demo/demo.tcl +212 -0
  91. data/tcl/BWidget-1.8.0/demo/dnd.tcl +42 -0
  92. data/tcl/BWidget-1.8.0/demo/manager.tcl +141 -0
  93. data/tcl/BWidget-1.8.0/demo/select.tcl +59 -0
  94. data/tcl/BWidget-1.8.0/demo/tmpldlg.tcl +214 -0
  95. data/tcl/BWidget-1.8.0/demo/tree.tcl +260 -0
  96. data/tcl/BWidget-1.8.0/demo/x1.xbm +2258 -0
  97. data/tcl/BWidget-1.8.0/dialog.tcl +345 -0
  98. data/tcl/BWidget-1.8.0/dragsite.tcl +197 -0
  99. data/tcl/BWidget-1.8.0/dropsite.tcl +455 -0
  100. data/tcl/BWidget-1.8.0/dynhelp.tcl +625 -0
  101. data/tcl/BWidget-1.8.0/entry.tcl +469 -0
  102. data/tcl/BWidget-1.8.0/font.tcl +566 -0
  103. data/tcl/BWidget-1.8.0/images/bold.gif +0 -0
  104. data/tcl/BWidget-1.8.0/images/copy.gif +0 -0
  105. data/tcl/BWidget-1.8.0/images/cut.gif +0 -0
  106. data/tcl/BWidget-1.8.0/images/dragfile.gif +0 -0
  107. data/tcl/BWidget-1.8.0/images/dragicon.gif +0 -0
  108. data/tcl/BWidget-1.8.0/images/error.gif +0 -0
  109. data/tcl/BWidget-1.8.0/images/file.gif +0 -0
  110. data/tcl/BWidget-1.8.0/images/folder.gif +0 -0
  111. data/tcl/BWidget-1.8.0/images/hourglass.gif +0 -0
  112. data/tcl/BWidget-1.8.0/images/info.gif +0 -0
  113. data/tcl/BWidget-1.8.0/images/italic.gif +0 -0
  114. data/tcl/BWidget-1.8.0/images/minus.xbm +5 -0
  115. data/tcl/BWidget-1.8.0/images/new.gif +0 -0
  116. data/tcl/BWidget-1.8.0/images/opcopy.xbm +5 -0
  117. data/tcl/BWidget-1.8.0/images/open.gif +0 -0
  118. data/tcl/BWidget-1.8.0/images/openfold.gif +0 -0
  119. data/tcl/BWidget-1.8.0/images/oplink.xbm +5 -0
  120. data/tcl/BWidget-1.8.0/images/opmove.xbm +5 -0
  121. data/tcl/BWidget-1.8.0/images/overstrike.gif +0 -0
  122. data/tcl/BWidget-1.8.0/images/palette.gif +0 -0
  123. data/tcl/BWidget-1.8.0/images/passwd.gif +0 -0
  124. data/tcl/BWidget-1.8.0/images/paste.gif +0 -0
  125. data/tcl/BWidget-1.8.0/images/plus.xbm +5 -0
  126. data/tcl/BWidget-1.8.0/images/print.gif +0 -0
  127. data/tcl/BWidget-1.8.0/images/question.gif +0 -0
  128. data/tcl/BWidget-1.8.0/images/redo.gif +0 -0
  129. data/tcl/BWidget-1.8.0/images/save.gif +0 -0
  130. data/tcl/BWidget-1.8.0/images/target.xbm +9 -0
  131. data/tcl/BWidget-1.8.0/images/underline.gif +0 -0
  132. data/tcl/BWidget-1.8.0/images/undo.gif +0 -0
  133. data/tcl/BWidget-1.8.0/images/warning.gif +0 -0
  134. data/tcl/BWidget-1.8.0/init.tcl +40 -0
  135. data/tcl/BWidget-1.8.0/label.tcl +271 -0
  136. data/tcl/BWidget-1.8.0/labelentry.tcl +100 -0
  137. data/tcl/BWidget-1.8.0/labelframe.tcl +160 -0
  138. data/tcl/BWidget-1.8.0/lang/da.rc +52 -0
  139. data/tcl/BWidget-1.8.0/lang/de.rc +52 -0
  140. data/tcl/BWidget-1.8.0/lang/en.rc +52 -0
  141. data/tcl/BWidget-1.8.0/lang/es.rc +53 -0
  142. data/tcl/BWidget-1.8.0/lang/fr.rc +52 -0
  143. data/tcl/BWidget-1.8.0/listbox.tcl +1638 -0
  144. data/tcl/BWidget-1.8.0/mainframe.tcl +711 -0
  145. data/tcl/BWidget-1.8.0/messagedlg.tcl +128 -0
  146. data/tcl/BWidget-1.8.0/notebook.tcl +1164 -0
  147. data/tcl/BWidget-1.8.0/pagesmgr.tcl +294 -0
  148. data/tcl/BWidget-1.8.0/panedw.tcl +381 -0
  149. data/tcl/BWidget-1.8.0/panelframe.tcl +246 -0
  150. data/tcl/BWidget-1.8.0/passwddlg.tcl +178 -0
  151. data/tcl/BWidget-1.8.0/pkgIndex.tcl +47 -0
  152. data/tcl/BWidget-1.8.0/progressbar.tcl +208 -0
  153. data/tcl/BWidget-1.8.0/progressdlg.tcl +87 -0
  154. data/tcl/BWidget-1.8.0/scrollframe.tcl +226 -0
  155. data/tcl/BWidget-1.8.0/scrollview.tcl +254 -0
  156. data/tcl/BWidget-1.8.0/scrollw.tcl +280 -0
  157. data/tcl/BWidget-1.8.0/separator.tcl +75 -0
  158. data/tcl/BWidget-1.8.0/spinbox.tcl +331 -0
  159. data/tcl/BWidget-1.8.0/statusbar.tcl +422 -0
  160. data/tcl/BWidget-1.8.0/tests/entry.test +173 -0
  161. data/tcl/BWidget-1.8.0/titleframe.tcl +170 -0
  162. data/tcl/BWidget-1.8.0/tree.tcl +2228 -0
  163. data/tcl/BWidget-1.8.0/utils.tcl +645 -0
  164. data/tcl/BWidget-1.8.0/widget.tcl +1576 -0
  165. data/tcl/BWidget-1.8.0/wizard.tcl +1028 -0
  166. data/tcl/BWidget-1.8.0/xpm2image.tcl +115 -0
  167. metadata +141 -5
@@ -0,0 +1,208 @@
1
+ # ----------------------------------------------------------------------------
2
+ # progressbar.tcl
3
+ # This file is part of Unifix BWidget Toolkit
4
+ # ----------------------------------------------------------------------------
5
+ # Index of commands:
6
+ # - ProgressBar::create
7
+ # - ProgressBar::configure
8
+ # - ProgressBar::cget
9
+ # - ProgressBar::_destroy
10
+ # - ProgressBar::_modify
11
+ # ----------------------------------------------------------------------------
12
+
13
+ namespace eval ProgressBar {
14
+ Widget::define ProgressBar progressbar
15
+
16
+ Widget::declare ProgressBar {
17
+ {-type Enum normal 0
18
+ {normal incremental infinite nonincremental_infinite}}
19
+ {-maximum Int 100 0 "%d > 0"}
20
+ {-background TkResource "" 0 frame}
21
+ {-foreground TkResource "blue" 0 label}
22
+ {-borderwidth TkResource 2 0 frame}
23
+ {-troughcolor TkResource "" 0 scrollbar}
24
+ {-relief TkResource sunken 0 label}
25
+ {-orient Enum horizontal 1 {horizontal vertical}}
26
+ {-variable String "" 0}
27
+ {-idle Boolean 0 0}
28
+ {-width TkResource 100 0 frame}
29
+ {-height TkResource 4m 0 frame}
30
+ {-bg Synonym -background}
31
+ {-fg Synonym -foreground}
32
+ {-bd Synonym -borderwidth}
33
+ }
34
+
35
+ Widget::addmap ProgressBar "" :cmd {-background {} -width {} -height {}}
36
+ Widget::addmap ProgressBar "" .bar {
37
+ -troughcolor -background -borderwidth {} -relief {}
38
+ }
39
+
40
+ variable _widget
41
+ }
42
+
43
+
44
+ # ----------------------------------------------------------------------------
45
+ # Command ProgressBar::create
46
+ # ----------------------------------------------------------------------------
47
+ proc ProgressBar::create { path args } {
48
+ variable _widget
49
+
50
+ array set maps [list ProgressBar {} :cmd {} .bar {}]
51
+ array set maps [Widget::parseArgs ProgressBar $args]
52
+ eval frame $path $maps(:cmd) -class ProgressBar -bd 0 \
53
+ -highlightthickness 0 -relief flat
54
+ Widget::initFromODB ProgressBar $path $maps(ProgressBar)
55
+
56
+ set c [eval [list canvas $path.bar] $maps(.bar) -highlightthickness 0]
57
+ set fg [Widget::cget $path -foreground]
58
+ if { [string equal [Widget::cget $path -orient] "horizontal"] } {
59
+ $path.bar create rectangle -1 0 0 0 -fill $fg -outline $fg -tags rect
60
+ } else {
61
+ $path.bar create rectangle 0 1 0 0 -fill $fg -outline $fg -tags rect
62
+ }
63
+
64
+ set _widget($path,val) 0
65
+ set _widget($path,dir) 1
66
+ set _widget($path,var) [Widget::cget $path -variable]
67
+ if {$_widget($path,var) != ""} {
68
+ GlobalVar::tracevar variable $_widget($path,var) w \
69
+ [list ProgressBar::_modify $path]
70
+ set _widget($path,afterid) \
71
+ [after idle [list ProgressBar::_modify $path]]
72
+ }
73
+
74
+ bind $path.bar <Destroy> [list ProgressBar::_destroy $path]
75
+ bind $path.bar <Configure> [list ProgressBar::_modify $path]
76
+
77
+ return [Widget::create ProgressBar $path]
78
+ }
79
+
80
+
81
+ # ----------------------------------------------------------------------------
82
+ # Command ProgressBar::configure
83
+ # ----------------------------------------------------------------------------
84
+ proc ProgressBar::configure { path args } {
85
+ variable _widget
86
+
87
+ set res [Widget::configure $path $args]
88
+
89
+ if { [Widget::hasChangedX $path -variable] } {
90
+ set newv [Widget::cget $path -variable]
91
+ if { $_widget($path,var) != "" } {
92
+ GlobalVar::tracevar vdelete $_widget($path,var) w \
93
+ [list ProgressBar::_modify $path]
94
+ }
95
+ if { $newv != "" } {
96
+ set _widget($path,var) $newv
97
+ GlobalVar::tracevar variable $newv w \
98
+ [list ProgressBar::_modify $path]
99
+ if {![info exists _widget($path,afterid)]} {
100
+ set _widget($path,afterid) \
101
+ [after idle [list ProgressBar::_modify $path]]
102
+ }
103
+ } else {
104
+ set _widget($path,var) ""
105
+ }
106
+ }
107
+
108
+ foreach {cbd cor cma} [Widget::hasChangedX $path -borderwidth \
109
+ -orient -maximum] break
110
+
111
+ if { $cbd || $cor || $cma } {
112
+ if {![info exists _widget($path,afterid)]} {
113
+ set _widget($path,afterid) \
114
+ [after idle [list ProgressBar::_modify $path]]
115
+ }
116
+ }
117
+ if { [Widget::hasChangedX $path -foreground] } {
118
+ set fg [Widget::cget $path -foreground]
119
+ $path.bar itemconfigure rect -fill $fg -outline $fg
120
+ }
121
+ return $res
122
+ }
123
+
124
+
125
+ # ----------------------------------------------------------------------------
126
+ # Command ProgressBar::cget
127
+ # ----------------------------------------------------------------------------
128
+ proc ProgressBar::cget { path option } {
129
+ return [Widget::cget $path $option]
130
+ }
131
+
132
+
133
+ # ----------------------------------------------------------------------------
134
+ # Command ProgressBar::_modify
135
+ # ----------------------------------------------------------------------------
136
+ proc ProgressBar::_modify { path args } {
137
+ variable _widget
138
+
139
+ catch {unset _widget($path,afterid)}
140
+ if { ![GlobalVar::exists $_widget($path,var)] ||
141
+ [set val [GlobalVar::getvar $_widget($path,var)]] < 0 } {
142
+ catch {place forget $path.bar}
143
+ } else {
144
+ place $path.bar -relx 0 -rely 0 -relwidth 1 -relheight 1
145
+ set type [Widget::getoption $path -type]
146
+ if { $val != 0 && $type != "normal" && \
147
+ $type != "nonincremental_infinite"} {
148
+ set val [expr {$val+$_widget($path,val)}]
149
+ }
150
+ set _widget($path,val) $val
151
+ set max [Widget::getoption $path -maximum]
152
+ set bd [expr {2*[$path.bar cget -bd]}]
153
+ set w [winfo width $path.bar]
154
+ set h [winfo height $path.bar]
155
+ if {$type == "infinite" || $type == "nonincremental_infinite"} {
156
+ # JDC: New infinite behaviour
157
+ set tval [expr {$val % $max}]
158
+ if { $tval < ($max / 2.0) } {
159
+ set x0 [expr {double($tval) / double($max) * 1.5}]
160
+ } else {
161
+ set x0 [expr {(1.0-(double($tval) / double($max))) * 1.5}]
162
+ }
163
+ set x1 [expr {$x0 + 0.25}]
164
+ # convert coords to ints to prevent triggering canvas refresh
165
+ # bug related to fractional coords
166
+ if {[Widget::getoption $path -orient] == "horizontal"} {
167
+ $path.bar coords rect [expr {int($x0*$w)}] 0 \
168
+ [expr {int($x1*$w)}] $h
169
+ } else {
170
+ $path.bar coords rect 0 [expr {int($h-$x0*$h)}] $w \
171
+ [expr {int($x1*$h)}]
172
+ }
173
+ } else {
174
+ if { $val > $max } {set val $max}
175
+ if {[Widget::getoption $path -orient] == "horizontal"} {
176
+ $path.bar coords rect -1 0 [expr {int(double($val)*$w/$max)}] $h
177
+ } else {
178
+ $path.bar coords rect 0 [expr {$h+1}] $w \
179
+ [expr {int($h*(1.0 - double($val)/$max))}]
180
+ }
181
+ }
182
+ }
183
+ if {![Widget::cget $path -idle]} {
184
+ update idletasks
185
+ }
186
+ }
187
+
188
+
189
+ # ----------------------------------------------------------------------------
190
+ # Command ProgressBar::_destroy
191
+ # ----------------------------------------------------------------------------
192
+ proc ProgressBar::_destroy { path } {
193
+ variable _widget
194
+
195
+ if {[info exists _widget($path,afterid)]} {
196
+ after cancel $_widget($path,afterid)
197
+ unset _widget($path,afterid)
198
+ }
199
+ if {[info exists _widget($path,var)]} {
200
+ if {$_widget($path,var) != ""} {
201
+ GlobalVar::tracevar vdelete $_widget($path,var) w \
202
+ [list ProgressBar::_modify $path]
203
+ }
204
+ unset _widget($path,var)
205
+ }
206
+ unset _widget($path,dir)
207
+ Widget::destroy $path
208
+ }
@@ -0,0 +1,87 @@
1
+ # ----------------------------------------------------------------------------
2
+ # progressdlg.tcl
3
+ # This file is part of Unifix BWidget Toolkit
4
+ # ----------------------------------------------------------------------------
5
+ # Index of commands:
6
+ # - ProgressDlg::create
7
+ # ----------------------------------------------------------------------------
8
+
9
+ namespace eval ProgressDlg {
10
+ Widget::define ProgressDlg progressdlg Dialog ProgressBar
11
+
12
+ Widget::bwinclude ProgressDlg Dialog :cmd \
13
+ remove {
14
+ -modal -image -bitmap -side -anchor -cancel -default
15
+ -homogeneous -padx -pady -spacing
16
+ }
17
+
18
+ Widget::bwinclude ProgressDlg ProgressBar .frame.pb \
19
+ remove {-orient -width -height}
20
+
21
+ Widget::declare ProgressDlg {
22
+ {-width TkResource 25 0 label}
23
+ {-height TkResource 2 0 label}
24
+ {-textvariable TkResource "" 0 label}
25
+ {-font TkResource "" 0 label}
26
+ {-stop String "" 0}
27
+ {-command String "" 0}
28
+ }
29
+
30
+ Widget::addmap ProgressDlg :cmd .frame.msg \
31
+ {-width {} -height {} -textvariable {} -font {} -background {}}
32
+ }
33
+
34
+
35
+ # ----------------------------------------------------------------------------
36
+ # Command ProgressDlg::create
37
+ # ----------------------------------------------------------------------------
38
+ proc ProgressDlg::create { path args } {
39
+ array set maps [list ProgressDlg {} :cmd {} .frame.msg {} .frame.pb {}]
40
+ array set maps [Widget::parseArgs ProgressDlg $args]
41
+
42
+ eval [list Dialog::create] $path $maps(:cmd) \
43
+ [list -image [Bitmap::get hourglass] \
44
+ -modal none -side bottom -anchor e -class ProgressDlg]
45
+
46
+ Widget::initFromODB ProgressDlg "$path#ProgressDlg" $maps(ProgressDlg)
47
+
48
+ wm protocol $path WM_DELETE_WINDOW {;}
49
+
50
+ set frame [Dialog::getframe $path]
51
+ bind $frame <Destroy> [list Widget::destroy $path\#ProgressDlg]
52
+ $frame configure -cursor watch
53
+
54
+ eval [list label $frame.msg] $maps(.frame.msg) \
55
+ -relief flat -borderwidth 0 \
56
+ -highlightthickness 0 -anchor w -justify left
57
+ pack $frame.msg -side top -pady 3m -anchor nw -fill x -expand yes
58
+
59
+ eval [list ProgressBar::create] $frame.pb $maps(.frame.pb) -width 100
60
+ pack $frame.pb -side bottom -anchor w -fill x -expand yes
61
+
62
+ set stop [Widget::cget "$path#ProgressDlg" -stop]
63
+ set cmd [Widget::cget "$path#ProgressDlg" -command]
64
+ if { $stop != "" && $cmd != "" } {
65
+ Dialog::add $path -text $stop -name $stop -command $cmd
66
+ }
67
+ Dialog::draw $path
68
+ BWidget::grab local $path
69
+
70
+ return [Widget::create ProgressDlg $path 0]
71
+ }
72
+
73
+
74
+ # ----------------------------------------------------------------------------
75
+ # Command ProgressDlg::configure
76
+ # ----------------------------------------------------------------------------
77
+ proc ProgressDlg::configure { path args } {
78
+ return [Widget::configure "$path#ProgressDlg" $args]
79
+ }
80
+
81
+
82
+ # ----------------------------------------------------------------------------
83
+ # Command ProgressDlg::cget
84
+ # ----------------------------------------------------------------------------
85
+ proc ProgressDlg::cget { path option } {
86
+ return [Widget::cget "$path#ProgressDlg" $option]
87
+ }
@@ -0,0 +1,226 @@
1
+ # ----------------------------------------------------------------------------
2
+ # scrollframe.tcl
3
+ # This file is part of Unifix BWidget Toolkit
4
+ # $Id: scrollframe.tcl,v 1.7 2005/07/28 00:40:42 hobbs Exp $
5
+ # ----------------------------------------------------------------------------
6
+ # Index of commands:
7
+ # - ScrollableFrame::create
8
+ # - ScrollableFrame::configure
9
+ # - ScrollableFrame::cget
10
+ # - ScrollableFrame::getframe
11
+ # - ScrollableFrame::see
12
+ # - ScrollableFrame::xview
13
+ # - ScrollableFrame::yview
14
+ # - ScrollableFrame::_resize
15
+ # ----------------------------------------------------------------------------
16
+
17
+ namespace eval ScrollableFrame {
18
+ Widget::define ScrollableFrame scrollframe
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}
33
+ }
34
+
35
+ Widget::addmap ScrollableFrame "" :cmd {
36
+ -background {} -width {} -height {}
37
+ -xscrollcommand {} -yscrollcommand {}
38
+ -xscrollincrement {} -yscrollincrement {}
39
+ }
40
+ Widget::addmap ScrollableFrame "" .frame {-background {}}
41
+
42
+ variable _widget
43
+
44
+ bind BwScrollableFrame <Configure> [list ScrollableFrame::_resize %W]
45
+ bind BwScrollableFrame <Destroy> [list Widget::destroy %W]
46
+ }
47
+
48
+
49
+ # ----------------------------------------------------------------------------
50
+ # Command ScrollableFrame::create
51
+ # ----------------------------------------------------------------------------
52
+ proc ScrollableFrame::create { path args } {
53
+ Widget::init ScrollableFrame $path $args
54
+
55
+ set canvas [eval [list canvas $path] [Widget::subcget $path :cmd] \
56
+ -highlightthickness 0 -borderwidth 0 -relief flat]
57
+
58
+ if {[Widget::theme]} {
59
+ set frame [eval [list ttk::frame $path.frame] \
60
+ [Widget::subcget $path .frame]]
61
+ } else {
62
+ set frame [eval [list frame $path.frame] \
63
+ [Widget::subcget $path .frame] \
64
+ -highlightthickness 0 -borderwidth 0 -relief flat]
65
+ }
66
+
67
+ $canvas create window 0 0 -anchor nw -window $frame -tags win \
68
+ -width [Widget::cget $path -areawidth] \
69
+ -height [Widget::cget $path -areaheight]
70
+
71
+ bind $frame <Configure> \
72
+ [list ScrollableFrame::_frameConfigure $canvas $frame %w %h]
73
+ bindtags $path [list $path BwScrollableFrame [winfo toplevel $path] all]
74
+
75
+ return [Widget::create ScrollableFrame $path]
76
+ }
77
+
78
+
79
+ # ----------------------------------------------------------------------------
80
+ # Command ScrollableFrame::configure
81
+ # ----------------------------------------------------------------------------
82
+ proc ScrollableFrame::configure { path args } {
83
+ set res [Widget::configure $path $args]
84
+ set upd 0
85
+
86
+ set modcw [Widget::hasChanged $path -constrainedwidth cw]
87
+ set modw [Widget::hasChanged $path -areawidth w]
88
+ if { $modcw || (!$cw && $modw) } {
89
+ if { $cw } {
90
+ set w [winfo width $path]
91
+ }
92
+ set upd 1
93
+ }
94
+
95
+ set modch [Widget::hasChanged $path -constrainedheight ch]
96
+ set modh [Widget::hasChanged $path -areaheight h]
97
+ if { $modch || (!$ch && $modh) } {
98
+ if { $ch } {
99
+ set h [winfo height $path]
100
+ }
101
+ set upd 1
102
+ }
103
+
104
+ if { $upd } {
105
+ $path:cmd itemconfigure win -width $w -height $h
106
+ }
107
+ return $res
108
+ }
109
+
110
+
111
+ # ----------------------------------------------------------------------------
112
+ # Command ScrollableFrame::cget
113
+ # ----------------------------------------------------------------------------
114
+ proc ScrollableFrame::cget { path option } {
115
+ return [Widget::cget $path $option]
116
+ }
117
+
118
+
119
+ # ----------------------------------------------------------------------------
120
+ # Command ScrollableFrame::getframe
121
+ # ----------------------------------------------------------------------------
122
+ proc ScrollableFrame::getframe { path } {
123
+ return $path.frame
124
+ }
125
+
126
+ # ----------------------------------------------------------------------------
127
+ # Command ScrollableFrame::see
128
+ # ----------------------------------------------------------------------------
129
+ proc ScrollableFrame::see { path widget {vert top} {horz left} {xOffset 0} {yOffset 0}} {
130
+ set x0 [winfo x $widget]
131
+ set y0 [winfo y $widget]
132
+ set x1 [expr {$x0+[winfo width $widget]}]
133
+ set y1 [expr {$y0+[winfo height $widget]}]
134
+ set xb0 [$path:cmd canvasx 0]
135
+ set yb0 [$path:cmd canvasy 0]
136
+ set xb1 [$path:cmd canvasx [winfo width $path]]
137
+ set yb1 [$path:cmd canvasy [winfo height $path]]
138
+ set dx 0
139
+ set dy 0
140
+
141
+ if { [string equal $horz "left"] } {
142
+ if { $x1 > $xb1 } {
143
+ set dx [expr {$x1-$xb1}]
144
+ }
145
+ if { $x0 < $xb0+$dx } {
146
+ set dx [expr {$x0-$xb0}]
147
+ }
148
+ } elseif { [string equal $horz "right"] } {
149
+ if { $x0 < $xb0 } {
150
+ set dx [expr {$x0-$xb0}]
151
+ }
152
+ if { $x1 > $xb1+$dx } {
153
+ set dx [expr {$x1-$xb1}]
154
+ }
155
+ }
156
+
157
+ if { [string equal $vert "top"] } {
158
+ if { $y1 > $yb1 } {
159
+ set dy [expr {$y1-$yb1}]
160
+ }
161
+ if { $y0 < $yb0+$dy } {
162
+ set dy [expr {$y0-$yb0}]
163
+ }
164
+ } elseif { [string equal $vert "bottom"] } {
165
+ if { $y0 < $yb0 } {
166
+ set dy [expr {$y0-$yb0}]
167
+ }
168
+ if { $y1 > $yb1+$dy } {
169
+ set dy [expr {$y1-$yb1}]
170
+ }
171
+ }
172
+
173
+ if {($dx + $xOffset) != 0} {
174
+ set x [expr {($xb0+$dx+$xOffset)/[winfo width $path.frame]}]
175
+ $path:cmd xview moveto $x
176
+ }
177
+ if {($dy + $yOffset) != 0} {
178
+ set y [expr {($yb0+$dy+$yOffset)/[winfo height $path.frame]}]
179
+ $path:cmd yview moveto $y
180
+ }
181
+ }
182
+
183
+
184
+ # ----------------------------------------------------------------------------
185
+ # Command ScrollableFrame::xview
186
+ # ----------------------------------------------------------------------------
187
+ proc ScrollableFrame::xview { path args } {
188
+ return [eval [list $path:cmd xview] $args]
189
+ }
190
+
191
+
192
+ # ----------------------------------------------------------------------------
193
+ # Command ScrollableFrame::yview
194
+ # ----------------------------------------------------------------------------
195
+ proc ScrollableFrame::yview { path args } {
196
+ return [eval [list $path:cmd yview] $args]
197
+ }
198
+
199
+
200
+ # ----------------------------------------------------------------------------
201
+ # Command ScrollableFrame::_resize
202
+ # ----------------------------------------------------------------------------
203
+ proc ScrollableFrame::_resize { path } {
204
+ if { [Widget::getoption $path -constrainedwidth] } {
205
+ $path:cmd itemconfigure win -width [winfo width $path]
206
+ }
207
+ if { [Widget::getoption $path -constrainedheight] } {
208
+ $path:cmd itemconfigure win -height [winfo height $path]
209
+ }
210
+ }
211
+
212
+
213
+ # ----------------------------------------------------------------------------
214
+ # Command ScrollableFrame::_frameConfigure
215
+ # ----------------------------------------------------------------------------
216
+ proc ScrollableFrame::_frameConfigure {canvas frame width height} {
217
+ # This ensures that we don't get funny scrollability in the frame
218
+ # 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
+ }
225
+ $canvas:cmd configure -scrollregion [list 0 0 $width $height]
226
+ }