Pratt 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
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
+