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