Version 3 of itclwidgets

Updated 2008-12-30 15:26:03 by LV

2008-12-26 apw started to see if it is possible to implement Iwidgets style type widgets using only itcl-ng by using the ::itcl::extendedclass class types.

I soon found out that almost all functionality for doing so was there, with only a few functions to add to make that work. I would have added these functions sooner or later nevertheless, as they are of general interest.

2008-12-27 ::itcl::widgets::Entryfield and ::itcl::widget::Labeledwidget are running and passing all the tests of the Iwidgets test suite for ::iwidgets::Entryfield and ::iwidgets::Labeledwidget.

2008-12-28 ::itcl::widgets::Combobox, ::itcl::widgets::scrolledwidget and ::itcl::widgets::scrolledlistbox are running and passing the tests of the Iwidgets test suite for ::iwidgets::Combobox and ::iwidgets::scrolledlistbox (scrolledlistbox is also testing scrolledwidget)

Test results: 388 out of 391 tests are running successfull, the 3 failing ones do not yet show the correct number of options per class (to be fixed).

As Iwidgets has about 37000 LOC and my files have now about 3300 LOC there are nearly 10% done.

itclwidgets has its package directory at the moment in the itcl-ng module of incr Tcl project in directory itcl subdirectory itclWidgets [L1 ]

Why I am doing that is:

  • improving quality of itcl-ng (more code that tests its features)
  • I personally don't like the ::itk::Archetype class with all mega widgets depending on it
  • as itclwidgets is implemented right now, it is possible to replace eventually Tk support by ntkWidget support
  • if needed it should be possible to also use ttk widgets
  • I need some of the mega widgets in my Reporting Tools with Tcl project with some added functionality, which was hard to add in the past because of some private methods in iwidgets::Combobox
  • It's a challenge to see what is possible with itcl-ng

lv so the idea here is to create a widget set that is code compatible with incr widgets but which is not dependent on incr tk? Will there be a megawidget framework that can be used to leverage new widgets and to ensure that the itclwidgets are consistent? One of the ideas that was behind itk was the expectation that having a core set of megawidget classes would result in consistency for the developer and user.