commit a copy of snit
[scpubgit/TenDotTcl.git] / snit / ChangeLog
CommitLineData
d4567ecb 12011-12-13 Andreas Kupries <andreas_kupries@users.sourceforge.net>
2
3 *
4 * Released and tagged Tcllib 1.14 ========================
5 *
6
72011-01-24 Andreas Kupries <andreas_kupries@users.sourceforge.net>
8
9 *
10 * Released and tagged Tcllib 1.13 ========================
11 *
12
132010-06-07 Andreas Kupries <andreask@activestate.com>
14
15 * validate.tcl (snit::double, validate): Applied patch by Will
16 * pkgIndex.tcl: fixing the error message for max-limited
17 * snit.man: double types. Bumped versions to 2.3.2 and 1.4.2.
18 * snit.tcl: Extended testsuite.
19 * snit2.tcl:
20 * snit.test:
21
222010-04-30 Andreas Kupries <andreask@activestate.com>
23
24 * snitfaq.man: Fixed typo in 'package require' commands, reported
25 by sigzero@gmail.com.
26
272009-12-07 Andreas Kupries <andreas_kupries@users.sourceforge.net>
28
29 *
30 * Released and tagged Tcllib 1.12 ========================
31 *
32
332009-11-16 Andreas Kupries <andreask@activestate.com>
34
35 * main2.tcl (::snit::RT.typemethod.destroy)
36 (::snit::RT.typemethod.info.instances):
37 * main1.tcl (::snit::RT.typemethod.info.instances)
38 (::snit::RT.typemethod.destroy): [Bug 2898640]. Fixed handling of
39 * snit.tcl: unrelated namespaces by restricting the set of
40 * snit2.tcl: children to look at. Bumped versions of v1 and v2 to
41 * pkgIndex.tcl: 1.4.1 and 2.3.1 respectively.
42 * snit.man:
43
442009-11-02 Andreas Kupries <andreask@activestate.com>
45
46 * snit.tcl: Bumped versions of v1 and v2 to 1.4 and 2.3
47 * snit2.tcl: respectively, taking the backward compatible
48 * snit.man: API changes to validation types into account.
49 * pkgIndex.tcl:
50
512009-10-31 Will Duquette <will@wjduquette.com>
52
53 * validate.tcl: Updated all Snit validation types to return the
54 * snit.tcl: validated value, and to throw -errorcode INVALID
55 on error.
56 * snit.man: Relevant changes.
57
582009-09-29 Andreas Kupries <andreas_kupries@users.sourceforge.net>
59
60 * snit.test: Updated to handle changes in command error messages
61 done in Tcl 8.6+.
62
632009-09-28 Andreas Kupries <andreask@activestate.com>
64
65 * snit.man: Committed a long-standing fix to a bug in the
66 * snit.tcl: last entry. Wrap the close commands into catch
67 * snit2.tcl: to handle the possibility of the std channels
68 * pkgIndex.tcl: not existing. Bumped versions to 1.3.4 and
69 * main1_83.tcl 2.2.4.
70 * main1.tcl:
71 * main2.tcl:
72
732009-06-22 Andreas Kupries <andreask@activestate.com>
74
75 * main1.tcl: Fix handling of hierarchical typemethods for missing
76 * main1_83.tcl: subcommands. If a toplevel hmethod is not found
77 * main2.tcl: we can assume it to be an instance name and do an
78 * pkgIndex.tcl: implicit 'create' of it. If the toplevel hmethod
79 * snit.tcl: has already been accepted however a missing submethod
80 * snit2.tcl: has to error out, an implicit create is not possible
81 * snit.test: any longer. Extended the testsuite to cover this
82 case. Bumped the package versions to 2.2.3, and 1.3.3.
83
842009-04-21 Andreas Kupries <andreask@activestate.com>
85
86 * main1.tcl (::snit::Comp.Init): Close unused standard channels
87 * main1_83.tcl (::snit::Comp.Init): to prevent the internal compile
88 * main2.tcl (::snit::Comp.Init): interp from blocking a close/open
89 * snit.tcl: dance to replace them in the main interp. Bumped the
90 * snit2.tcl: packages to versions 1.3.2 and 2.2.2 respectively.
91 * pkgIndex.tcl:
92
932008-12-12 Andreas Kupries <andreas_kupries@users.sourceforge.net>
94
95 *
96 * Released and tagged Tcllib 1.11.1 ========================
97 *
98
992008-10-16 Andreas Kupries <andreas_kupries@users.sourceforge.net>
100
101 *
102 * Released and tagged Tcllib 1.11 ========================
103 *
104
1052008-08-20 Will Duquette <will@wjduquette.com>
106
107 * snitfaq.man: Finished up [SF Tcllib Bug 1658089].
108
1092008-05-16 Andreas Kupries <andreask@activestate.com>
110
111 * snitfaq.man: Fixed the sectref argument order issues.
112
1132008-05-15 Andreas Kupries <andreas_kupries@users.sourceforge.net>
114
115 * snitfaq.man: Updated to changes in doctools (sub)section
116 reference handling.
117
1182007-12-04 Andreas Kupries <andreask@activestate.com>
119
120 * snit.test: Updated some results to changes in the Tcl 8.5
121 head. This fixes [SF Tcllib Bug 1844106], reported by Larry
122 Virden <lvirden@users.sourceforg.net>. Thanks.
123
1242007-09-12 Andreas Kupries <andreas_kupries@users.sourceforge.net>
125
126 *
127 * Released and tagged Tcllib 1.10 ========================
128 *
129
1302007-08-20 Andreas Kupries <andreask@activestate.com>
131
132 * snit.test: Fixed bad indices in tests causing the generation of
133 bogus expected error messages.
134
1352007-07-03 Andreas Kupries <andreas_kupries@users.sourceforge.net>
136
137 * main1_83.tcl (::snit::Comp.statement.oncget): Fixed double
138 * main1.tcl (::snit::Comp.statement.oncget): import of instance
139 * main2.tcl (::snit::Comp.statement.oncget): and type variables.
140 * snit.man: Bumped versions to 1.3.1 and 2.2.1 respectively.
141 * pkgIndex.tcl:
142 * snit.tcl:
143 * snit2.tcl:
144
1452007-07-02 Andreas Kupries <andreas_kupries@users.sourceforge.net>
146
147 * snit.test: Snit versions bumped to 1.3 and 2.2. Extended
148 * snit.man: 'info' method and typemethod with sub-methods
149 * snitfaq.man: 'args', 'body' and 'default' to query method
150 * main1.tcl: arguments, argument defaults, and bodies.
151 * main1_83.tcl:
152 * main2.tcl:
153 * pkgIndex.tcl:
154
1552007-06-22 Andreas Kupries <andreas_kupries@users.sourceforge.net>
156
157 * snitfaq.man: Replaced deprecated {expand} with {*}.
158
1592007-05-01 Andreas Kupries <andreask@activestate.com>
160
161 * main2.tcl: [Bug 1710640]. Replaced deprecated {expand} with {*}.
162
163 * snit.test: Updated to changes in 8.5a6.
164
1652007-03-21 Andreas Kupries <andreas_kupries@users.sourceforge.net>
166
167 * snit.man: Fixed all warnings due to use of now deprecated
168 * snitfaq.man: commands. Added a section about how to give
169 feedback.
170
1712007-02-12 Andreas Kupries <andreask@activestate.com>
172
173 * snitfaq.man: Fixed typos, etc. reported in [Bug 1658089].
174
1752006-10-19 Jeff Hobbs <jeffh@ActiveState.com>
176
177 * snit.man, main1.tcl, main1_83.tcl, main2.tcl: Allow -class to be
178 passed to snit::widget. [Patch 1580120]
179 * pkgIndex.tcl, snit.tcl, snit2.tcl: Bumped versions to 1.2.1 / 2.1.1.
180
1812006-10-03 Andreas Kupries <andreas_kupries@users.sourceforge.net>
182
183 *
184 * Released and tagged Tcllib 1.9 ========================
185 *
186
1872006-09-20 Will Duquette <will@wjduquette.com>
188 * pkgIndex.tcl, snit2.tcl, snit.man, snitfaq.man, README.txt:
189 Bumped the version number from 2.0 to 2.1, per Andreas' request.
190 Also, added details about the implications of 2.1's use of
191 [namespace path] to README.txt and the Snit FAQ.
192
1932006-09-16 Andreas Kupries <andreas_kupries@users.sourceforge.net>
194
195 * snit_tcl83_utils.tcl: Made the initialization of the
196 compatibility system a bit more robust against loading it
197 multiple times.
198
1992006-09-11 Will Duquette <will@wjduquette.com>
200 * main2.tcl: Comp.statement.typevariable now places the type name
201 directly in the "tvprocdec" rather than waiting to substitute it
202 in later.
203
2042006-08-19 Will Duquette <will@wjduquette.com>
205 * main2.tcl, snit.test: Fixed Bug 1483168: "Namespaced snit objs
206 are not commands in their ns". In particular, Snit 2.x types and
207 widgets now use [namespace path] to give themselves access to
208 their parent namespace.
209 * snit.man,snitfaq.man: Updated accordingly; also, fixed a couple
210 of typos in snitfaq.man.
211
212 * main2.tcl: Snit 2.x now uses [namespace upvar] where appropriate
213 throughout the Snit run-time and also for implicit declaration of
214 instance variables; I still need to use it for implicit
215 declaration of type variables. On my machine, dispatch of a
216 method with 10 instance variables is over twice as fast
217 when the variables are declared using [namespace upvar] rather
218 than [::variable ${selfns}::varname].
219
220 * main2.tcl: Snit 2.x now uses [namespace upvar] for implicit
221 declaration of type variables as well. It develops that
222 [namespace upvar] is a lot faster than [::variable] even when
223 using the default namespace (e.g., "::variable varname").
224
2252006-08-15 Will Duquette <will@wjduquette.com>
226 * main2.tcl, snit.test: Fixed Bug 1532791: "snit2,
227 snit::widget problem".
228
2292006-08-12 Will Duquette <will@wjduquette.com>
230 * main1.tcl, main1_83.tcl, main2.tcl: Replaced as many [string equal] calls
231 in main1_83.tcl with {"" ==/!= $a} expressions, so that the
232 differences between the two files are minimized. Also removed the
233 "-glob" from calls to "array names" in main1.tcl. There are now
234 only a few remaining differences between the two files.
235
236 Also, I added a "return" to the end of RT.DestroyObject in all
237 three "main" modules, to prevent a confusing return value from
238 "$object destroy" that Andreas noticed a while back.
239
240 * snit.test: Two tests, iinfo-6.4 and iinfo-6.5, failed on Tcl
241 8.3. The -result in both cases was a list of Tk widget options
242 that included some new options defined in Tcl 8.4. I added two
243 new constraints, tcl83 and tcl84, and duplicated the two tests,
244 one for each.
245
2462006-08-10 Will Duquette <will@wjduquette.com>
247 * snit.man: Added documentation for how to define new
248 validation types.
249
2502006-08-09 Will Duquette <will@wjduquette.com>
251 * snit.man: Added documentation for the "-type" option-definition
252 option, and for the validation types. I still need to fill in a
253 section on defining new validation types.
254 * validate.tcl: Cleaned up the header comment.
255
2562006-08-08 Will Duquette <will@wjduquette.com>
257 * main1.tcl: Removed all "eq" and "ne" expressions, to reduce
258 the differences between main1.tcl and main1_83.tcl. Unlike
259 main1_83.tcl, though, I used the forms {"" == $a} and
260 {"" != $a} in preferences to [string equal], as they are
261 both shorter and more efficient. I used [string equal]
262 only when comparing two variables. The next step is
263 to update main1_83.tcl to use the {"" ==/!= $a} form
264 where possible, in preference to [string equal]; then,
265 most of the code can be shared between the two modules,
266 which will simplify maintenance.
267
2682006-08-07 Will Duquette <will@wjduquette.com>
269 * Implemented "-type" option-definition option in main2.tcl,
270 for Snit 2.x, and main1_83.tcl for Snit 1.2 on Tcl 8.3.
271
2722006-08-06 Will Duquette <will@wjduquette.com>
273 * Major reorganization of the code modules. snit.tcl and
274 snit2.tcl are now just short loader scripts. The Snit 1.x
275 compiler and run-time library are implemented in main1.tcl and
276 main1_83.tcl, respectively; the Snit 2.x compiler and run-time
277 are in main2.tcl. Both loaders load validate.tcl, which contains
278 the new validation types. This scheme is documented in
279 modules.txt.
280
281 * Bumped the Snit 1.x version number to Snit 1.2, since
282 Snit 1.1 has been a robust, stable release.
283
284 * snit83.tcl: Removed; obsolete
285 * snit84.tcl: Removed; obsolete
286
287 * snit.tcl, main1_83.tcl: snit_tcl83_utils.tcl is now sourced in
288 snit.tcl rather than main1_83.tcl. I don't believe this should
289 cause a problem....but it needs to be tested.
290
291 * snit.test: Added tests for Snit validation types. These tests
292 pass for Snit 2.x and for Snit 1.2 with Tcl 8.4. They *should*
293 pass for Snit 1.2 with Tcl 8.3, but I've been unable to test that.
294
295 * README.txt: Updated
296
297 * main1.tcl, snit.test: Implemented the "-type" option-definition
298 option for Snit 1.2 and Tcl 8.4, and added related tests.
299
300 * Still to do:
301 1. Implement the "-type" option-definition option in
302 main1_83.tcl and main2.tcl.
303 2. Write documentation for "-type" and for the Snit
304 validation types.
305 3. Consider refactoring main1.tcl, main1_83.tcl for
306 maximum commonality, to simplify future changes of
307 this kind.
308
3092006-08-05 Will Duquette <will@wjduquette.com>
310 * validate.tcl: New module; defines a number of "validation
311 types". These will be used with the forthcoming "-type"
312 option-definition option to add robust validation for snit::type
313 and snit::widget options.
314
3152006-07-26 Andreas Kupries <andreas_kupries@users.sourceforge.net>
316
317 * snitfaq.man: Finally fixed the two ambigous section titles.
318
3192006-01-30 Andreas Kupries <andreas_kupries@users.sourceforge.net>
320
321 * snit.tcl: Fixed [SF Tcllib Bug 1414589], prevent the package
322 activation code from stomping on the global variable 'dir'.
323
3242006-01-29 Andreas Kupries <andreas_kupries@users.sourceforge.net>
325
326 * snit.test: Fixed use of duplicate test names. Whitespace police
327 as well.
328
3292006-01-26 Andreas Kupries <andreas_kupries@users.sourceforge.net>
330
331 * snit.test: More boilerplate simplified via use of test support.
332
3332006-01-19 Andreas Kupries <andreas_kupries@users.sourceforge.net>
334
335 * snit.test: Hooked into the new common test support
336 code. Reactivated the tests based on the commands wrongNumArgs
337 and tooManyArgs. Coming out of the new test support code.
338
3392006-01-14 Will Duquette <will@wjduquette.com>
340
341 * snit2.tcl (::snit::RT.UnknownMethod): When creating a new
342 submethod ensemble, creates it in the ${selfns} namespace
343 instead of in the ${type} namespace (fix courtesy of
344 Anton Kovalenko). Previously, multiple objects of a type that
345 defines a submethod ensemble would share a single ensemble,
346 with confusing results.
347 * snit.test: Added test hmethod-1.6, to test for the above error.
348 As expected, there was no error in snit 1.1, but the test failed
349 in snit 2.0 until the above change was made.
350 * snit.test: "if 0"'d out some tests that make use of
351 tcltest::tooManyArgs and tcltest::wrongNumArgs, two commands
352 that aren't available to me.
353
354 * snitfaq.man: Fixed a typo and added a suggestion from
355 Andreas Kupries on how to name component commands.
356
357 * snit.man: Added Kenneth Green and Anton Kovalenko to the list
358 of names in the "Credits".
359
3602005-12-05 Andreas Kupries <andreask@activestate.com>
361
362 * snit83.tcl: Replaced the direct use of / path separator with a
363 proper file join.
364
3652005-11-07 Andreas Kupries <andreask@activestate.com>
366
367 * pkgIndex.tcl: Moved the selection of the implementation out of
368 the package declaration into the runtime.
369
370 * snit.tcl: Renamed to snit84.tcl. Also a new file containing
371 the selection of the implementation, basic dependency, and
372 common provide command.
373
374 * snit84.tcl: New file. Was originally named 'snit.tcl'. Contains
375 the Tcl 8.4 specific implementation of the package.
376
377 * snit.test: Updated to new entrypoint for snit 1.1.
378
3792005-10-06 Andreas Kupries <andreas_kupries@users.sourceforge.net>
380
381 *
382 * Released and tagged Tcllib 1.8 ========================
383 *
384
3852005-09-26 Andreas Kupries <andreask@activestate.com>
386
387 * snit.test: Adapted the testsuite to handle the 8.3 backport.
388
389 * snit83.tcl: Integrated Kenneth Green's backport of
390 * snit_tcl83_utils.tcl: Snit to Tcl 8.3 into the code base.
391
392 * snit.tcl: Checking the list result of [info commands ] now using
393 [llength] instead of string comparisons.
394
395 * snit2.tcl: Checking the list result of [info commands ] now using
396 [llength] instead of string comparisons.
397
3982005-09-05 Will Duquette <will@wjduquette.com>
399
400 * snitfaq.man: Updated for Snit 2.0/1.1.
401
4022005-08-27 Will Duquette <will@wjduquette.com>
403
404 * snit.man: Updated for Snit 2.0/1.1
405 * snit.tcl: Added the new hulltypes to snit.tcl (somehow they
406 didn't get in).
407 * snit.test: Added a test that verifies the list of valid
408 hulltypes.
409
4102005-08-22 Jeff Hobbs <jeffh@ActiveState.com>
411
412 * snit.tcl, snit2.tcl: allow labelframe and ttk::labelframe as
413 hulltypes, and tk::(label)frame (planning ahead ...)
414
4152005-08-20 Will Duquette <will@wjduquette.com>
416
417 * snit.tcl: It's now an error to call an object's "destroy" method
418 in the object's constructor.
419 * snit2.tcl: Snit 2.0, implemented with "namespace ensemble".
420 * snit.test: Now uses the "-body" style of Tcltests throughout.
421 Also, tests Snit 1.x (snit.tcl) when run with Tcl/Tk 8.4, and
422 tests Snit 2.x when run with Tcl/Tk 8.5.
423
4242005-08-10 Jeff Hobbs <jeffh@ActiveState.com>
425
426 * snit.tcl (::snit::Comp.statement.hulltype): make hulltype one of
427 $::snit::hulltypes, allow ttk::frame
428
4292005-06-07 Will Duquette <will@wjduquette.com>
430
431 * snit.test (bug-2.1, bug-2.2): Added the "tk" constraint, so that
432 they'll be excluded when snit.test is run with tclsh.
433
4342005-06-04 Will Duquette <will@wjduquette.com>
435
436 * snit.tcl, snit.man, snitfaq.man: Updated the copyright
437 information to 2005.
438 * snit.html, faq.html: Removed these files, as they are obsolete.
439 snit.man and snitfaq.man contain the up-to-date documentation.
440
4412005-06-04 Will Duquette <will@wjduquette.com>
442
443 * snit.tcl: Bumped the version number to 1.0
444 * pkgIndex.tcl: Bumped the version number to 1.0.
445 * dictionary.txt: Bumped the version number to 1.0.
446 * snit.man: Bumped the version number to 1.0.
447 * snitfaq.man: Bumped the version number to 1.0.
448
4492005-06-04 Will Duquette <will@wjduquette.com>
450
451 * snit.tcl (::snit::RT.DestroyObject)
452 * snit.test (test bug-2.1, bug-2.2):
453 Fixed [SF Tcllib Bug 1106375].
454
4552005-06-04 Will Duquette <will@wjduquette.com>
456
457 * snit.tcl (::snit::Comp.statement.destructor):
458 * snit.test (test bug-1.1)
459 Fixed [SF Tcllib Bug 1161779].
460
4612005-06-04 Will Duquette <will@wjduquette.com>
462
463 * snit.tcl: Checked a number of small optimizations Jeff Hobbs
464 sent me. Bumped the version number to 0.98.
465 * pkgIndex.tcl: Bumped the version number to 0.98.
466 * dictionary.txt: Bumped the version number to 0.98.
467 * snit.man: Bumped the version number to 0.98.
468 * snitfaq.man: Bumped the version number to 0.98.
469
4702005-04-11 Marty Backe <marty@lucidway.org>
471
472 * snit.man: Fixed typo in the -configuremethod example.
473
4742005-02-14 Andreas Kupries <andreask@activestate.com>
475
476 * snitfaq.man: Fixed a number of typos reported by Bob Techentin,
477 see [SF Tcllib Bug 1050674].
478
4792004-10-05 Andreas Kupries <andreas_kupries@users.sourceforge.net>
480
481 *
482 * Released and tagged Tcllib 1.7 ========================
483 *
484
4852004-09-23 Andreas Kupries <andreas_kupries@users.sourceforge.net>
486
487 * snit.test: Fixed the tests which were dependent on the exact
488 order of results returned by [array names]. Which failed for Tcl
489 8.5. Added lsort and updated expected results, for canonical
490 comparison.
491
4922004-09-18 Will Duquette <will@wjduquette.com>
493
494 * snit.man: Documented hierarchical methods and typemethods.
495
496 * Everything: Updated version to 0.97.
497
4982004-09-16 Will Duquette <will@wjduquette.com>
499
500 * snit.tcl In "component foo -public name", the "-public
501 name" part is now implemented as "delegate method
502 {name *} to foo".
503 * snit.test Added tests for "$type info typemethods", "$self
504 info typemethods" and "$self info methods" for the
505 case of hierarchical methods/typemethods, and
506 fixed related bugs in snit.tcl.
507
5082004-09-14 Will Duquette <will@wjduquette.com>
509
510 * snit.tcl Modified the implementation of hierarchical methods;
511 * snit.test this involved extending the syntax of method
512 "using" patterns to better support the
513 hiearchical case.
514
515 * snit.tcl Extended the "delegate method *" and
516 * snit.test "delegate typemethod *" syntax to work better with
517 hierarchical methods.
518 E.g., "delegate method {tail *} to tail" now maps
519 "$self tail wag" to "$tail wag"
520
5212004-09-12 Will Duquette <will@wjduquette.com>
522
523 * snit.tcl Added support for hierarchical type methods,
524 * snit.test analogously to the support for regular methods.
525 * README.txt
526
527 * snit.tcl Refactored the compilation of hierarchical
528 * snit.test methods and typemethods to remove duplicated code.
529
5302004-09-10 Will Duquette <will@wjduquette.com>
531
532 * snit.tcl Added support for hierarchical methods: methods
533 * snit.test with submethods. The documentation has not yet
534 * README.txt been updated.
535
536 * snit.tcl Bug fix: "delegate method {a b} to comp" now produces
537 * snit.test the call "$comp a b" instead of "$comp a_b".
538
5392004-09-04 Will Duquette <will@wjduquette.com>
540
541 * snit.tcl Bug fix: read-only options were read-only only
542 * snit.test if they weren't set at creation time; the
543 * README.txt configure cache wasn't being cleared properly
544 after creation.
545
5462004-08-28 Will Duquette <will@wjduquette.com>
547
548 * snit.tcl: Minor tweaks to instance creation to improve
549 * dictionary speed. No major gain. Also, -simpledispatch yes
550 * snit.man now supports instance renaming again.
551 * snitfaq.man
552
553
5542004-08-22 Will Duquette <will@wjduquette.com>
555
556 * snit.tcl Defined the -simpledispatch pragma. Updated
557 * snit.test the test suite and the relevant documentation.
558 * snit.man
559 * README.txt
560 * snitfaq.man
561 * dictionary
562
5632004-08-14 Will Duquette <will@wjduquette.com>
564
565 * snit.tcl Defined the -hastypemethods pragma, and added
566 * snit.test relevant tests and documentation.
567 * snit.man
568 * README.txt
569 * snitfaq.man
570
5712004-08-12 Will Duquette <will@wjduquette.com>
572
573 * snit.tcl Under appropriate conditions, calling a
574 * snit.test snit::type command with no arguments will create
575 * snit.man an instance with an automatically generated name.
576 * README.txt
577
5782004-08-11 Will Duquette <will@wjduquette.com>
579
580 * snit.tcl Added the -hasinfo pragma, along with the
581 * snit.test appropriate tests. Updated documentation.
582 * snit.man
583 * README.txt
584
585 * snit.tcl The "configure", "configurelist" and "cget"
586 * snit.test instance methods, along with the "options"
587 * snit.man instance variable, are defined only if the
588 * README.txt type defines at least one option (either
589 locally or by delegation).
590
5912004-08-07 Will Duquette <will@wjduquette.com>
592
593 * All files Updated to Snit V0.96 for post-0.95 development.
594 Fixed bug: methods called via [mymethod] can now
595 return exotic return codes, e.g.,
596 "return -code break"
597
5982004-08-04 Will Duquette <will@wjduquette.com>
599
600 * snitfaq.man Updated the Snit FAQ document.
601
602 * snit.man Finalized Snit V0.95, and updated the version number
603 * snit.tcl throughout.
604 * pkgIndex.tcl
605 * README.txt
606
6072004-07-27 Will Duquette <will@wjduquette.com>
608
609 * snit.man Updated the manpage to describe the new "pragma"
610 statement. Also, changed the SNIT acronym in the
611 title to "Simple Now In Tcl", i.e., objects are
612 now simple.
613
614 * snit.tcl Added another pragma, -canreplace. If false
615 * snit.test (the default) snit::types can no longer create
616 * README.txt instances which replace existing Tcl commands.
617 * snit.man Setting "pragma -canreplace yes" restores the
618 * dictionary previous behavior.
619
620 * snit.tcl The type definition statements "variable" and
621 * snit.test "typevariable" now take a "-array" option that
622 * README.txt allows them to initialize array variables with
623 * snit.man an "array set" list.
624
625 * snit.test Fixed Snit bug 899207 (snit test failures)
626
627 * snit.tcl Added new instance introspection methods
628 * snit.test "info typemethods" and "info methods", and a new
629 * README.txt type introspection typemethod "info typemethods".
630 * snit.man
631 * roadmap.txt
632
633 * snit.man Reviewed the entire man page, and made copious
634 changes and fixes.
635
636 * snit.tcl Revised many of the error messages to be more
637 * snit.test Tcl/Tk-like. Double-quotes are used instead of
638 single quotes, and terminal periods are omitted.
639
640 * snit.tcl Added some code to method and typemethod dispatch
641 * snit.test so that the return code (e.g., return -code break)
642 returned by the method/typemethod code is passed
643 along unchanged. This is mostly so that methods
644 and typemethods can conditionally break in event
645 bindings.
646
6472004-07-26 Will Duquette <will@wjduquette.com>
648
649 * snit.tcl Implemented -configuremethod and configure command
650 * snit.test caching; added tests to ensure that the cache is
651 * roadmap.txt cleared when necessary. Implemented -validatemethod
652 * dictionary and added tests. Implemented -readonly and added
653 * README.txt tests.
654
655 * snit.man Updated the man page with the new option
656 definition syntax.
657
658 * snit.tcl Added the "pragma" statement, and three pragma
659 * snit.test options, -hastypeinfo, -hastypedestroy, and
660 * roadmap.txt -hasinstances, plus related tests. It still
661 * dictionary needs to be documented.
662
6632004-07-25 Will Duquette <will@wjduquette.com>
664
665 * snit.tcl Renamed some procs for clarity, and repaired some
666 * roadmap.txt omissions in roadmap.txt. Added "cget" command
667 * snit.test caching for additional speed-up.
668 * dictionary.txt
669
6702004-07-24 Will Duquette <will@wjduquette.com>
671
672 * snit.tcl (::snit::RT.MethodCacheLookup): The cached command
673 is now generated as a list, not a string; this
674 improves the speed of method invocation by quite a
675 bit.
676
6772004-07-24 Will Duquette <will@wjduquette.com>
678
679 * snit.tcl Consolidated the option typevariables into a
680 * dictionary single array, Snit_optionInfo. Implemented
681 * roadmap.txt parsing of the new option definition syntax;
682 * snit.test the -validatemethod, -configuremethod, and
683 -cgetmethod options as yet have no effect.
684 Added tests to ensure that the 'option' and
685 'delegate option' statements populate
686 Snit_optionInfo properly.
687
688 Added "starcomp" to the Snit_optionInfo array.
689 When "delegate option *" is used, "*" no longer
690 has a "target-$opt" entry, nor does it appear
691 in "delegated-$comp". Instead, "starcomp" is the
692 name of the component to which option "*" is
693 delegated, or "".
694
695 Reimplemented user-defined "cget" handlers using
696 the "-cgetmethod" option definition option.
697 The "oncget" statement now defines a method, and
698 sets the option.
699
7002004-07-21 Will Duquette <will@wjduquette.com>
701
702 * README.txt Updated to reflect recent changes.
703 * snit.man
704
7052004-07-20 Will Duquette <will@wjduquette.com>
706
707 * snit.tcl Finished the refactoring job. All extraneous
708 * roadmap.txt code has been moved from the type templates to the
709 ::snit:: runtime.
710
7112004-07-19 Will Duquette <will@wjduquette.com>
712
713 * snit.tcl Refactored %TYPE%::Snit_optionget to
714 * roadmap.txt ::snit::RT.OptionDbGet. Refactored
715 %TYPE%::Snit_cleanup to ::snit::RT.DestroyObject,
716 %TYPE%::Snit_tracer to ::snit::RT.InstanceTrace,
717 and %TYPE%::Snit_removetrace to
718 ::snit::RT.RemoveInstanceTrace.
719
7202004-07-17 Will Duquette <will@wjduquette.com>
721
722 * snit.tcl Added "delegate typemethod ..." in all its glory,
723 * snit.test including "delegate typemethod *". Made it
724 * dictionary.txt Possible to delegate an instance method to a
725 * roadmap.txt typecomponent. Added tests to ensure that
726 variable/typevariable and component/typecomponent
727 names do not collide. Updated a number of
728 compilation error messages for consistency.
729 Moved the remaining typemethod definitions from the
730 template code and replaced them delegations to
731 the Snit runtime library. Added/modified
732 relevant tests, and updated the roadmap and
733 dictionary files.
734
7352004-07-15 Will Duquette <will@wjduquette.com>
736
737 * snit.tcl Replaced the old typemethod definition and
738 cacheLookup code with new pattern-based code, just
739 like the method definition and lookup. The
740 cache lookup routine doesn't yet understand
741 typemethod "*". The next step is to implement
742 typecomponents and "delegate typemethod".
743
744 * dictionary.txt Documented the changes related to the above
745 change.
746
7472004-07-14 Will Duquette <will@wjduquette.com>
748
749 * snit.tcl Replaced %TYPE%::Snit_comptrace with
750 snit::RT.ComponentTrace.
751
752 Replaced %TYPE%::Snit_cacheLookup with
753 snit::RT.MethodCacheLookup
754
755 Replaced %TYPE%::Snit_typeCacheLookup with
756 snit::RT.TypemethodCacheLookup
757
758 * snit.test Added a test to verify that a widget's hull
759 component cannot be altered once it is set.
760
761 * roadmap.txt Documents the internal structure of snit.tcl.
762
7632004-07-11 Will Duquette <will@wjduquette.com>
764
765 * snit.tcl Renamed a number of internal commands, for
766 clarity.
767
768 Refactored the standard method bodies
769 out of the type definition and into the Snit
770 runtime using delegation.
771
772 Defined snit::compile which compiles a
773 type definition into the Tcl script which
774 actually defines the type.
775
776 * snit.test Added and modified appropriate tests.
777
778 * README.txt Added a bullet about snit::compile.
779
7802004-07-05 Will Duquette <will@wjduquette.com>
781
782 * snit.tcl Replaced the old method cacheLookup code with new
783 code based on command patterns. All tests pass;
784 no test changes were needed. All is now ready to
785 add the new "delegate method" "using" keyword.
786 * dictionary.txt
787 This file documents Snit's private variables.
788 It's up-to-date, and checked in for the first
789 time.
790
791 * snit.tcl Implemented the new "using <pattern>" clause to
792 * snit.test "delegate method", and added relevant tests.
793
794 * snit.man Documented the new "delegate method" syntax.
795 * README.txt
796
7972004-07-04 Will Duquette <will@wjduquette.com>
798
799 * snit.tcl Re-implemented the option and method delegation
800 * snit.test syntax so that the order of clauses is no longer
801 important. Along the way, I made the relevant
802 error messages more specific.
803
8042004-06-26 Will Duquette <will@wjduquette.com>
805
806 * snit.tcl Added the "component" statement, with two options,
807 * snit.test -public and -inherit. Added all relevant tests.
808 * snit.man Updated the man page to describe it.
809
8102004-05-30 Will Duquette <will@wjduquette.com>
811
812 * snit.man Updated per 0.94 changes to date; also I made a
813 sweep through the whole document and cleaned
814 things up here and there for readability.
815
8162004-05-29 Will Duquette <will@wjduqette.com>
817
818 * snit.tcl Moved Snit_component to snit::Component.
819
820 Removed the "type" argument from all of the
821 "Type.*" procs. Instead, the compilation type
822 is available as $compile(type). Consequently,
823 the Type.* procs can now be aliased into the
824 compiler just once, instead of with every type
825 definition. (Did that.)
826
827 Defined snit::macro.
828
829 * snit.test Added tests for snit::macro.
830
8312004-05-23 Andreas Kupries <andreas_kupries@users.sourceforge.net>
832
833 *
834 * Released and tagged Tcllib 1.6.1 ========================
835 *
836
8372004-05-15 Will Duquette <will@wjduquette.com>
838
839 * snit.tcl: Updated version to 0.94
840 * pkgIndex.tcl:
841
842 * snit.tcl: Modified the Snit_dispatcher function to
843 use a method command cache. Method commands
844 are assembled in Snit_cacheLookup only if
845 they aren't found in the cache. The
846 new Snit_dispatcher was much shorter,
847 so its code was moved into the object's
848 instance command, and Snit_dispatcher
849 was deleted altogether. These changes
850 speed up method calls considerably.
851
852 Snit_tracer was then modified to clear the
853 method cache when the instance command is
854 renamed--the cached commands contained the
855 old instance command name.
856
857 * snit.test: Components can be changed dynamically; the
858 method cache breaks this, because the
859 previous component's command is still
860 cached. Added a test that checks whether
861 the method cache is cleared properly when
862 a component is changed.
863
864 * snit.tcl: Snit_comptrace now clears the method cache
865 when a component is redefined.
866
867 * snit.tcl: Added a type method cache. Type methods
868 (with the exception of implicit "create") are
869 now as fast as instance methods. This is a
870 naive implementation, though--for typemethods,
871 the cache could be populated at definition
872 time, since there's no delegation. Of course,
873 if I added typemethod delegation then what I'm
874 doing is appropriate.
875
876 * snit.tcl: Reorganized some things, in preparation to move
877 shared code from the type definition to the
878 snit:: namespace.
879
880 * snit.tcl: Made %TYPE%::mymethod an alias to snit::MyMethod.
881
882 * snit.tcl: Added %TYPE%::myproc, as an alias to
883 * snit.test: snit::MyProc. "codename" is now deprecated.
884 Added tests for myproc.
885
886 * snit.tcl: %TYPE%::codename is now an alias to
887 snit::CodeName.
888
889 * snit.tcl: Added %TYPE%::myvar and %TYPE%::mytypevar; these
890 replace %TYPE%::varname and %TYPE%::typevarname,
891 which are now deprecated. All are now implemented
892 as aliases to calls in snit::.
893
894 * snit.tcl: %TYPE%::variable is now an alias to
895 snit::variable.
896
897 * snit.tcl: %TYPE%::from is now an alias to snit::From.
898
8992004-02-26 Andreas Kupries <andreas_kupries@users.sourceforge.net>
900
901 * snit.test: Codified the requirement of Tcl 8.4 into
902 * pkgIndex.tcl: package index and test suite.
903
9042004-02-15 Andreas Kupries <andreas_kupries@users.sourceforge.net>
905
906 *
907 * Released and tagged Tcllib 1.6 ========================
908 *
909
9102004-02-07 Will Duquette <will@wjduquette.com>
911
912 * README.txt: Added 0.93 information to README.txt.
913
914 * snit.tcl: Fixed bug: "$obj info vars" used to leave out "options"
915 * snit.test: if no options were defined. It's clearer if the
916 behavior is always the same.
917
918 Fixed tcllib bugs item #852945: variable. The
919 statement "variable ::my::qualified::name" in an
920 instance method now makes "name" available, just
921 as the standard "variable" command does.
922
923 Fixed bug: in some cases the type command was
924 created even if there was an error defining the
925 type. The type command is now cleaned up in these
926 cases. (Credit Andy Goth)
927
928 * snit.tcl: Implemented RFE 844766: need ability to split class
929 * snit.test: defs across files. Added the snit::typemethod and
930 * snit.html: snit::method commands; these allow typemethods and
931 methods to be defined after the class already exists.
932
9332004-02-07 Will Duquette <will@wjduquette.com>
934
935 * All: Updated version to 0.93.
936 * snit.tcl: The %AUTO% name counter wraps around to 0 when it
937 reaches 2^31 - 1, to prevent integer overflow
938 errors.
939 * snit.html: Minor corrections and updates.
940 * faq.html
941
9422003-12-06 Will Duquette <will@wjduquette.com>
943
944 * All: Updated version to 0.92.
945
946 * snit.tcl Snit now propagates errorCode properly when
947 * snit.test propagating errors.
948
9492003-12-01 Andreas Kupries <andreas_kupries@users.sourceforge.net>
950
951 * snit.man: Updated to changes in the .html files.
952 * snitfaq.man:
953
9542003-11-21 Will Duquette <will@wjduquette.com>
955
956 * snit.tcl: Updated version to 0.91.
957 * pkgIndex.tcl:
958
959 * snit.tcl: Added the "expose" statement to type and widget
960 definitions.
961 * snit.test: Added appropriate tests.
962 * snit.html: Added documentation for "expose".
963 * faq.html: Updated the FAQ entries.
964
965 * snit.tcl: Added "string match" patterns to the Snit info
966 methods.
967 * snit.test: Added appropriate tests.
968 * snit.html: Updated documentation.
969
970
9712003-10-28 Andreas Kupries <andreask@activestate.com>
972
973 * snit.man: Fixed typos in documentation.
974 * snitfaq.man:
975
9762003-10-27 Will Duquette <will@wjduquette.com>
977
978 * snit.html: Fixed typos in documentation.
979 * faq.html:
980
9812003-10-27 Andreas Kupries <andreask@activestate.com>
982
983 * snit.man: Updated to changes in the .html files.
984 * snitfaq.man:
985
9862003-10-25 Will Duquette <will@wjduquette.com>
987
988 * snit.tcl: Added the "except" clause for "delegate method *" and
989 * snit.test: "delegate option *". This allows the user to
990 explicitly exclude certain methods and options.
991 Added appropriate tests.
992
993 * snit.html: Gave the Snit FAQ a bit of an overhaul, and added
994 * faq.html: information corresponding to the recent code
995 changes, including a great deal of material on Snit
996 and the Tk option database. Updated the Snit man
997 page to be consistent with the recent code changes.
998
9992003-10-23 Andreas Kupries <andreask@activestate.com>
1000
1001 * snit.man: Updated from Will's html doc's.
1002
10032003-10-23 Will Duquette <will@wjduquette.com>
1004
1005 * snit.html: Added documentation for the new "hulltype",
1006 "widgetclass", and "install" commands. Updated the
1007 documentation for "installhull" to show the new
1008 "installhull using" syntax. Updated the
1009 documentation for "option" and "delegate option" to
1010 show how to specify the resource and class names for
1011 options. Added a section on the interaction between
1012 Snit and the Tk option database.
1013
10142003-10-21 Will Duquette <will@wjduquette.com>
1015
1016 * snit.tcl: Add the "hulltype" command. This allows the snit::widget
1017 * snit.test: author to choose whether the hull should be a frame
1018 or a toplevel. Tests have been updated as usual.
1019
10202003-10-20 Will Duquette <will@wjduquette.com>
1021
1022 * snit.tcl: The new "install" command can now be used to install
1023 * snit.test: components for snit::types as well. It doesn't add
1024 any value, since there's no option database, but at
1025 least the syntax will be the same.
1026
1027 "install" now initializes the component properly
1028 from the option database when "option *" has been
1029 delegated to it.
1030
1031 Tests have been updated as usual.
1032
10332003-10-19 Will Duquette <will@wjduquette.com>
1034
1035 * snit.tcl: During normal widget creation, the default values
1036 * snit.test: for a widget's local options are overridden by
1037 values from the option database.
1038
1039 Array %TYPE%::Snit_compoptions now lists delegated
1040 option names for each component.
1041
1042 Added a new command, "install", for use in widget
1043 and widgetadaptor constructors. Install creates a
1044 widget, assigning it to a component; it also queries
1045 the option database for any option values that are
1046 delegated to this component.
1047
1048 Modified installhull, adding a new form that queries
1049 the option database as appropriate for options
1050 delegated to the hull widget.
1051
1052 At this point, the only options whose default values
1053 do not come from the option database in the proper
1054 way are those implicitly delegated by "delegate
1055 option *" to a non-hull widget. I need to think
1056 about those.
1057
1058 Of course, new tests have been added for all of this.
1059
1060 The version number in snit.tcl has been updated to 0.84.
1061
10622003-10-18 Will Duquette <will@wjduquette.com>
1063
1064 * snit.tcl: Added the "widgetclass" statement; this allows
1065 * snit.test: snit::widgets (and nothing else) to explicitly set
1066 the widget class name passed to the hull as "-class".
1067 In addition, the hull's -class is set automatically,
1068 to the explicit widgetclass, if any, or to the
1069 widget type name with an initial capital letter.
1070
1071 Next, an object's options now have real resource
1072 and class names, which are reported correctly by
1073 "$obj configure". By default, the resource name
1074 is just the option name minus the hyphen, and
1075 the class name is just the resource name with an
1076 initial capital.
1077
1078 In both the "option" and "delegate option"
1079 statements, the option name may be specified as
1080 a pair or a triple, e.g.,
1081
1082 option {-name name Name}
1083
1084 Thus, the resource name and class name can be
1085 specified explicitly.
1086
1087 In previous versions, the resource name and
1088 class name returned by configure for delegated
1089 options was the resource name and class name
1090 returned by the component. This is no longer
1091 true; configure now returns the resource and
1092 class name defined in the type definition.
1093
10942003-10-17 Will Duquette <will@wjduquette.com>
1095
1096 * snit.html: Added typeconstructor documentation.
1097 * faq.html:
1098
1099 * snit.tcl: Implemented typeconstructors. A typeconstructor's
1100 body is executed as part of the compiled type
1101 definition; it has access to all of the typevariables
1102 and typemethods. Its job is to initialize arrays,
1103 set option database values, and like that.
1104
1105 * snit.test: Added tests for typeconstructors.
1106
11072003-10-16 Will Duquette <will@wjduquette.com>
1108
1109 * README.txt: Updated to reflect snit's presence in tcllib, and
1110 to point to this ChangeLog file.
1111
11122003-09-30 Andreas Kupries <andreask@activestate.com>
1113
1114 * snit.tcl: A number of changes to the code generation part.
1115 - Usage of [subst]'s was superfluous, removed, simple string
1116 interpolation now.
1117
1118 - Now 'namespace eval type' enclosing the generated code
1119 anymore. Such an eval is now done only at the top of the
1120 generated code to define the namespace, and to
1121 define/initialize the typevariables. All procedure definitions
1122 are now outside of 'namespace eval' and use fully qualified
1123 command names instead.
1124
1125 - Moved the code in [snit::Define] which instantiated the class
1126 using the generated code into it own helper command,
1127 [snit::DefineDo]. Overiding this command allows users of the
1128 snit package perform other actions on the newly defined
1129 class. One example is that of a snit-compiler which goes
1130 through a file containing tcl code and replaces all snit::*
1131 definitions with the generated code.
1132
1133 Motivation for the change: When applying procomp to procedure
1134 definitions inside of a 'namespace eval' they are not
1135 byte-compiled, but kept as encoded literal. This is a direct
1136 consequence of 'namespace eval' not having a compile
1137 function. It also means that introspection, i.e. [info body]
1138 does recover the actual procedure definition. By using procedure
1139 definitions outside of namespace eval, but fully qualified names
1140 this limitation of procomp is avoided. The aforementioned snit
1141 compiler application is another part for this, ensuring that
1142 instead of keeping the whole class definition as one literal for
1143 the snit::* call we actually have tcl code to compile and hide.
1144
1145 * snit.tcl: Updated the version number to 0.83
1146 * pkgIndex.tcl:
1147 * snit.man:
1148 * snitfaq.man:
1149
11502003-07-18 Andreas Kupries <andreask@activestate.com>
1151
1152 * snit.test: Fixed SF tcllib bug #772535. Instead of using a
1153 * snit.tcl: variable reference in the callback a regular command
1154 is called, with the unchanging 'selfns' as argument.
1155 From there things go through the regular dispatching
1156 mechanism after the actual instance name was obtained.
1157 Updated all affected tests.
1158
1159 Updated dmethod-1.5 also, 'string' delivers a
1160 different error message.
1161
11622003-07-16 Andreas Kupries <andreask@activestate.com>
1163
1164 * snit.man: Added references to bug trackers, as part of
1165 * snitfaq.man: caveats. Also added note about bwidget/snit
1166 interaction.
1167
1168 * snit.tcl: Integrated latest (small) change to original code base
1169 (was not released yet). Removes bad trial to fix up error stack.
1170 We are now at version 0.82. Added note to developers explaining
1171 the catch in Snit_tracer.
1172
11732003-07-15 Andreas Kupries <andreask@activestate.com>
1174
1175 * snit.tcl: Imported new module into tcllib.
1176 * snit.test: snit = Snit Is Not IncrTcl
1177 * snit.html: Author: William Duquette
1178 * faq.html: OO package + megawidget framework.
1179 * README.txt:
1180 * license.txt:
1181 * pkgIndex.tcl:
1182 * snit.man:
1183 * snitfaq.man: