Pratt 1.5.6

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 (283) hide show
  1. data/.exrc +61 -0
  2. data/.gitignore +4 -0
  3. data/History.txt +6 -0
  4. data/Manifest.txt +46 -0
  5. data/Pratt.gemspec +351 -0
  6. data/README.txt +66 -0
  7. data/Rakefile +85 -0
  8. data/TODO +54 -0
  9. data/VERSION +1 -0
  10. data/bin/pratt.rb +13 -0
  11. data/config.rb +34 -0
  12. data/lib/pratt.rb +527 -0
  13. data/lib/pratt/array.rb +11 -0
  14. data/lib/pratt/string.rb +18 -0
  15. data/models/app.rb +40 -0
  16. data/models/customer.rb +24 -0
  17. data/models/payment.rb +22 -0
  18. data/models/pratt.rb +19 -0
  19. data/models/project.rb +82 -0
  20. data/models/whence.rb +70 -0
  21. data/pkgs/tile-0.8.2.tar.gz +0 -0
  22. data/pkgs/tile-0.8.2/ANNOUNCE.txt +95 -0
  23. data/pkgs/tile-0.8.2/ChangeLog +4651 -0
  24. data/pkgs/tile-0.8.2/Makefile +250 -0
  25. data/pkgs/tile-0.8.2/Makefile.in +250 -0
  26. data/pkgs/tile-0.8.2/README.txt +86 -0
  27. data/pkgs/tile-0.8.2/aclocal.m4 +2 -0
  28. data/pkgs/tile-0.8.2/altTheme.o +0 -0
  29. data/pkgs/tile-0.8.2/blink.o +0 -0
  30. data/pkgs/tile-0.8.2/button.o +0 -0
  31. data/pkgs/tile-0.8.2/cache.o +0 -0
  32. data/pkgs/tile-0.8.2/clamTheme.o +0 -0
  33. data/pkgs/tile-0.8.2/classicTheme.o +0 -0
  34. data/pkgs/tile-0.8.2/config.log +1330 -0
  35. data/pkgs/tile-0.8.2/config.status +795 -0
  36. data/pkgs/tile-0.8.2/configure +15248 -0
  37. data/pkgs/tile-0.8.2/configure.in +89 -0
  38. data/pkgs/tile-0.8.2/demos/autocomplete.tcl +59 -0
  39. data/pkgs/tile-0.8.2/demos/demo.tcl +870 -0
  40. data/pkgs/tile-0.8.2/demos/dirbrowser.tcl +167 -0
  41. data/pkgs/tile-0.8.2/demos/dlgtest.tcl +97 -0
  42. data/pkgs/tile-0.8.2/demos/iconlib.tcl +110 -0
  43. data/pkgs/tile-0.8.2/demos/repeater.tcl +117 -0
  44. data/pkgs/tile-0.8.2/demos/toolbutton.tcl +101 -0
  45. data/pkgs/tile-0.8.2/doc/Geometry.3 +230 -0
  46. data/pkgs/tile-0.8.2/doc/INDEX.MAP +153 -0
  47. data/pkgs/tile-0.8.2/doc/Makefile +36 -0
  48. data/pkgs/tile-0.8.2/doc/TILE.XML +45 -0
  49. data/pkgs/tile-0.8.2/doc/Theme.3 +34 -0
  50. data/pkgs/tile-0.8.2/doc/button.n +75 -0
  51. data/pkgs/tile-0.8.2/doc/checkbutton.n +61 -0
  52. data/pkgs/tile-0.8.2/doc/combobox.n +98 -0
  53. data/pkgs/tile-0.8.2/doc/converting.txt +97 -0
  54. data/pkgs/tile-0.8.2/doc/dialog.n +122 -0
  55. data/pkgs/tile-0.8.2/doc/entry.n +438 -0
  56. data/pkgs/tile-0.8.2/doc/frame.n +43 -0
  57. data/pkgs/tile-0.8.2/doc/html/Geometry.html +304 -0
  58. data/pkgs/tile-0.8.2/doc/html/Theme.html +48 -0
  59. data/pkgs/tile-0.8.2/doc/html/button.html +120 -0
  60. data/pkgs/tile-0.8.2/doc/html/category-index.html +18 -0
  61. data/pkgs/tile-0.8.2/doc/html/checkbutton.html +94 -0
  62. data/pkgs/tile-0.8.2/doc/html/combobox.html +164 -0
  63. data/pkgs/tile-0.8.2/doc/html/converting.txt +97 -0
  64. data/pkgs/tile-0.8.2/doc/html/dialog.html +159 -0
  65. data/pkgs/tile-0.8.2/doc/html/entry.html +613 -0
  66. data/pkgs/tile-0.8.2/doc/html/frame.html +76 -0
  67. data/pkgs/tile-0.8.2/doc/html/image.html +100 -0
  68. data/pkgs/tile-0.8.2/doc/html/index.html +25 -0
  69. data/pkgs/tile-0.8.2/doc/html/keyword-index.html +228 -0
  70. data/pkgs/tile-0.8.2/doc/html/label.html +133 -0
  71. data/pkgs/tile-0.8.2/doc/html/labelframe.html +91 -0
  72. data/pkgs/tile-0.8.2/doc/html/manpage.css +212 -0
  73. data/pkgs/tile-0.8.2/doc/html/menubutton.html +63 -0
  74. data/pkgs/tile-0.8.2/doc/html/notebook.html +280 -0
  75. data/pkgs/tile-0.8.2/doc/html/paned.html +149 -0
  76. data/pkgs/tile-0.8.2/doc/html/progressbar.html +138 -0
  77. data/pkgs/tile-0.8.2/doc/html/radiobutton.html +89 -0
  78. data/pkgs/tile-0.8.2/doc/html/scrollbar.html +221 -0
  79. data/pkgs/tile-0.8.2/doc/html/separator.html +48 -0
  80. data/pkgs/tile-0.8.2/doc/html/sizegrip.html +62 -0
  81. data/pkgs/tile-0.8.2/doc/html/style.html +172 -0
  82. data/pkgs/tile-0.8.2/doc/html/tile-intro.html +164 -0
  83. data/pkgs/tile-0.8.2/doc/html/treeview.html +634 -0
  84. data/pkgs/tile-0.8.2/doc/html/widget.html +342 -0
  85. data/pkgs/tile-0.8.2/doc/image.n +81 -0
  86. data/pkgs/tile-0.8.2/doc/internals.txt +409 -0
  87. data/pkgs/tile-0.8.2/doc/label.n +75 -0
  88. data/pkgs/tile-0.8.2/doc/labelframe.n +64 -0
  89. data/pkgs/tile-0.8.2/doc/man.macros +239 -0
  90. data/pkgs/tile-0.8.2/doc/menubutton.n +41 -0
  91. data/pkgs/tile-0.8.2/doc/notebook.n +188 -0
  92. data/pkgs/tile-0.8.2/doc/paned.n +95 -0
  93. data/pkgs/tile-0.8.2/doc/progressbar.n +79 -0
  94. data/pkgs/tile-0.8.2/doc/radiobutton.n +57 -0
  95. data/pkgs/tile-0.8.2/doc/scrollbar.n +160 -0
  96. data/pkgs/tile-0.8.2/doc/separator.n +30 -0
  97. data/pkgs/tile-0.8.2/doc/sizegrip.n +53 -0
  98. data/pkgs/tile-0.8.2/doc/style.n +119 -0
  99. data/pkgs/tile-0.8.2/doc/tile-intro.n +165 -0
  100. data/pkgs/tile-0.8.2/doc/tmml.options +4 -0
  101. data/pkgs/tile-0.8.2/doc/treeview.n +415 -0
  102. data/pkgs/tile-0.8.2/doc/widget.n +227 -0
  103. data/pkgs/tile-0.8.2/doc/xml/Geometry.tmml +379 -0
  104. data/pkgs/tile-0.8.2/doc/xml/INDEX.MAP +153 -0
  105. data/pkgs/tile-0.8.2/doc/xml/Theme.tmml +63 -0
  106. data/pkgs/tile-0.8.2/doc/xml/button.tmml +134 -0
  107. data/pkgs/tile-0.8.2/doc/xml/checkbutton.tmml +119 -0
  108. data/pkgs/tile-0.8.2/doc/xml/combobox.tmml +184 -0
  109. data/pkgs/tile-0.8.2/doc/xml/dialog.tmml +195 -0
  110. data/pkgs/tile-0.8.2/doc/xml/entry.tmml +630 -0
  111. data/pkgs/tile-0.8.2/doc/xml/frame.tmml +98 -0
  112. data/pkgs/tile-0.8.2/doc/xml/image.tmml +101 -0
  113. data/pkgs/tile-0.8.2/doc/xml/label.tmml +154 -0
  114. data/pkgs/tile-0.8.2/doc/xml/labelframe.tmml +116 -0
  115. data/pkgs/tile-0.8.2/doc/xml/menubutton.tmml +80 -0
  116. data/pkgs/tile-0.8.2/doc/xml/notebook.tmml +306 -0
  117. data/pkgs/tile-0.8.2/doc/xml/paned.tmml +154 -0
  118. data/pkgs/tile-0.8.2/doc/xml/progressbar.tmml +151 -0
  119. data/pkgs/tile-0.8.2/doc/xml/radiobutton.tmml +109 -0
  120. data/pkgs/tile-0.8.2/doc/xml/scrollbar.tmml +233 -0
  121. data/pkgs/tile-0.8.2/doc/xml/separator.tmml +59 -0
  122. data/pkgs/tile-0.8.2/doc/xml/sizegrip.tmml +82 -0
  123. data/pkgs/tile-0.8.2/doc/xml/style.tmml +171 -0
  124. data/pkgs/tile-0.8.2/doc/xml/tile-intro.tmml +192 -0
  125. data/pkgs/tile-0.8.2/doc/xml/treeview.tmml +604 -0
  126. data/pkgs/tile-0.8.2/doc/xml/widget.tmml +372 -0
  127. data/pkgs/tile-0.8.2/entry.o +0 -0
  128. data/pkgs/tile-0.8.2/frame.o +0 -0
  129. data/pkgs/tile-0.8.2/generic/Makefile.in +221 -0
  130. data/pkgs/tile-0.8.2/generic/TODO +493 -0
  131. data/pkgs/tile-0.8.2/generic/altTheme.c +1172 -0
  132. data/pkgs/tile-0.8.2/generic/blink.c +168 -0
  133. data/pkgs/tile-0.8.2/generic/button.c +858 -0
  134. data/pkgs/tile-0.8.2/generic/cache.c +354 -0
  135. data/pkgs/tile-0.8.2/generic/clamTheme.c +974 -0
  136. data/pkgs/tile-0.8.2/generic/classicTheme.c +518 -0
  137. data/pkgs/tile-0.8.2/generic/configure +10334 -0
  138. data/pkgs/tile-0.8.2/generic/configure.in +100 -0
  139. data/pkgs/tile-0.8.2/generic/entry.c +1922 -0
  140. data/pkgs/tile-0.8.2/generic/frame.c +648 -0
  141. data/pkgs/tile-0.8.2/generic/gunk.h +44 -0
  142. data/pkgs/tile-0.8.2/generic/image.c +416 -0
  143. data/pkgs/tile-0.8.2/generic/label.c +663 -0
  144. data/pkgs/tile-0.8.2/generic/layout.c +1215 -0
  145. data/pkgs/tile-0.8.2/generic/manager.c +554 -0
  146. data/pkgs/tile-0.8.2/generic/manager.h +91 -0
  147. data/pkgs/tile-0.8.2/generic/notebook.c +1380 -0
  148. data/pkgs/tile-0.8.2/generic/paned.c +958 -0
  149. data/pkgs/tile-0.8.2/generic/pkgIndex.tcl.in +7 -0
  150. data/pkgs/tile-0.8.2/generic/progress.c +549 -0
  151. data/pkgs/tile-0.8.2/generic/scale.c +526 -0
  152. data/pkgs/tile-0.8.2/generic/scroll.c +253 -0
  153. data/pkgs/tile-0.8.2/generic/scrollbar.c +346 -0
  154. data/pkgs/tile-0.8.2/generic/separator.c +132 -0
  155. data/pkgs/tile-0.8.2/generic/square.c +306 -0
  156. data/pkgs/tile-0.8.2/generic/tagset.c +147 -0
  157. data/pkgs/tile-0.8.2/generic/tile.c +296 -0
  158. data/pkgs/tile-0.8.2/generic/tkElements.c +1280 -0
  159. data/pkgs/tile-0.8.2/generic/tkTheme.c +1708 -0
  160. data/pkgs/tile-0.8.2/generic/tkTheme.h +419 -0
  161. data/pkgs/tile-0.8.2/generic/tkThemeInt.h +45 -0
  162. data/pkgs/tile-0.8.2/generic/tkstate.c +268 -0
  163. data/pkgs/tile-0.8.2/generic/trace.c +145 -0
  164. data/pkgs/tile-0.8.2/generic/track.c +174 -0
  165. data/pkgs/tile-0.8.2/generic/treeview.c +3211 -0
  166. data/pkgs/tile-0.8.2/generic/ttk.decls +154 -0
  167. data/pkgs/tile-0.8.2/generic/ttkDecls.h +340 -0
  168. data/pkgs/tile-0.8.2/generic/ttkStubInit.c +61 -0
  169. data/pkgs/tile-0.8.2/generic/ttkStubLib.c +70 -0
  170. data/pkgs/tile-0.8.2/generic/widget.c +785 -0
  171. data/pkgs/tile-0.8.2/generic/widget.h +263 -0
  172. data/pkgs/tile-0.8.2/image.o +0 -0
  173. data/pkgs/tile-0.8.2/label.o +0 -0
  174. data/pkgs/tile-0.8.2/layout.o +0 -0
  175. data/pkgs/tile-0.8.2/library/altTheme.tcl +101 -0
  176. data/pkgs/tile-0.8.2/library/aquaTheme.tcl +62 -0
  177. data/pkgs/tile-0.8.2/library/button.tcl +85 -0
  178. data/pkgs/tile-0.8.2/library/clamTheme.tcl +139 -0
  179. data/pkgs/tile-0.8.2/library/classicTheme.tcl +108 -0
  180. data/pkgs/tile-0.8.2/library/combobox.tcl +439 -0
  181. data/pkgs/tile-0.8.2/library/cursors.tcl +36 -0
  182. data/pkgs/tile-0.8.2/library/defaults.tcl +118 -0
  183. data/pkgs/tile-0.8.2/library/dialog.tcl +274 -0
  184. data/pkgs/tile-0.8.2/library/entry.tcl +580 -0
  185. data/pkgs/tile-0.8.2/library/fonts.tcl +153 -0
  186. data/pkgs/tile-0.8.2/library/icons.tcl +105 -0
  187. data/pkgs/tile-0.8.2/library/keynav.tcl +192 -0
  188. data/pkgs/tile-0.8.2/library/menubutton.tcl +171 -0
  189. data/pkgs/tile-0.8.2/library/notebook.tcl +193 -0
  190. data/pkgs/tile-0.8.2/library/paned.tcl +87 -0
  191. data/pkgs/tile-0.8.2/library/progress.tcl +51 -0
  192. data/pkgs/tile-0.8.2/library/scale.tcl +54 -0
  193. data/pkgs/tile-0.8.2/library/scrollbar.tcl +125 -0
  194. data/pkgs/tile-0.8.2/library/sizegrip.tcl +77 -0
  195. data/pkgs/tile-0.8.2/library/tile.tcl +211 -0
  196. data/pkgs/tile-0.8.2/library/treeview.tcl +382 -0
  197. data/pkgs/tile-0.8.2/library/utils.tcl +254 -0
  198. data/pkgs/tile-0.8.2/library/winTheme.tcl +77 -0
  199. data/pkgs/tile-0.8.2/library/xpTheme.tcl +63 -0
  200. data/pkgs/tile-0.8.2/libtile0.8.2.so +0 -0
  201. data/pkgs/tile-0.8.2/libttkstub.a +0 -0
  202. data/pkgs/tile-0.8.2/license.terms +24 -0
  203. data/pkgs/tile-0.8.2/macosx/aquaTheme.c +1076 -0
  204. data/pkgs/tile-0.8.2/manager.o +0 -0
  205. data/pkgs/tile-0.8.2/notebook.o +0 -0
  206. data/pkgs/tile-0.8.2/paned.o +0 -0
  207. data/pkgs/tile-0.8.2/pkgIndex.tcl +3 -0
  208. data/pkgs/tile-0.8.2/progress.o +0 -0
  209. data/pkgs/tile-0.8.2/scale.o +0 -0
  210. data/pkgs/tile-0.8.2/scroll.o +0 -0
  211. data/pkgs/tile-0.8.2/scrollbar.o +0 -0
  212. data/pkgs/tile-0.8.2/separator.o +0 -0
  213. data/pkgs/tile-0.8.2/tagset.o +0 -0
  214. data/pkgs/tile-0.8.2/tclconfig/install-sh +119 -0
  215. data/pkgs/tile-0.8.2/tclconfig/tcl.m4 +4069 -0
  216. data/pkgs/tile-0.8.2/tclconfig/teax.m4 +109 -0
  217. data/pkgs/tile-0.8.2/tests/all.tcl +18 -0
  218. data/pkgs/tile-0.8.2/tests/bwidget.test +103 -0
  219. data/pkgs/tile-0.8.2/tests/cbtest.tcl +125 -0
  220. data/pkgs/tile-0.8.2/tests/combobox.test +51 -0
  221. data/pkgs/tile-0.8.2/tests/compound.tcl +92 -0
  222. data/pkgs/tile-0.8.2/tests/entry.test +285 -0
  223. data/pkgs/tile-0.8.2/tests/entrytest.tcl +78 -0
  224. data/pkgs/tile-0.8.2/tests/image.test +94 -0
  225. data/pkgs/tile-0.8.2/tests/labelframe.tcl +41 -0
  226. data/pkgs/tile-0.8.2/tests/labelframe.test +137 -0
  227. data/pkgs/tile-0.8.2/tests/layout.test +33 -0
  228. data/pkgs/tile-0.8.2/tests/misc.test +35 -0
  229. data/pkgs/tile-0.8.2/tests/nbtest.tcl +66 -0
  230. data/pkgs/tile-0.8.2/tests/notebook.test +500 -0
  231. data/pkgs/tile-0.8.2/tests/paned.test +298 -0
  232. data/pkgs/tile-0.8.2/tests/progress.test +92 -0
  233. data/pkgs/tile-0.8.2/tests/pwtest.tcl +90 -0
  234. data/pkgs/tile-0.8.2/tests/sbtest.tcl +79 -0
  235. data/pkgs/tile-0.8.2/tests/scrollbar.test +77 -0
  236. data/pkgs/tile-0.8.2/tests/sgtest.tcl +52 -0
  237. data/pkgs/tile-0.8.2/tests/testutils.tcl +20 -0
  238. data/pkgs/tile-0.8.2/tests/tile.test +674 -0
  239. data/pkgs/tile-0.8.2/tests/treetags.test +78 -0
  240. data/pkgs/tile-0.8.2/tests/treeview.test +563 -0
  241. data/pkgs/tile-0.8.2/tests/tvtest.tcl +332 -0
  242. data/pkgs/tile-0.8.2/tests/validate.test +278 -0
  243. data/pkgs/tile-0.8.2/tile.o +0 -0
  244. data/pkgs/tile-0.8.2/tkElements.o +0 -0
  245. data/pkgs/tile-0.8.2/tkTheme.o +0 -0
  246. data/pkgs/tile-0.8.2/tkstate.o +0 -0
  247. data/pkgs/tile-0.8.2/tools/genStubs.tcl +861 -0
  248. data/pkgs/tile-0.8.2/trace.o +0 -0
  249. data/pkgs/tile-0.8.2/track.o +0 -0
  250. data/pkgs/tile-0.8.2/treeview.o +0 -0
  251. data/pkgs/tile-0.8.2/ttkStubInit.o +0 -0
  252. data/pkgs/tile-0.8.2/ttkStubLib.o +0 -0
  253. data/pkgs/tile-0.8.2/widget.o +0 -0
  254. data/pkgs/tile-0.8.2/win/Tile.dsp +261 -0
  255. data/pkgs/tile-0.8.2/win/makefile.vc +527 -0
  256. data/pkgs/tile-0.8.2/win/monitor.c +164 -0
  257. data/pkgs/tile-0.8.2/win/nmakehlp.c +483 -0
  258. data/pkgs/tile-0.8.2/win/rules.vc +512 -0
  259. data/pkgs/tile-0.8.2/win/tile.rc +40 -0
  260. data/pkgs/tile-0.8.2/win/winTheme.c +734 -0
  261. data/pkgs/tile-0.8.2/win/xpTheme.c +1029 -0
  262. data/spec/app_spec.rb +48 -0
  263. data/spec/customer_spec.rb +31 -0
  264. data/spec/fixtures/graph.expectation +18 -0
  265. data/spec/payment_spec.rb +19 -0
  266. data/spec/pratt_spec.rb +148 -0
  267. data/spec/project_spec.rb +163 -0
  268. data/spec/rcov.opts +0 -0
  269. data/spec/spec.opts +1 -0
  270. data/spec/spec_helper.rb +21 -0
  271. data/spec/whence_spec.rb +54 -0
  272. data/tasks/pratt.rb +84 -0
  273. data/templates/model.eruby +12 -0
  274. data/templates/spec.eruby +8 -0
  275. data/views/env.rb +22 -0
  276. data/views/graph.eruby +20 -0
  277. data/views/invoice.eruby +148 -0
  278. data/views/main.rb +92 -0
  279. data/views/pid.eruby +3 -0
  280. data/views/pop.rb +94 -0
  281. data/views/pop2.rb +75 -0
  282. data/views/raw.eruby +11 -0
  283. metadata +390 -0
@@ -0,0 +1,342 @@
1
+ <html>
2
+ <head>
3
+ <link rel="stylesheet" href="manpage.css"><title>Tile package reference: widget</title><meta name="xsl-processor" content="Jochen Loewer (loewerj@hotmail.com), Rolf Ade (rolf@pointsman.de) et. al."><meta name="generator" content="$RCSfile: tmml-html.xsl,v $ $Revision: 1.12 $">
4
+ </head><body>
5
+ <div class="header">
6
+ <div class="navbar" align="center">
7
+ <a href="#SECTid8206658">NAME</a> � <a href="#SECTid82066d0">DESCRIPTION</a> � <a href="#SECTid8206748">STANDARD OPTIONS</a> � <a href="#SECTid8206c48">SCROLLABLE WIDGET OPTIONS</a> � <a href="#SECTid8206fe0">LABEL OPTIONS</a> � <a href="#SECTid8207a30">COMPATIBILITY OPTIONS</a> � <a href="#SECTid8207c38">COMMANDS</a> � <a href="#SECTid8208458">WIDGET STATES</a> � <a href="#SECTid8208b60">EXAMPLES</a> � <a href="#SECTid8208bd8">SEE ALSO</a> � <a href="#SECTid8208c50">KEYWORDS</a>
8
+ </div><hr class="navsep">
9
+ </div><div class="body">
10
+
11
+
12
+
13
+ <h2><a name="SECTid8206658">NAME</a></h2><p class="namesection">
14
+ <b class="names">widget - </b><br>Standard options and commands supported by Tile widgets</p>
15
+ <h2><a name="SECTid82066d0">DESCRIPTION</a></h2><p>This manual describes common widget options and commands.
16
+ </p>
17
+ <h2><a name="SECTid8206748">STANDARD OPTIONS</a></h2><p>The following options are supported by all Tile widgets:
18
+ </p><div class="table"><table width="100%" rules="none" cellpadding="5%">
19
+ <thead><tr class="heading">
20
+ <th width="20%">Name</th><th width="40%">Database name</th><th width="40%">Database class</th>
21
+ </tr></thead><tr class="syntax">
22
+ <td width="20%" align="left"><a name="stdopt_-class">-class</a></td><td width="40%" align="left">(N/A)</td><td width="40%" align="left">(N/A)</td>
23
+ </tr><tr class="desc">
24
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">Specifies the window class.
25
+ The class is used when querying the option database
26
+ for the window's other options, to determine the default
27
+ bindtags for the window, and to select the widget's default
28
+ layout and style.
29
+ This is a read-only option:
30
+ it may only be specified when the window is created,
31
+ and may not be changed with the <b>configure</b> widget command.
32
+ </td>
33
+ </tr><tr class="syntax">
34
+ <td width="20%" align="left"><a name="stdopt_-cursor">-cursor</a></td><td width="40%" align="left">cursor</td><td width="40%" align="left">Cursor</td>
35
+ </tr><tr class="desc">
36
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">Specifies the mouse cursor to be used for the widget.
37
+ See <b class="fun">Tk_GetCursor</b> and <i>cursors(n)</i> in the Tk reference manual
38
+ for the legal values.
39
+ If set to the empty string (the default),
40
+ the cursor is inherited from the parent widget.
41
+ </td>
42
+ </tr><tr class="syntax">
43
+ <td width="20%" align="left"><a name="stdopt_-takefocus">-takefocus</a></td><td width="40%" align="left">takeFocus</td><td width="40%" align="left">TakeFocus</td>
44
+ </tr><tr class="desc">
45
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">Determines whether the window accepts the focus during keyboard traversal.
46
+ Either <b>0</b>, <b>1</b>, a command prefix (to which the widget path
47
+ is appended, and which should return <b>0</b> or <b>1</b>),
48
+ or the empty string.
49
+ See <i>options(n)</i> in the Tk reference manual for the full description.
50
+ </td>
51
+ </tr><tr class="syntax">
52
+ <td width="20%" align="left"><a name="stdopt_-style">-style</a></td><td width="40%" align="left">style</td><td width="40%" align="left">Style</td>
53
+ </tr><tr class="desc">
54
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">May be used to specify a custom widget style.
55
+ </td>
56
+ </tr>
57
+ </table></div>
58
+ <h2><a name="SECTid8206c48">SCROLLABLE WIDGET OPTIONS</a></h2><p>The following options are supported by widgets that
59
+ are controllable by a scrollbar.
60
+ See <i>scrollbar(n)</i> for more information
61
+ </p><div class="table"><table width="100%" rules="none" cellpadding="5%">
62
+ <thead><tr class="heading">
63
+ <th width="20%">Name</th><th width="40%">Database name</th><th width="40%">Database class</th>
64
+ </tr></thead><tr class="syntax">
65
+ <td width="20%" align="left"><a name="stdopt_-xscrollcommand">-xscrollcommand</a></td><td width="40%" align="left">xScrollCommand</td><td width="40%" align="left">ScrollCommand</td>
66
+ </tr><tr class="desc">
67
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">A command prefix, used to communicate with horizontal scrollbars.
68
+ <p>When the view in the widget's window changes, the widget will
69
+ generate a Tcl command by concatenating the scroll command and
70
+ two numbers.
71
+ Each of the numbers is a fraction between 0 and 1 indicating
72
+ a position in the document; 0 indicates the beginning,
73
+ and 1 indicates the end.
74
+ The first fraction indicates the first information in the widget
75
+ that is visible in the window, and the second fraction indicates
76
+ the information just after the last portion that is visible.
77
+ </p><p>Typically the <b>xScrollCommand</b> option consists of the path name
78
+ of a <b>scrollbar</b> widget followed by ``set'', e.g. ``.x.scrollbar set''.
79
+ This will cause the scrollbar to be updated whenever the view in the
80
+ window changes.
81
+ </p><p>If this option is set to the empty string (the default),
82
+ then no command will be executed.
83
+ </p>
84
+ </td>
85
+ </tr><tr class="syntax">
86
+ <td width="20%" align="left"><a name="stdopt_-yscrollcommand">-yscrollcommand</a></td><td width="40%" align="left">yScrollCommand</td><td width="40%" align="left">ScrollCommand</td>
87
+ </tr><tr class="desc">
88
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">A command prefix, used to communicate with vertical scrollbars.
89
+ See the description of <b>-xscrollcommand</b> above for details.
90
+ </td>
91
+ </tr>
92
+ </table></div>
93
+ <h2><a name="SECTid8206fe0">LABEL OPTIONS</a></h2><p>The following options are supported by labels, buttons,
94
+ and other button-like widgets:
95
+ </p><div class="table"><table width="100%" rules="none" cellpadding="5%">
96
+ <thead><tr class="heading">
97
+ <th width="20%">Name</th><th width="40%">Database name</th><th width="40%">Database class</th>
98
+ </tr></thead><tr class="syntax">
99
+ <td width="20%" align="left"><a name="stdopt_-text">-text</a></td><td width="40%" align="left">text</td><td width="40%" align="left">Text</td>
100
+ </tr><tr class="desc">
101
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">Specifies a text string to be displayed inside the widget
102
+ (unless overridden by <b>-textvariable</b>).
103
+ </td>
104
+ </tr><tr class="syntax">
105
+ <td width="20%" align="left"><a name="stdopt_-textvariable">-textvariable</a></td><td width="40%" align="left">textVariable</td><td width="40%" align="left">Variable</td>
106
+ </tr><tr class="desc">
107
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">Specifies the name of variable whose value will be used
108
+ in place of the <b>-text</b> resource.
109
+ </td>
110
+ </tr><tr class="syntax">
111
+ <td width="20%" align="left"><a name="stdopt_-underline">-underline</a></td><td width="40%" align="left">underline</td><td width="40%" align="left">Underline</td>
112
+ </tr><tr class="desc">
113
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">If set, specifies the integer index (0-based) of a character to underline
114
+ in the text string.
115
+ The underlined character is used for mnemonic activation
116
+ (see <i>keynav(n)</i>).
117
+ </td>
118
+ </tr><tr class="syntax">
119
+ <td width="20%" align="left"><a name="stdopt_-image">-image</a></td><td width="40%" align="left">image</td><td width="40%" align="left">Image</td>
120
+ </tr><tr class="desc">
121
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">Specifies an image to display.
122
+ This is a list of 1 or more elements.
123
+ The first element is the default image name.
124
+ The rest of the list is a sequence of <i>statespec / value</i> pairs
125
+ as per <b>style map</b>, specifying different images to use when
126
+ the widget is in a particular state or combination of states.
127
+ All images in the list should have the same size.
128
+ </td>
129
+ </tr><tr class="syntax">
130
+ <td width="20%" align="left"><a name="stdopt_-compound">-compound</a></td><td width="40%" align="left">compound</td><td width="40%" align="left">Compound</td>
131
+ </tr><tr class="desc">
132
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">Specifies how to display the image relative to the text,
133
+ in the case both <b>-text</b> and <b>-image</b> are present.
134
+ Valid values are:
135
+ <dl>
136
+
137
+ <dt>text</dt>
138
+ <dd>Display text only.
139
+ </dd>
140
+
141
+
142
+ <dt>image</dt>
143
+ <dd>Display image only.
144
+ </dd>
145
+
146
+
147
+ <dt>center</dt>
148
+ <dd>Display text centered on top of image.
149
+ </dd>
150
+
151
+
152
+ <dt>top</dt>
153
+ <dd></dd>
154
+
155
+
156
+ <dt>bottom</dt>
157
+ <dd></dd>
158
+
159
+
160
+ <dt>left</dt>
161
+ <dd></dd>
162
+
163
+
164
+ <dt>right</dt>
165
+ <dd>Display image above, below, left of, or right of the text, respectively.
166
+ </dd>
167
+
168
+
169
+ <dt>none</dt>
170
+ <dd>The default; display the image if present, otherwise the text.
171
+ </dd>
172
+
173
+ </dl>
174
+ </td>
175
+ </tr><tr class="syntax">
176
+ <td width="20%" align="left"><a name="stdopt_-width">-width</a></td><td width="40%" align="left">width</td><td width="40%" align="left">Width</td>
177
+ </tr><tr class="desc">
178
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">If greater than zero, specifies how much space, in character widths,
179
+ to allocate for the text label.
180
+ If less than zero, specifies a minimum width.
181
+ If zero or unspecified, the natural width of the text label is used.
182
+
183
+ </td>
184
+ </tr>
185
+ </table></div>
186
+ <h2><a name="SECTid8207a30">COMPATIBILITY OPTIONS</a></h2><div class="table"><table width="100%" rules="none" cellpadding="5%">
187
+ <thead><tr class="heading">
188
+ <th width="20%">Name</th><th width="40%">Database name</th><th width="40%">Database class</th>
189
+ </tr></thead><tr class="syntax">
190
+ <td width="20%" align="left"><a name="stdopt_-state">-state</a></td><td width="40%" align="left">state</td><td width="40%" align="left">State</td>
191
+ </tr><tr class="desc">
192
+ <td class="padding" width="20%">�</td><td class="argdesc" width="80%" align="left" colspan="2">May be set to <b>normal</b> or <b>disabled</b>
193
+ to control the <b>disabled</b> state bit.
194
+ This is a write-only option:
195
+ setting it changes the widget state,
196
+ but the <b>state</b> widget command
197
+ does not affect the <b>-state</b> option.
198
+
199
+ </td>
200
+ </tr>
201
+ </table></div>
202
+ <h2><a name="SECTid8207c38">COMMANDS</a></h2><dl>
203
+
204
+ <dt>
205
+ <i class="m">pathName</i> <b>cget</b> <i class="m">option</i>
206
+ </dt>
207
+ <dd>Returns the current value of the configuration option given
208
+ by <i>option</i>.
209
+ </dd>
210
+
211
+
212
+ <dt>
213
+ <i class="m">pathName</i> <b>configure</b> ?<i class="m">option</i>? ?<i class="m">value option value ...</i>?</dt>
214
+ <dd>Query or modify the configuration options of the widget.
215
+ If one or more <i>option-value</i> pairs are specified,
216
+ then the command modifies the given widget option(s)
217
+ to have the given value(s);
218
+ in this case the command returns an empty string.
219
+ If <i>option</i> is specified with no <i>value</i>,
220
+ then the command returns a list describing the named option:
221
+ the elements of the list are the
222
+ option name, database name, database class, default value,
223
+ and current value.
224
+ If no <i>option</i> is specified, returns a list describing all of
225
+ the available options for <i>pathName</i>.
226
+ </dd>
227
+
228
+
229
+ <dt>
230
+ <i class="m">pathName</i> <b>instate</b> <i class="m">statespec</i> ?<i class="m">script</i>?</dt>
231
+ <dd>Test the widget's state.
232
+ If <i>script</i> is not specified, returns 1 if
233
+ the widget state matches <i>statespec</i> and 0 otherwise.
234
+ If <i>script</i> is specified, equivalent to
235
+ <pre class="example">
236
+ if {[<i>pathName</i> instate <i>stateSpec</i>]} <i>script</i>
237
+ </pre>
238
+ </dd>
239
+
240
+
241
+ <dt>
242
+ <i class="m">pathName</i> <b>state</b> ?<i class="m">stateSpec</i>?</dt>
243
+ <dd>Modify or inquire widget state.
244
+ If <i>stateSpec</i> is present, sets the widget state:
245
+ for each flag in <i>stateSpec</i>, sets the corresponding flag
246
+ or clears it if prefixed by an exclamation point.
247
+ <p>Returns a new state spec indicating which flags were changed:
248
+ </p><pre class="example">
249
+ set changes [<i>pathName</i> state <i>spec</i>] ;
250
+ <i>pathName</i> state $changes
251
+ </pre><p>will restore <i>pathName</i> to the original state.
252
+ If <i>stateSpec</i> is not specified,
253
+ returns a list of the currently-enabled state flags.
254
+ </p>
255
+ </dd>
256
+
257
+ </dl>
258
+ <h2><a name="SECTid8208458">WIDGET STATES</a></h2><p>The widget state is a bitmap of independent state flags.
259
+ Widget state flags include:
260
+ </p><dl>
261
+
262
+ <dt><b>active</b></dt>
263
+ <dd>The mouse cursor is over the widget
264
+ and pressing a mouse button will cause some action to occur.
265
+ (aka "prelight" (Gnome), "hot" (Windows), "hover").
266
+ </dd>
267
+
268
+
269
+ <dt><b>disabled</b></dt>
270
+ <dd>Widget is disabled under program control
271
+ (aka "unavailable", "inactive")
272
+ </dd>
273
+
274
+
275
+ <dt><b>focus</b></dt>
276
+ <dd>Widget has keyboard focus
277
+ </dd>
278
+
279
+
280
+ <dt><b>pressed</b></dt>
281
+ <dd>Widget is being pressed (aka "armed" in Motif).
282
+ </dd>
283
+
284
+
285
+ <dt><b>selected</b></dt>
286
+ <dd>"On", "true", or "current" for things like checkbuttons and radiobuttons.
287
+ </dd>
288
+
289
+
290
+ <dt><b>background</b></dt>
291
+ <dd>Windows and the Mac have a notion of an "active" or foreground window.
292
+ The <b>background</b> state is set for widgets in a background window,
293
+ and cleared for those in the foreground window.
294
+ </dd>
295
+
296
+
297
+ <dt><b>readonly</b></dt>
298
+ <dd>Widget should not allow user modification.
299
+ </dd>
300
+
301
+
302
+ <dt><b>alternate</b></dt>
303
+ <dd>A widget-specific alternate display format.
304
+ For example, used for checkbuttons and radiobuttons
305
+ in the "tristate" or "mixed" state,
306
+ and for buttons with <b>-default active</b>.
307
+ </dd>
308
+
309
+
310
+ <dt><b>invalid</b></dt>
311
+ <dd>The widget's value is invalid.
312
+ (Potential uses: scale widget value out of bounds,
313
+ entry widget value failed validation.)
314
+ </dd>
315
+
316
+ </dl><p>A <i>state specification</i> or <i>stateSpec</i> is a list
317
+ of state names, optionally prefixed with an exclamation point (!)
318
+ indicating that the bit is off.
319
+ </p>
320
+ <h2><a name="SECTid8208b60">EXAMPLES</a></h2><pre class="example">
321
+ set b [ttk::button .b]
322
+
323
+ # Disable the widget:
324
+ $b state disabled
325
+
326
+ # Invoke the widget only if it is currently pressed and enabled:
327
+ $b instate {pressed !disabled} { .b invoke }
328
+
329
+ # Reenable widget:
330
+ $b state !disabled
331
+ </pre>
332
+ <h2><a name="SECTid8208bd8">SEE ALSO</a></h2><p class="seealso">
333
+ <a href="tile-intro.html">tile-intro(n)</a>, <a href="style.html">style(n)</a>
334
+ </p>
335
+ <h2><a name="SECTid8208c50">KEYWORDS</a></h2><p class="keywords">
336
+ <a class="keyword" href="keyword-index.html#KW-state">state</a>, <a class="keyword" href="keyword-index.html#KW-configure">configure</a>, <a class="keyword" href="keyword-index.html#KW-option">option</a>
337
+ </p>
338
+ </div><hr class="navsep"><div class="navbar" align="center">
339
+ <a class="navaid" href="index.html">Contents</a> � <a class="navaid" href="category-index.html">Index</a> � <a class="navaid" href="keyword-index.html">Keywords</a>
340
+ </div>
341
+ </body>
342
+ </html>
@@ -0,0 +1,81 @@
1
+ '\"
2
+ '\" Copyright (c) 2004 Joe English
3
+ '\" image.n,v 1.3 2006/12/09 20:53:50 jenglish Exp
4
+ '\"
5
+ .so man.macros
6
+ .TH image n 0.8 tile "Tile Widget Set"
7
+ .BS
8
+ .SH NAME
9
+ ttk_image \- Define an element based on an image
10
+ .SH SYNOPSIS
11
+ \fBstyle element create \fIname\fR \fBimage\fR \fIimageSpec\fR ?\fIoptions\fR?
12
+ .BE
13
+ .SH DESCRIPTION
14
+ The \fIimage\fR element factory creates a new element
15
+ in the current theme whose visual appearance is determined
16
+ by Tk images.
17
+ \fIimageSpec\fP is a list of one or more elements.
18
+ The first element is the default image name.
19
+ The rest of the list is a sequence of \fIstatespec / value\fR
20
+ pairs specifying other images to use when the element is
21
+ in a particular state or combination of states.
22
+ .SH OPTIONS
23
+ Valid \fIoptions\fR are:
24
+ .TP
25
+ \fB-border\fR \fIpadding\fR
26
+ \fIpadding\fR is a list of up to four integers, specifying
27
+ the left, top, right, and bottom borders, respectively.
28
+ See \fBIMAGE STRETCHING\fR, below.
29
+ .TP
30
+ \fB-height \fIheight\fR
31
+ Specifies a minimum height for the element.
32
+ If less than zero, the base image's height is used as a default.
33
+ .\" -map no longer needed, first argument is an imageSpec now.
34
+ .\" .TP
35
+ .\" \fB-map { \fIstatespec\fP \fIimage\fP.. }
36
+ .\" Specifies auxilliary images to use in different states.
37
+ .\" Each \fIstatespec\fP is a list of state names optionally
38
+ .\" prefixed by an exclamation point, as in \fBstyle map\fP.
39
+ .\" Each \fIimageName\fP is the name of a Tk image
40
+ .\" defined with \fBimage create ...\fP.
41
+ .\" When the element is displayed, each \fIstatespec\fP is
42
+ .\" tested in order, and the \fIimage\fP corresponding to
43
+ .\" the first matching \fIstatespec\fP is used.
44
+ .\" If none match, the base \fIimageName\fP is used.
45
+ .TP
46
+ \fB-padding\fR \fIpadding\fR
47
+ Specifies the element's interior padding. Defaults to
48
+ \fI-border\fR if not specified.
49
+ .TP
50
+ \fB-sticky\fR \fIspec\fR
51
+ Specifies how the image is placed within the final parcel.
52
+ \fIspec\fR contains zero or more characters "n", "s", "w", or "e".
53
+ .TP
54
+ \fB-width \fIwidth\fR
55
+ Specifies a minimum width for the element.
56
+ If less than zero, the base image's width is used as a default.
57
+
58
+ .SH "IMAGE STRETCHING"
59
+ If the element's allocated parcel is larger than the image,
60
+ the image will be placed in the parcel based on the \fB-sticky\fR option.
61
+ If the image needs to stretch horizontally (i.e., \fB-sticky ew\fR)
62
+ or vertically (\fB-sticky ns\fR),
63
+ subregions of the image are replicated to fill the parcel
64
+ based on the \fB-border\fR option.
65
+ The \fB-border\fR divides the image into 9 regions:
66
+ four fixed corners, top and left edges (which may be tiled horizontally),
67
+ left and right edges (which may be tiled vertically),
68
+ and the central area (which may be tiled in both directions).
69
+ .SH "EXAMPLE"
70
+ .CS
71
+ set img1 [image create photo -file button.png]
72
+ set img2 [image create photo -file button-pressed.png]
73
+ set img3 [image create photo -file button-active.png]
74
+ style element create Button.button image \e
75
+ [list $img1 pressed $img2 active $img3] \e
76
+ -border {2 4} -sticky we
77
+ .CE
78
+ .SH "SEE ALSO"
79
+ image(n), photo(n)
80
+ .SH KEYWORDS
81
+ pixmap theme, image
@@ -0,0 +1,409 @@
1
+
2
+ [10 Sep 2005]
3
+
4
+ A tour of the Tile internals.
5
+
6
+ There are roughly four major parts to the tile codebase:
7
+ the theme engine, the widget framework, widget implementations,
8
+ and theme implementations. What follows is a braindump
9
+ describing the current codebase and a few future directions.
10
+
11
+ See also http://tktable.sourceforge.net/tile/tile-tcl2004.pdf
12
+ for a high-level overview of the architecture.
13
+
14
+
15
+ THEME ENGINE
16
+
17
+ tkTheme.h --
18
+ Public header file. Start here.
19
+
20
+ tkThemeInt.h --
21
+ Private header file. Don't look at it :-)
22
+
23
+ tkstate.c --
24
+ Routines for manipulating state specifications, state maps,
25
+ state tables, and other things state-related.
26
+
27
+ Future directions: Looks like this could use some more comments.
28
+ Very old code; hasn't been revisited (or needed to be) for a
29
+ long time.
30
+
31
+ tkTheme.c --
32
+ The core of the theme engine. This started life as a modified
33
+ copy of the TIP#48 style support code, but has been revised
34
+ and expanded since then. The background and rationale from
35
+ TIP#48 still apply, but the details are quite different now.
36
+
37
+ The main new features relative to the original implementation
38
+ are: a style database that's used to compute element option
39
+ values (previously element implementations were responsible for
40
+ doing this themselves); a layout engine for computing the size
41
+ and position of a group of elements (see layout.c);
42
+ and script-level access to both of the above.
43
+
44
+ Future directions: It's been through three or four major
45
+ refactorings so far, and could probably use one more.
46
+ The data structures are still more complicated than they
47
+ need to be.
48
+
49
+ Things are currently neither optimized for space nor for
50
+ speed, but could be modified to go either way. To save space,
51
+ greater use of the Flyweight pattern is possible. Alternately,
52
+ to speed things up, it could cache more internal state.
53
+ Since the tile widgets don't seem to be too slow on the one hand
54
+ or too memory-hungry on the other, as long as no performance
55
+ problems arise this will probably stay as it is.
56
+
57
+ I really, really want to nuke the call to TkGetOptionSpec().
58
+ This one line of code has caused more headaches than anything
59
+ else (with the possible exception of Aqua support).
60
+
61
+ layout.c --
62
+ This contains the layout engine. The basic algorithm
63
+ is the same as the [pack] geometry manager.
64
+
65
+ Future directions: Needs to be split into two pieces,
66
+ one for the low-level Ttk_Box / Ttk_Padding routines,
67
+ and the other for the Ttk_Layout implementation proper.
68
+
69
+ As above, the data structures could probably use another
70
+ refactoring and reorganization.
71
+
72
+ The TTK_EXPAND flag should probably go away. The TTK_BORDER
73
+ flag is probably not needed either.
74
+
75
+ cache.c --
76
+ A resource cache for fonts, colors and other resources.
77
+ See comments at the top of the file for full details,
78
+ but the basic problem is: Tk frees fonts and colors
79
+ whenever the last reference to them goes away; but
80
+ the style engine accesses these resources on a just-in-time
81
+ basis and releases them immediately afterwards.
82
+ This is *very* expensive. The cache holds a semi-permanent
83
+ reference to resources accessed by the style engine to
84
+ prevent Tk from freeing them prematurely.
85
+
86
+ Future directions: Preferably, change Tk's (de)allocation
87
+ policies so that this workaround isn't necessary.
88
+
89
+ Possibly -- but only under great duress -- add support
90
+ for non-default visuals and colormaps. I really don't
91
+ want to do this, since it adds a ton of complexity for
92
+ a feature that nobody uses anymore.
93
+
94
+ image.c --
95
+ Implements the 'style element create image' command,
96
+ an element factory for defining "pixmap" themes.
97
+
98
+ tile.c --
99
+ Package initialization routine, plus sort of a dumping ground
100
+ for miscellaneous stuff that didn't fit anywhere else.
101
+
102
+
103
+ WIDGET FRAMEWORK
104
+
105
+ widget.h
106
+ widget.c --
107
+ This module (and the ones below) attempt to encapsulate
108
+ all of the boilerplate logic involved in a widget
109
+ implementation.
110
+
111
+ The central data structure is 'struct WidgetSpec_', which
112
+ consists mostly of a number of callback hooks (or "strategy
113
+ methods") called at various times during the widget lifecycle.
114
+
115
+ Future directions: This isn't namespace-clean; public
116
+ entry points, typedefs, and #defines need a Ttk prefix.
117
+
118
+ There are strict rules about when each hook is called
119
+ and what each hook must, may, and may not do. I need
120
+ to write these rules down somewhere.
121
+
122
+ scroll.c --
123
+ Attempts to encapsulates the control flow logic involved
124
+ in scrolling widgets.
125
+
126
+ Future directions: This is only half-baked. Needs more work.
127
+
128
+ manager.h
129
+ manager.c --
130
+ Utilities for writing geometry managers; used by the
131
+ ttk::notebook and ttk::paned widgets. Handles the
132
+ geometry propagation dance control flow logic and the
133
+ nasty details about slave removal.
134
+
135
+ Future directions: the Ttk_Manager and Ttk_Slave data
136
+ structures need to be made opaque. Some of the function
137
+ signatures are Not Quite Right.
138
+
139
+ The "SlaveConfigured" hook and Ttk_ConfigureSlave() function
140
+ probably don't belong here; configuration is better left
141
+ to the caller. Once these are gone, the SlaveAdded hook
142
+ can go away too, leaving a cleaner and simpler interface.
143
+
144
+ Long-term: write a TIP to push this interface (or one like it)
145
+ all the way into the core to replace the current Tk_GeomMgr API.
146
+ This API is a lot easier to use, and has the potential to
147
+ solve some longstanding problems (e.g., the "pack vs. grid"
148
+ conflict).
149
+
150
+ trace.c --
151
+ A thin wrapper/convenience layer around Tcl_TraceVar() and friends;
152
+ used by widgets that have linked -variable / -textvariable options.
153
+
154
+ Future directions: minor cleanups, namespace prefix
155
+ (may already be done by the time you read this, it's
156
+ near the top of my pile.)
157
+
158
+ track.c --
159
+ Routine TrackElementState(). Used by ttk::scrollbars and other
160
+ widgets where individual elements may be pressed / active instead
161
+ of the widget as a whole. See header comments for details.
162
+
163
+ blink.c --
164
+ Routine BlinkCursor -- registers an event handler / timer
165
+ callback to blink the cursor on and off when the widget
166
+ has focus. See header comments for details.
167
+
168
+
169
+ WIDGET IMPLEMENTATIONS
170
+
171
+ button.c / button.tcl --
172
+ Labels, buttons, checkbuttons, and radiobuttons.
173
+ Not much to say about these, except that it's worthwhile
174
+ comparing the Tile implementation with how the core
175
+ does things. Seriously. This is the best demonstration
176
+ I can think of for why I think the Tile approach is
177
+ on the right track.
178
+
179
+ frame.c --
180
+ Frames and labelframes. Not much to say here either.
181
+
182
+ Future directions: frame widget: None. This is a
183
+ simple widget, and shall remain simple.
184
+
185
+ Future directions: labelframe widget: Should use the
186
+ Ttk_Manager API to manage the -labelwidget.
187
+
188
+ There are several alternate display style possibilities that
189
+ ought to be, but are currently not, implementable with this
190
+ widget (see recent discussion on tktable-tile-dev for details).
191
+
192
+ entry.c --
193
+ Entry and combobox widgets.
194
+
195
+ The entry widget presented something of a challenge,
196
+ since the bulk of the display is handled by the widget
197
+ itself instead of by an element. The theme engine doesn't
198
+ support "owner-draw" widgets very well (yet).
199
+
200
+ Future directions: Reuse the "scroll.c" API to manage
201
+ the -xscrollcommand (once the former has been fixed).
202
+
203
+ Remove the backwards-compatibility methods 'scan mark',
204
+ 'scan dragto', 'selection to', and 'selection adjust'.
205
+ These are unused (and actually a bad idea).
206
+
207
+ It ought to be possible to build a spinbox widget on top
208
+ of the [ttk::entry] entirely in Tcl code. And a
209
+ searchbox widget, and a URL bar, and a bunch of other
210
+ customized entry-like widgets. I don't think that's
211
+ possible right now, but it ought to be.
212
+
213
+ combobox: Add library routines to enable autocompletion
214
+ (must be flexible, as there are lots of different autocompletion
215
+ styles; a single -autocomplete true|false option will not
216
+ suffice.)
217
+
218
+ Fix the focus problems on OSX, Windows, and certain X11 WMs.
219
+ (This might require core patches; I haven't had any luck yet.)
220
+
221
+ notebook.c --
222
+ ttk::notebook widget.
223
+
224
+ Future directions: Right now the widget can't do Firefox-style
225
+ tabs (with a 'close' gizmo on the tab) or Mozilla-style notebooks
226
+ (with a 'close' gizmo in the upper corner). Both of these
227
+ should be possible, but currently aren't.
228
+
229
+ Features that will not be implemented: Multiple rows of tabs,
230
+ scrolling tabs. Both of these options were considered and rejected.
231
+
232
+ paned.c --
233
+ ttk::paned widget.
234
+
235
+ Future directions: Jeff wants to rename this to "ttk::panedwindow".
236
+ Support for "collapse buttons" and other sash controls.
237
+
238
+ progress.c --
239
+ ttk::progressbar widget.
240
+
241
+ Future directions: I want to rename this back to "ttk::progress".
242
+
243
+ There are a couple of alternate display styles (OSX-style chasing
244
+ arrows, throbbers, etc.) that ought to be supported cross-theme
245
+ with common custom styles.
246
+
247
+ scale.c --
248
+ ttk::scale widget. This one isn't finished yet.
249
+
250
+ Future directions: Finish the widget. (See recent
251
+ tktable-tile-dev discussions for API considerations).
252
+
253
+ scrollbar.c --
254
+ ttk::scrollbar widget.
255
+
256
+ Future directions: Native appearance on OSX. This is
257
+ turning out to be very difficult to do, because of an
258
+ impedance mismatch with the way Carbon wants to do things.
259
+
260
+ separator.c --
261
+ A separator. Use this instead of 0-width frames to get a
262
+ separator, the latter doesn't look right.
263
+
264
+ treeview.c --
265
+ A multi-column hierarchical display. This one isn't finished yet.
266
+
267
+ Future directions:
268
+
269
+ I want this widget to be something a bit more powerful than
270
+ the BWidget Tree, but still simpler than TkTreeCtrl. That's
271
+ a useful ecological niche that seems to be unoccupied.
272
+ The trick is to find the right set of primitive features --
273
+ there are a million things you can do with a Tree,
274
+ but I don't want to have a million options and subcommands.
275
+
276
+ Right now I'm looking at:
277
+
278
+ + Add item tags (similar to text and canvas tags) to give
279
+ applications more control over appearance;
280
+ + Add tag event bindings for more control over behavior; and
281
+ + Fix custom style support (see #1168548).
282
+
283
+ I think that'll do it.
284
+
285
+ Then there's the stuff that's just plain misimplemented --
286
+ it should compute item and heading heights from the layout instead
287
+ of hardcoding them; need to replace the hairball [$tv identify $x $y]
288
+ command with something reasonable; horizontal scrolling doesn't
289
+ work; etc...
290
+
291
+
292
+ THEME IMPLEMENTATIONS
293
+
294
+ tkElements.c --
295
+ Default implementations for most elements, and layout
296
+ specifications for the "default" / fallback theme.
297
+
298
+ Future directions: This sort of evolved over time as
299
+ new widgets were added and different approaches to
300
+ building them were tried out; there's little evidence
301
+ of intelligent design. This could stand to be reviewed
302
+ and revised with an eye to consistency and orthogonalization.
303
+
304
+ Ought to remove dependencies on 'Tk_3DBorder's and related routines.
305
+
306
+ label.c --
307
+ Implementation of the "text", "image", and "label" elements.
308
+ This is complicated enough that it warranted being split
309
+ out into its own file.
310
+
311
+ Future directions: May remove auto-stippling of 'image' elements;
312
+ this is a lot of effort for a feature that probably shouldn't
313
+ be implemented in the first place. (Tile widgets provide
314
+ a more flexible way to specify state-dependent images.)
315
+
316
+ classicTheme.c --
317
+ Tk classic look and feel; 1990s-era Motif.
318
+
319
+ Future directions: I might eventually get around to fixing
320
+ the ttk::button default ring.
321
+
322
+ altTheme.c --
323
+ The "alt" / "revitalized" theme. Follows the Windows MSUE
324
+ guidelines (pre-XP); visually compatible with 1998-era GNOME
325
+ and KDE.
326
+
327
+ Future directions: Notebook tabs aren't right; there's
328
+ a performance issue with checkbutton and radiobutton indicators.
329
+
330
+ clamTheme.c --
331
+ The "clam" theme; inspired by the XFCE family of GTK+ themes.
332
+
333
+ Future directions: I was going to get rid of this entirely,
334
+ but due to popular demand it'll be retained.
335
+
336
+ Much of the implementation is rather ad-hoc; it could
337
+ be refined and streamlined.
338
+
339
+ aquaTheme.c --
340
+ Platform-specific theme for OSX.
341
+
342
+ Future directions: Lots of stuff still isn't right here.
343
+ Still uses the old style of notebook tabs (from OSX "Bobcat")
344
+ instead of the newer segmented control (from OSX "Ocelot").
345
+ Native scrollbars aren't implemented at all (tough to solve).
346
+ Only supports one style of window background (nested groupboxes,
347
+ "brushed metal" style, etc., aren't supported). Very tough
348
+ to solve.
349
+
350
+ winTheme.c --
351
+ Platform-specific theme for Windows (pre-XP).
352
+
353
+ Future directions: Spacing parameters might need a bit
354
+ of tweaking, other than that it seems to be in good shape.
355
+
356
+ xpTheme.c --
357
+ Platform-specific theme for Windows (post-XP).
358
+
359
+ Future directions: Same as above; spacing might be a little off,
360
+ other than that it looks OK.
361
+
362
+ stepTheme.c --
363
+ Modelled after the GNUStep/NextStep look and feel;
364
+ also an experimental playground for trying out new stuff.
365
+
366
+ Future directions: Unless anybody is using this in production,
367
+ it will probably be shuffled off into the "demos" directory
368
+ as an example of a dynamically-loadable theme.
369
+
370
+ MISCELLANEOUS:
371
+
372
+ ttkDecls.h
373
+ ttkStubInit.c
374
+ ttkStubLib.c --
375
+ The stub library; can be used to implement loadable themes
376
+ written in C.
377
+
378
+ * * * IMPORTANT NOTICE * * *
379
+
380
+ The tile stub table is generated with a modified version
381
+ of genstubs.tcl. There are a number of small but important
382
+ differences in the way the Ttk stubs table works, that
383
+ are intended to make future evolution easier.
384
+
385
+ compat.h --
386
+ A ghastly autogenerated mess of C preprocessor macros
387
+ used to implement the Tk 8.4 compatibility options.
388
+ This is so people could say "namespace import -force tile::*"
389
+ in existing applications without immediately breaking
390
+ everything. (Note: if anyone is still doing that, STOP!)
391
+
392
+ Future directions: Going away. May be gone by the time you
393
+ read this.
394
+
395
+ gunk.h --
396
+ Miscellaneous portability gunk that I had to add to get
397
+ stuff to compile on various platforms and against different
398
+ Tcl/Tk distributions.
399
+
400
+ Future directions: Needs to be killed.
401
+
402
+ win/monitor.c --
403
+ WIN32 voodoo. Used to detect when the user has switched
404
+ desktop themes or color schemes.
405
+
406
+ win/nmakehlp.c --
407
+ To be honest, I don't know what this is for :-)
408
+ Has something to do with the MSVC-based build system.
409
+