Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/GRIDPLUS2?V=301
QUERY_STRINGV=301
CONTENT_TYPE
DOCUMENT_URI/revision/GRIDPLUS2
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.70.130.204
REMOTE_PORT19934
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR18.117.100.234
HTTP_CF_RAY88cbf8537dfb2db6-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_REFERERhttps://wiki.tcl.tk/revision/GRIDPLUS2?V=301
HTTP_CF_CONNECTING_IP18.117.100.234
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit GRIDPLUS2 \[adavis\]\ 2015-11-29:\ GRIDPLUS\ 2.11\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ GRIDPLUS\ http://www.satisoft.com/tcltk/gridplus2/gpdb.html%|%gpdb%|%\ command\ to\ provide\ a\ GRIDPLUS\ interface\ to\ '''TDBC'''\ based\ SQL\ databases.\n\ \ \ *\ New\ GRIDPLUS\ http://www.satisoft.com/tcltk/gridplus2/gpdelete.html%|%gpdelete%|%\ command\ to\ delete\ specified\ row/line/node\ from\ a\ '''tablelist/text/tree'''.\n\ \ \ *\ New\ GRIDPLUS\ http://www.satisoft.com/tcltk/gridplus2/gpupdate.html%|%gpupdate%|%\ command\ to\ update\ a\ specified\ '''tablelist'''\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-maintansort%|%-maintansort%|%\ option\ for\ '''tablelist'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-insertoptions%|%-insertoptions%|%\ true/false\ options\ for\ '''tablelist'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#widget-command%|%widget\ command%|%\ created\ for\ '''tablelist'''\ to\ return\ column\ values\ for\ selected\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-save%|%-save%|%\ option\ for\ '''gpselect'''\ to\ save\ the\ rowid/key\ of\ the\ selected\ tablelist\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-restore%|%-restore%|%\ option\ for\ '''gpselect'''\ to\ restore\ previously\ saved\ tablelist\ row\ selection.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-first%|%-first%|%\ option\ for\ '''gpselect'''\ to\ select\ tablelist\ row\ with\ lowest\ rowid.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-last%|%-last%|%\ option\ for\ '''gpselect'''\ to\ select\ tablelist\ row\ with\ highest\ rowid.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-max%|%-max%|%\ option\ for\ '''gpselect'''\ to\ select\ tablelist\ row\ with\ the\ highest\ match.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-min%|%-min%|%\ option\ for\ '''gpselect'''\ to\ select\ tablelist\ row\ with\ the\ lowest\ match.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-padding%|%-padding%|%\ option\ for\ '''notebook'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-tabpadding%|%-tabpadding%|%\ option\ for\ '''notebook'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-selectmode%|%-selectmode%|%\ option\ for\ '''tree'''.\n\ \ \ *\ New\ '''gpset'''\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-dedent%|%\"-|\"%|%\ dedent\ option\ to\ improve\ source\ code\ readability.\n\ \ \ *\ New\ '''layout'''\ column/row\ weight\ setting\ syntax\ to\ control\ http://www.satisoft.com/tcltk/gridplus2/resize.html%|%resizing%|%\ behaviour.\n\ \ \ *\ New\ '''grid'''\ \"'''ns'''\"\ row\ stretching\ option.\n\ \ \ *\ New\ '''grid'''\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-attach%|%-attach%|%\ \"'''ns'''\"\ stretch\ option.\n\ \ \ *\ New\ widget\ option\ subsitution\ in\ http://www.satisoft.com/tcltk/gridplus2/embedded-grid.html#option-substitution%|%embedded\ widget\ grid%|%.\n\ \ \ *\ New\ Adds\ \"'''buttonWidth'''\"\ and\ \"'''entryWidth'''\"\ http://www.satisoft.com/tcltk/gridplus2/defaults.html%|%option\ database%|%\ options\n\n'''CHANGES:'''\n\n\ \ \ *\ Change\ '''tablelist'''\ to\ automatically\ set\ default\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%column\ names%|%.\n\ \ \ *\ Change\ '''gpselect'''\ syntax\ to\ (optionally)\ reverse\ order\ of\ \"match\"\ and\ \"column\"\ for\ tablelist\ row\ selection.\n\ \ \ *\ Change\ '''gpselect'''\ to\ allow\ use\ of\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%tablelist\ column\ names%|%.\n\ \ \ *\ Change\ '''gpset'''\ so\ that\ '''-sortfirst'''\ is\ disabled\ if\ there\ is\ a\ \"saved\"\ selection.\n\ \ \ *\ Change\ '''gpunset'''\ to\ allow\ use\ of\ patterns.\n\ \ \ *\ Change:\ http://www.satisoft.com/tcltk/gridplus2/example5.html%|%Example\ 5%|%\ and\ http://www.satisoft.com/tcltk/gridplus2/example6.html%|%Example\ 6%|%\ have\ been\ updated\ to\ demonstrate\ using\ the\ http://www.satisoft.com/tcltk/gridplus2/gpdb.html%|%gpdb%|%\ command.\n\ \ \ *\ Change:\ StarKit\ now\ includes\ http://www.famfamfam.com%|%FamFamFam%|%\ icon\ set.\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ with\ '''entry'''\ validation\ when\ using\ right-click\ menu\ in\ another\ entry.\n\ \ \ *\ Fix\ problem\ setting\ '''checkbutton'''\ default\ selected\ when\ -state\ is\ \"disabled\".\n\ \ \ *\ Fix\ problem\ setting\ '''radiobutton'''\ default\ selected\ when\ -state\ is\ \"disabled\".\n\ \ \ *\ Fix\ '''dropdown'''\ to\ use\ \"-state\"\ correctly.\n\ \ \ *\ Fix\ problem\ with\ '''tree'''\ keyboard\ traversal\ selection.\n\ \ \ *\ Fix\ problem\ with\ '''notebook'''\ pane\ naming.\n\ \ \ *\ Fix\ problem\ with\ '''text'''\ find\ dialog\ with\ patterns\ begining\ with\ \"-\".\n\ \ \ *\ Fix\ problem\ clearing\ '''date'''\ when\ \"'''dateIcon'''\"\ specified.\n\n----\n\nGRIDPLUS\ is\ a\ \"Grid\"\ based\ GUI\ builder\ system\ which\ builds\ on,\ simplifies\ and\nextends\ the\ existing\ Tk\ \[grid\]\ manager.\ GRIDPLUS\ layouts\ are\ defined\ as\ a\nhierarchy\ of\ grids.\ Each\ cell\ in\ a\ grid\ consists\ of\ two\ elements.\ These\ \nwill\ usually\ be\ a\ text\ label\ and\ some\ other\ widget\ such\ as\ an\ entry.\ It\ is\nalso\ allowed\ to\ have\ just\ one\ element\ in\ a\ cell,\ or\ a\ cell\ which\ is\ empty.\nGRIDPLUS\ grids\ can\ also\ be\ stretched\ to\ neatly\ fill\ the\ cells\ in\ which\nthey\ are\ positioned.\ While\ the\ GRIDPLUS\ grid\ can\ be\ used\ \"native\",\nGRIDPLUS\ commands/options\ exist\ to\ create\ grids\ of\ Buttons,\ Checkbuttons,\ Date-selectors,\nDropdowns\ (comboboxes),\ Entries,\ Links,\ Menubuttons\ and\ Radiobuttons.\ All\ places\ where\ntext\ can\ be\ displayed\ make\ use\ of\ the\ Tcl\ message\ catalog\ facility.\ \n\nIn\ fact\ GRIDPLUS\ is\ much\ more\ than\ an\ alternative\ to\ the\ grid\ geometry\ manager,\nit\ provides\ most,\ if\ not\ all,\ of\ the\ facilities\ required\ to\ build\ complete\ screens/windows.\nIn\ many\ cases,\ using\ GRIDPLUS\ to\ code\ an\ application\ GUI\ will\ be\ quicker\ than\ using\ a\ \"Visual\"\nscreen\ design\ tool.\ Although\ aimed\ at\ producing\ data\ entry/update/display\ form\ screens\ for\ndatabase\ applications,\ it\ may\ be\ useful\ for\ other\ tasks.\ \n\nGRIDPLUS\ also\ includes\ the\ following\ features:-\ \n\n\ \ \ *\ Scrollable\ text\ widget.\ \n\ \ \ *\ Scrollable\ tablelist.\n\ \ \ *\ Scrollable\ tree\ widget.\n\ \ \ *\ Calendar\ style\ date\ display\ selector.\n\ \ \ *\ Basic\ notebook\ type\ widget.\ \n\ \ \ *\ Simple\ drop-down\ menus.\ \n\ \ \ *\ Simple\ method\ to\ specify\ widget\ traversal\ order\ when\ using\ the\ TAB\ key\ to\ navigate\ the\ screen.\ \n\ \ \ *\ A\ group\ facility\ to\ enable/disable\ groups\ of\ widgets\ and\ menu\ options.\ \n\ \ \ *\ Facility\ to\ include\ non-GRIDPLUS\ widgets\ in\ groups.\ \n\ \ \ *\ Simple\ pattern/procedure\ based\ entry\ validations.\ \n\ \ \ *\ Works\ with\ toplevel\ windows.\ \n\ \ \ *\ ...and\ much,\ much\ more.\n\n'''Here\ Are\ Some\ Screens\ Created\ Using\ GRIDPLUS2:'''\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample2-1.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample3-1.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample4-1.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample4-2.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample6-2.gif\]\n\n----\n\n**\ RELEASE\ HISTORY:\ **\n\n\[adavis\]\ 2013-07-03:\ GRIDPLUS\ 2.10\ has\ been\ released\ and\ is\ available\ from:-\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/spinbox.html%|%spinbox%|%\ command/mode.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/pane.html%|%pane%|%\ command/mode.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/defaults.html#gpoptions%|%gpoptions%|%\ command\ to\ simplify\ setting\ options\ database\ for\ GRIDPLUS.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html#icon%|%dateselector%|%\ option\ to\ display\ icon\ instead\ of\ downarrow.\n\ \ \ *\ New\ popup/balloon\ help\ ('''*Gridplus.helpDisplayTime''')\ display\ duration\ option.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpselect.html#syntax%|%gpselect%|%\ (backward\ compatible)\ syntax.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-menu%|%-menu%|%\ option\ to\ specify\ user\ defined\ right-click\ invoked\ menu\ for\ http://www.satisoft.com/tcltk/gridplus2/text.html#user-defined-menu%|%text%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-seeinsert%|%-seeinsert%|%\ option\ for\ text.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-seeinsert%|%-seeinsert%|%\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-takefocus%|%-takefocus%|%\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-selectpage%|%-selectpage%|%\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-names%|%-names%|%\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%tablelist%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-options%|%\"=name\"%|%\ column\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%tablelist%|%\ to\ set\ column\ names\ -\ '''(Potential\ compatibility\ issue)'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-names%|%-names%|%\ option\ for\ gpset\ to\ set\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#colums-names%|%tablelist%|%t\ column\ names.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-titles%|%-titles%|%\ option\ for\ gpset\ to\ set\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%tablelist%|%\ column\ titles.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-index%|%-index%|%\ option\ for\ gpset\ to\ set/select\ a\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-index%|%-index%|%\ option\ for\ gpselect\ to\ set/select\ a\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpset.html#gpmap%|%gpmap%|%\ option\ to\ map\ to\ dict.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/subst.html#command-substitution%|%Command\ Substitution%|%\ facility\ for\ '''Grid/Layout'''\ and\ '''Notebook'''.\n\ \ \ *\ New\ interface\ to\ create\ http://www.satisoft.com/tcltk/gridplus2/user-defined-widgets.html%|%User\ Defined\ Grid\ Widgets%|%\ for\ http://www.satisoft.com/tcltk/gridplus2/widget.html%|%widget%|%\ grid.\n\n'''CHANGES:'''\n\n\ \ \ *\ Change\ popup/balloon\ help\ to\ display\ at\ pointer\ position\ to\ improve\ look/feel\ for\ larger\ widgets.\n\ \ \ *\ Change\ to\ allow\ '''\"@\"'''\ embedded\ widgets\ to\ work\ in\ embedded\ grids.\n\ \ \ *\ Change:\ Support\ for\ '''\"&w\"'''\ embedded\ widget\ '''grid'''\ syntax\ removed\ -\ '''(Potential\ compatibility\ issue)'''.\n\ \ \ *\ Change:\ http://www.satisoft.com/tcltk/gridplus2/example7.html%|%Example7%|%\ has\ been\ updated\ to\ demonstrate\ using\ the\ (PNG)\ icon\ image\ files\ facility\ in\ http://www.satisoft.com/tcltk/icons/%|%ICONS%|%\ version\ 2.\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ setting\ '''tablelist'''\ sort\ column\ when\ first\ column\ is\ '''integer/real'''.\n\ \ \ *\ Fix\ problem\ with\ '''tablelist'''\ row\ selection.\n\ \ \ *\ Fix\ problem\ with\ clipboard\ operations\ when\ widget\ with\ focus\ not\ of\ suitable\ type.\n\ \ \ *\ Fix\ problem\ with\ '''gpfind'''\ for\ patterns\ begining\ with\ '''\"-\"'''.\n\ \ \ *\ Fix\ problem\ with\ menu\ separator\ problem\ with\ cascade\ style\ menus.\n\n----\n\n\n\[adavis\]\ 2012-07-12:\ GRIDPLUS\ 2.9\ has\ been\ released\ and\ is\ available\ from:-\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ with\ value\ of\ '''tree'''\ node\ containing\ spaces.\ \n\ \ \ *\ Fix\ problem\ with\ '''container'''\ frame\ sizing.\ \n\ \ \ *\ Fix\ problem\ with\ some\ validations\ in\ \"contained\"\ toplevels.\ \n\ \ \ *\ Fix\ problem\ with\ '''clear'''\ to\ ensure\ validation\ pop-up\ messages\ are\ withdrawn.\n\n----\n\n\[adavis\]\ 2012-04-04:\ GRIDPLUS\ 2.8\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ ''http://www.satisoft.com/tcltk/gridplus2/manpage.html#widget-default%|%=default%|%''\ \ option\ to\ specify\ default\ dropdown\ option.\ \n\ \ \ *\ New\ ''http://www.satisoft.com/tcltk/gridplus2/manpage.html#widget-action%|%~command%|%''\ link\ option\ to\ specify\ command\ to\ invoke\ when\ link\ is\ selected.\ \n\n'''CHANGES'''\n\n\ \ \ *\ '''checkbutton'''\ \ modified\ so\ that\ \"+\"\ option\ always\ results\ in\ a\ checked\ button.\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ '''gpset'''\ to\ ensure\ that\ window\ is\ updated.\ \n\ \ \ *\ Fix\ problem\ clearing\ '''radiobutton'''\ group\ values.\ \n\ \ \ *\ Fix\ '''link'''\ indent\ \"-\"\ option\ problem.\ \n\ \ \ *\ Fix\ gap\ in\ theme\ style\ border\ when\ text\ is\ null\ (Due\ to\ '''::ttk::labelframe'''\ bug?)\ \n\n----\n\n\[adavis\]\ 2012-02-27:\ GRIDPLUS\ 2.7\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-locale%|%-locale%|%\ option\ for\ set\ to\ explicitly\ set\ locale.\ This\ can\ be\ used\ to\ ensure\ that\ correct\ locale\ specific\ month/day\ text\ is\ used\ for\ '''calendar/dateselector'''\ when\ the\ month/day\ names\ returned\ by\ '''clock'''\ are\ not\ in\ accordance\ with\ the\ default\ locale.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpdefault.html%|%gpdefault%|%\ command.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpdate.html%|%gpdate%|%\ command.\n\ \ \ *\ New\ ''http://www.satisoft.com/tcltk/gridplus2/manpage.html#widget-default%|%=default%|%''\ widget\ option\ to\ specify\ default\ http://www.satisoft.com/tcltk/gridplus2/entry.html%|%entry%|%\ and\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html#setting-default%|%date%|%\ values.\n\ \ \ *\ New\ '''integer/real'''\ sort\ options\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-options%|%tablelist%|%\n\ \ \ *\ New\ option\ to\ set\ a\ fixed\ http://www.satisoft.com/tcltk/gridplus2/grid.html#widget-text%|%label\ width%|%\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/optionset.html%|%*Gridplus.optionDefaultStyle%|%\ option.\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ posting\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html%|%dateselector%|%\ in\ a\ topmost\ http://www.satisoft.com/tcltk/gridplus2/window.html%|%window%|%.\n\ \ \ *\ Fix\ problem\ clearing\ http://www.satisoft.com/tcltk/gridplus2/radiobutton.html%|%radiobutton%|%\ group\ values.\n\n\[adavis\]\ (29th\ February\ 2012):\ I\ have\ corrected\ an\ error\ in\ the\ documentation\ example\ for\ setting\ default\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html#setting-default%|%date%|%\ values.\ Both\ the\ website\ and\ the\ documentation\ download\ have\ been\ updated.\n\n----\n\n\[adavis\]\ 2010-10-25:\ GRIDPLUS\ 2.6\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-action%|%single/space%|%\ action\ for\ http://www.satisoft.com/tcltk/gridplus2/tree.html#action%|%tree%|%\ command\ mode.\ \n\ \ \ *\ New\ ISO\ date\ http://www.satisoft.com/tcltk/gridplus2/validations.html#date%|%validation%|%.\ \n\ \n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ with\ http://www.satisoft.com/tcltk/gridplus2/container.html%|%containers%|%\ on\ Unix.\n\n----\n\n\[adavis\]\ 2009-11-11:\ GRIDPLUS\ 2.5\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/calendar.html%|%calendar%|%\ command\ mode.\ \n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpnav.html%|%gpnav%|%\ command.\ \n\ \ \ *\ New\ dropdown\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html%|%date\ selector%|%\ grid\ widget.\ \n\ \ \ *\ Extra\ pre-defined\ validations.\ \n\ \ \ *\ New\ \"trim\"\ option\ for\ validations.\ \n\ \ \ *\ New\ button\ \"!+\"\ widget\ option.\ \n\ \ \ *\ New\ \"-overrideredirect\"\ option\ for\ GRIDPLUS\ window.\ \n\ \ \ *\ New\ pre-defined\ optionset.\ \n\n\n'''CHANGES:'''\n\n\ \ \ *\ '''gpset'''\ and\ '''gpselect'''\ modified\ to\ set\ values\ for\ \"calendar\"\ and\ \"date\"\ selector.\ \n\ \ \ *\ Pressing\ the\ Enter\ key\ while\ a\ button\ is\ highlighted\ will\ now\ invoke\ the\ button\ command.\ \n\ \ \ *\ New\ behaviour\ for\ validations\ when\ loosing\ focus\ to\ toplevel\ window.\n\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ various\ validation\ problems\ when\ validated\ field\ looses\ focus\ to\ a\ toplevel\ window.\n\ \ \ *\ Fix\ problem\ with\ popup\ validation\ error\ messages\ in\ notebooks.\ \n\ \ \ *\ Fix\ \"num\"\ validation\ pattern.\ \n\ \ \ *\ Fixes\ \"expected\ integer\"\ font\ problem\ due\ to\ Tcl/Tk\ bug.\ \n\n'''EXAMPLES:'''\n\nHere\ are\ examples\ of\ the\ the\ http://www.satisoft.com/tcltk/gridplus2/calendar.html%|%calendar%|%\ and\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html%|%date\ selector%|%\ widgets:-\n\n\[http://www.satisoft.com/tcltk/gridplus2/calendar-example2.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/dateselector-example3.gif\]\n\n----\n\n\[adavis\]\ 2009-09-06:\ GRIDPLUS\ 2.4\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ much\ simpler/clearer\ syntax\ for\ http://www.satisoft.com/tcltk/gridplus2/embedded-grid.html%|%Embedded\ Widget\ Grids%|%.\ \n\ \ \ *\ New\ \"-spacestretch\"\ option\ for\ widget\ and\ grid\ to\ specify\ which\ links\ between\ columns\ can\ stretch.\ \n\ \ \ *\ New\ \"-stretch\"\ option\ for\ widget\ and\ grid\ to\ specify\ which\ column\ contents\ can\ stretch.\ \n\ \ \ *\ New\ \"-basename\"\ option\ for\ grid\ to\ specify\ the\ basename\ for\ data\ items\ and\ commands.\ \n\ \ \ *\ New\ \"#style\"\ widget\ option.\ \n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/define.html%|%define%|%\ command\ mode.\ \n\ \ \ *\ New\ radiobutton\ groups\ facility.\ \n\ \ \ *\ New\ window\ http://www.satisoft.com/tcltk/gridplus2/resize.html%|%resizing%|%\ facility.\ \n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/pack.html%|%pack%|%\ command\ mode\ to\ support\ resizing.\ \n\ \ \ *\ New\ \"-command\"\ option\ for\ text\ to\ specify\ a\ command\ to\ be\ invoked\ when\ the\ content\ of\ the\ text\ widget\ is\ modified.\ \n\n\n'''CHANGES:'''\n\n\ \ \ *\ '''gpselect'''\ to\ \"see\"\ the\ selected\ row\ for\ tablelist.\ \n\ \ \ *\ It\ is\ no\ longer\ necessary\ to\ name\ the\ widget\ ID\ for\ radiobuttons.\ \n\ \ \ *\ All\ examples\ have\ been\ updated\ to\ use\ new\ syntax/facilities/recommendations.\ \n\ \ \ *\ Examples\ 2,\ http://www.satisoft.com/tcltk/gridplus2/example4.html%|%4%|%,\ 5\ and\ 6\ have\ been\ updated\ to\ demonstrate\ embedded\ widget\ grids.\ \n\ \ \ *\ http://www.satisoft.com/tcltk/gridplus2/example7.html%|%Example\ 7%|%\ has\ been\ updated\ to\ demonstrate\ resizing.\ \n\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ whereby\ popup\ validation\ error\ messages\ were\ not\ cleared\ properly\ for\ toplevel\ windows.\ \n\ \ \ *\ Fix\ problem\ with\ popup\ validation\ error\ messages\ in\ notebooks.\ \n\ \ \ *\ Fix\ date\ validations.\ \n\ \ \ *\ Fix\ problem\ with\ entry\ popup\ edit\ menu\ in\ contained\ windows.\ \n\ \ \ *\ Fix\ problem\ creating\ default\ label\ widgets\ for\ embedded\ grids.\ \n\ \ \ *\ Fix\ problem\ setting\ dropdown\ using\ '''gpmap'''.\ \n\ \ \ *\ Fix\ problem\ in\ widget\ displaying\ a\ label\ only\ column\ when\ default\ widget\ is\ button/link/menubutton.\ \n\n\n----\n\n\[adavis\]\ 2008-05-27:\ GRIDPLUS\ 2.3\ has\ been\ released.\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ \"-columnformat\"\ option\ for\ widget\ and\ grid\ to\ specify\ the\ width\ of\ the\ left\ and\ right\ elements\ of\ each\ column.\ This\ makes\ it\ possible\ to\ line\ up\ labels\ and\ widgets\ in\ separately\ created\ grids.\ \n\ \ \ *\ New\ \"-validatepopup\"\ option\ to\ enable\ \"pop-up\"\ validation\ error\ messages.\ \n\ \ \ *\ New\ \"-validateauto\"\ option\ for\ widget\ to\ determine\ whether\ entry\ validations\ are\ to\ be\ automatic\ or\ forced.\n\ \ \ *\ New\ \"-validate\"\ option\ for\ tree\ and\ tablelist\ to\ invoke\ entry\ validations\ when\ a\ tree/tablelist\ node/row\ is\ selected.\ \n\ \ \ *\ New\ facility\ to\ specify\ entry\ validation\ error\ messages\ for\ individual\ widgets.\ \n\ \ \ *\ New\ \"`!@`\"\ widget\ option\ to\ specify\ that\ an\ entry\ may\ be\ null\ when\ a\ validation\ is\ specified.\ For\ example:\ \"`!@int`\"\ means\ entry\ may\ be\ null\ or\ integer.\n\ \ \ *\ New\ \"`?!`\"\ widget\ option\ to\ set\ pop-up/balloon\ text\ to\ be\ same\ as\ validation\ error\ message.\ \n\ \ \ *\ The\ \"-entrycommand\"\ option\ can\ be\ used\ to\ specify\ an\ event\ to\ be\ generated.\ This\ can\ be\ used\ to\ allow\ the\ enter\ key\ to\ \"Tab\"\ to\ the\ next\ field.\ \n\ \ \ *\ The\ \"-entrycommand\"\ can\ now\ be\ set\ using\ the\ option\ database.\ \n\ \ \ *\ New\ \"-fixed\"\ option\ for\ widget\ grid\ to\ specify\ maximum\ number\ of\ characters\ allowed\ in\ an\ entry\ field.\ \n\ \ \ *\ New\ widget\ option\ for\ entry\ widgets\ to\ allow\ both\ display\ size\ and\ maximum\ number\ of\ characters\ allowed\ to\ be\ specified\ for\ an\ individual\ widget.\ \n\ \ \ *\ New\ \"-topmost\"\ option\ for\ window\ to\ determine\ whether\ a\ toplevel\ \ window\ will\ be\ the\ topmost\ window.\ \n\ \ \ *\ New\ facility\ to\ allow\ accelerator\ keys\ for\ menus.\ \n\ \ \ *\ New\ \"-labelanchor\"\ option\ for\ grid\ and\ layout\ to\ determine\ the\ position\ of\ the\ frame\ label\ text.\ \n\ \ \ *\ New\ \"Find\"\ option\ added\ to\ text\ right-click\ pop-up\ menu.\ \n\ \ \ *\ New\ '''gpfind/gpfind_dialog'''\ commands\ to\ perform\ find\ operations\ on\ text\ widgets.\ \n\ \ \ *\ New\ '''gpcut/gpcopy/gppaste/gpclear'''\ commands\ to\ perform\ cut/copy/paste/clear\ operations\ on\ text\ and\ entry\ widgets.\ \n\ \ \ *\ New\ Example\ \"Text\ Editor\"\ application.\ See:\ \[http://www.satisoft.com/tcltk/gridplus2/example7.html\]\n\n\n'''CHANGES:'''\n\n\ \ \ *\ When\ autogroup\ facility\ is\ in\ use\ the\ initial\ widget\ state\ is\ set\ to\ the\ opposite\ of\ the\ state\ specified\ for\ when\ the\ widget\ is\ modified.\ For\ example:\ If\ \"`>mygroup`\"\ widget\ option\ is\ specified\ the\ widget\ will\ be\ created\ as\ \"disabled\".\ \n\ \ \ *\ The\ menu\ seprator\ can\ now\ be\ specified\ using\ \"=\"\ to\ be\ consistent\ with\ grid/layout.\ The\ old\ (\"-\")\ method\ still\ works.\ \n\ \ \ *\ The\ menu\ command\ can\ now\ be\ specified\ using\ \"~\"\ to\ be\ consistent\ with\ widget.\ The\ old\ (\".\")\ method\ still\ works.\ \n\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Date\ validations\ now\ work\ for\ dates\ prior\ to\ 01/01/1970.\ \n\ \ \ *\ Text\ right-click\ pop-up\ menu\ only\ shows\ \"Copy\"\ when\ created\ as\ \"disabled\".\ \n\ \ \ *\ \"\{expand\}\"\ changed\ to\ \"\{*\}\"\ for\ Tcl8.5b1\ and\ later.\ \n\ \ \ *\ Fix\ problem\ with\ validations\ in\ contained\ windows.\ \n\ \ \ *\ Notebook\ tab\ text\ now\ uses\ message\ catalog.\ \n\ \ \ *\ The\ '''text'''\ default\ font\ is\ set\ to\ \"TkTextFont\"\ to\ deal\ with\ font\ change\ in\ recent\ (production)\ 8.5\ releases.\ \n\n\n----\n\n\[adavis\]\ 2007-07-26:\ \ GRIDPLUS\ 2.2\ has\ been\ released.\n\n'''ENHANCEMENTS:'''\n\ \n\ \ \ *\ New\ \"-icons\"\ option\ for\ '''tree'''\ to\ determine\ whether\ or\ not\ icons\ are\ displayed.\n\n'''CHANGES:'''\n\n\ \ \ *\ The\ '''gpmap'''\ modified\ to\ map\ to\ a\ dropdown\ value\ (which\ makes\ much\ more\ sense!!).\n\ \ \ *\ The\ '''window'''\ command\ mode\ has\ been\ modified\ so\ that\ (for\ a\ contained\ window)\ the\ \"windowcommand\"\ is\ invoked\ when\ a\ window\ of\ the\ same\ name\ already\ exists.\n\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fixed\ '''container'''\ problem\ caused\ by\ latest\ Tcl/Tk\ release.\n\ \ \ *\ Fixed\ '''layout'''\ edge\ padding\ problem\ for\ some\ layouts\ using\ spanned\ columns.\n\n----\n\n\[adavis\]\ 2007-02-28:\ GRIDPLUS\ 2.1\ has\ been\ released.\n\n'''ENHANCEMENTS:'''\n\ \n\ \ \ *\ New\ GRIDPLUS\ '''container'''\ command\ mode\ to\ create\ a\ frame\ which\ can\ contain\ toplevel\ windows.\ \n\ \ \ *\ New\ '''gpselect'''\ command\ to\ select\ a\ tablelist\ row\ or\ tree\ node.\ \n\ \ \ *\ New\ '''gpinsert'''\ command\ to\ insert\ a\ tablelist\ row\ or\ text\ line.\ \n\ \ \ *\ The\ '''gpmap'''\ command\ can\ now\ also\ map\ array\ elements\ to\ GRIDPLUS\ widget\ values.\n\ \ \ *\ The\ window\ command\ mode\ now\ has\ an\ \"-in\"\ option\ to\ put\ the\ window\ into\ a\ container.\n\ \ \ *\ Variable\ Substitution\ now\ also\ works\ for\ the\ notebook\ layout.\ \n\ \ \ *\ The\ text\ command\ mode\ now\ has\ an\ \"-font\"\ option\ to\ set\ the\ display\ font\ when\ not\ using\ tags.\n\n'''CHANGES:'''\n\n\ \ \ *\ The\ -title\ option\ for\ the\ GRIDPLUS\ layouts\ with\ a\ name\ ending\ with\ \".main\"\ no\ longer\ sets\ the\ window\ title.\ \n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ The\ Notebook\ now\ works\ in\ toplevel\ windows.\ \n\ \ \ *\ The\ tablelist\ \"-columnsort\"\ now\ works.\ \n\n----\n\n\[adavis\]\ 2006-10-10:\ GRIDPLUS\ 2.0\ has\ been\ released.\n\nGRIDPLUS2\ is\ a\ \[Tile\]\ based\ version\ of\ \[GRIDPLUS\].\ Whereas\ GRIDPLUS\ Version\ 1\nhas\ features\ to\ control\ widget\ style\ as\ well\ as\ window\ layout\ -\ GRIDPLUS2\nassumes\ that\ the\ Tile\ style\ engine\ facilities\ will\ be\ used\ to\ control\nwidget\ styles.\ GRIDPLUS2\ instead\ provides\ '''significantly\ enhanced'''\ screen\nlayout/design\ functionality\ which\ can\ further\ reduce\ the\ coding\ required\ to\ncreate\ the\ desired\ window/widget\ layout.\n\nOne\ of\ the\ main\ enhancements\ is\ the\ new\ GRIDPLUS2\ Widget\ Grid\n\[http://www.satisoft.com/tcltk/gridplus2/widget.html\].\ With\ GRIDPLUS1\nit\ was\ only\ possible\ to\ create\ one\ type\ of\ widget\ in\ a\ particular\ Grid\n(Buttons,\ checkbuttons,\ entries\ etc.).\ In\ order\ to\ mix\ widgets\ in\ a\ Grid\nit\ was\ necessary\ to\ create\ additional\ Grids\ for\ the\ other\ widget\ types\ and\nthen\ \"embed\"\ them\ into\ a\ parent\ Grid.\ The\ new\ widget\ Grid\ allows\ all\ of\ the\nGRIDPLUS\ widget\ types\ to\ be\ mixed\ in\ the\ same\ Grid.\ \n\nThere\ are\ many\ more\ changes\ and\ enhancements\ -\ See\ the\ GRIDPLUS2\ Readme\n\[http://www.satisoft.com/tcltk/gridplus2/readme-20.html\]\ for\ further\ details.\n\n\n\n----\n\n**\ COMMENTS:\ **\n\n\[AET\]\ 2007-03-01:\ As\ usual,\ Adrian,\ A\ top-notch\ offering.\ \ A\ well\ thought\ out\ utility,\ and\ documentation\ that\ is\ exemplory.\ \ Thanks\ very\ much.\ \ I\ am\ still\ struggling\ to\ put\ together\ a\ database\ using\ GRIDPLUS,\ but\ will\ be\ porting\ it\ to\ GRIDPLUS\ 2\ as\ soon\ as\ I\ can.\ \ \n\n----\n\n\[Ro\]\ 2007-03-03:\ \ Fantastic\ project!\ \ Currently\ resizable\ toplevels\ are\ not\ supported,\ but\ you\ can\ do\ it\ with\ \"wm\ resizable\ .mytoplevel\ 1\ 1\"\ if\ you\ really\ need\ to.\ \ I\ don't\ think\ it's\ necessary\ for\ these\ kinds\ of\ apps\ (database\ +\ well\ behaved\ windows\ apps)\ but\ it's\ interesting\ to\ know.\ \ Thanks\ Adrian\ for\ this\ superb\ package.\n\n----\n\n\[WHD\]:\ The\ GRIDPLUS2\ home\ page\ says\ that\ it's\ only\ been\ tested\ on\ Windows\ XP.\ \ Has\ anyone\ used\ it\ successfully\ on\ Linux?\n\nEffe:\ I\ didn't\ check\ each\ and\ every\ detail,\ but\ GRIDPLUS\ 2.4\ works\ well\ on\ Linux\ (tested\ with\ ActiveTcl\ 8.6\ on\ fluxflux\ Linux).\n\n----\n\n\[MHo\]\ 2009-11-10:\n\ \ \ *\ The\ new\ version,\ 2.5,\ should\ be\ noted\ and\ documented\ here...\n\ \ \ *\ Can't\ get\ the\ tree\ to\ work:\ ERROR:\ Invalid\ file\ (C:/Programme/Tcl/lib/tcl8.5/tkIcons)\n\n\[adavis\]\ (11th\ November\ 2009):\ I'm\ assuming\ that\ \"C:/Programme/Tcl/lib/tcl8.5\"\ is\ your\ Tcl\ library\ path\ (\[info\ library\])\ -\ If\ this\ is\ the\ case,\ have\ you\ installed/copied\ the\ \"TkIcons\"\ file\ to\ this\ location?\ If\ this\ isn't\ the\ problem\ can\ you\ give\ me\ an\ example?\ \[MHo\]\ No\ I\ forgot\ this...\n\n\[MHo\]\ 2009-11-14:\n\nThis\ works:\n======\ngpset\ .mytree2\ \{\n\ \ \ \ /a\n\ \ \ \ /a/b\n\ \ \ \ /a/b/c\n\}\n======\nThis\ one\ does\ not\ work:\n======\ngpset\ .mytree2\ \{\n\ \ \ \ /a/b\n\ \ \ \ /a/b/c\n\}\n======\n\nDoes\ this\ mean\ that\ trees\ always\ have\ to\ begin\ with\ the\ root\ element?\n\n\[adavis\]\ 2009-11-16:\ More\ generally,\ it\ is\ required\ that\ the\ parent\ for\ a\ node\ be\ created\ explicitly,\ unless\ the\ parent\ is\ the\ root.\n\n----\n\n\[MHo\]\ 2009-12-05:\ More\ questions:\n\n\ \ \ 1.\ In\ the\ tree\ widget,\ how\ do\ I\ get\ the\ horizontal\ scrollbar\ to\ work?\ `'''-scroll\ x'''`\ or\ `'''-scroll\ xy'''`\ don't\ work,\ only\ `'''-scroll\ y'''`\ works.\n\ \ \ 1.\ If\ I\ specify\ `'''-action\ single'''`\ and\ `'''-command\ test'''`\ in\ a\ gridplus\ tree\ statement,\ how\ do\ I\ know\ which\ item\ gets\ clicked?\ It\ seems\ that\ the\ callback\ proc\ didn't\ get\ any\ arguments.\ Does\ some\ kind\ of\ ''%var\ substitution''\ take\ place\ like\ with\ ''bind''?\n\ \ \ 1.\ The\ documentation\ states:\ ''...Specifies\ text\ to\ be\ displayed\ for\ node\ ('''Must\ not\ begin\ with'''\ \"+\",\ \":\"\ -or-\ '''\"/\"''')...''.\ But\ the\ various\ examples\ for\ `'''gpset'''`\ show\ that\ inserting\ entries\ like\ `'''/a/b/c'''`\ is\ perfectly\ ok...?\n\n\[adavis\]\ 2009-12-07:\n\ \ \ 1.\ When\ I\ was\ working\ on\ GRIDPLUS\ 2.5\ the\ '''ttk\ treeview'''\ didn't\ support\ \"X\"\ direction\ scrolling.\ I\ tried\ it\ recently\ with\ Tcl\ 8.5.8\ and\ it\ still\ didn't\ seem\ to\ work.\n\ \ \ 1.\ The\ value\ of\ the\ array\ item\ for\ the\ '''tree'''\ will\ be\ set\ to\ the\ selected\ node.\ For\ example:\ If\ you\ created\ a\ '''tree'''\ called\ `'''.mytree`'''\ then\ the\ name\ of\ the\ node\ can\ be\ accessed\ as\ `'''\$(.mytree)`'''\ -\ See\ \"''Selecting\ a\ Tree\ Node''\"\ in\ http://www.satisoft.com/tcltk/gridplus2/tree.html\n\ \ \ 1.\ This\ applies\ when\ specifying\ alternative\ display\ text\ as\ a\ node\ option.\ By\ default,\ the\ last\ part\ of\ the\ nodename\ (after\ the\ last\ \"/\")\ is\ the\ text\ displayed\ for\ the\ node\ in\ the\ '''tree'''\ display.\ It\ is\ possible\ to\ specify\ alternative\ text\ -\ See\ \"''Setting\ Specific\ Text\ For\ a\ Node''\"\ in\ http://www.satisoft.com/tcltk/gridplus2/tree.html#tree-gpset\n\n\[MHo\]\ 2009-12-07:\n\n\ \ \ *\ Expanding\ and\ collapsing\ a\ node\ with\ the\ (space)-key\ does\ not\ trigger\ the\ callback,\ while\ klicking\ on\ the\ symbol\ does...\n\n\[adavis\]\ 2009-12-08:\ Currently\ that\ is\ true.\n\nHowever\ -\ Adding\ a...\n\n\ \ single/space\ \{\n\ \ \ \ \ \ bind\ \$options(name).tree\ <Button-1>\ \"after\ 1\ \[list\ ::gridplus::gpTreeSelect\ \$options(name)\ .\$window\ \$options(-validate)\ \[list\ \$command\]\]\"\n\ \ \ \ \ \ bind\ \$options(name).tree\ <space>\ \ \ \ \"after\ 1\ \[list\ ::gridplus::gpTreeSelect\ \$options(name)\ .\$window\ \$options(-validate)\ \[list\ \$command\]\]\"\n\ \ \}\n\n...case\ to\ the\ \"`\$options(-action)`\"\ switch\ in\ '''::gridplus::gpTree'''\ will\ add\ an\ option\ (`'''-action\ single/space`''')\ to\ implement\ this\ functionality.\ I\ will\ include\ this\ modification\ in\ the\ next\ GRIDPLUS2\ release.\n\n----\n\n\[nb\]\ 2010-09-05:\n\nReally\ good\ stuff\ Adrian\nI've\ been\ putting\ off\ doing\ a\ complex\ db/form\ app\ for\ awhile\ now\ due\ to\ \"packing\ hell\"\ that\ comes\ along\ with\ these\ forms.I'm\ blowing\ this\ app\ off\ like\ nothing\ with\ your\ package,\ bravo...\nIf\ I'm\ not\ careful,\ I'm\ risking\ finishing\ it\ too\ early\ \;-)\n\nOTOH,\ Maybe\ I'm\ missing\ something\ obvious,\ I\ went\ through\ the\ docs\ but\ did\ not\ see\ anywhere\ a\ way\ to\ set\ the\ state\ of\ individual\ widgets\ (as\ opposed\ to\ the\ whole\ grid),\ e.g.\ set\ an\ entry\ to\ disabled.\ \n\nregards\n\n\[adavis\]\ 2010-02-05:\ In\ GRIDPLUS2\ there\ are\ a\ couple\ of\ ways\ to\ achieve\ this\ -\ depending\ on\ what\ you\ are\ trying\ to\ do.\n\nIf\ you\ simply\ want\ to\ set\ the\ state\ of\ an\ individual\ widget\ when\ it\ is\ created\ you\ can\ use\ the\ \"<\"\ (create\ as\ disabled)\ or\ \">\"\ (create\ as\ enabled)\ widget\ option.\ The\ GRIDPLUS2\ documentation\ \ http://www.satisoft.com/tcltk/gridplus2/example1.html%|%Example\ 1%|%\ uses\ this\ for\ the\ \"ID\"\ field.\n\nYou\ can\ also\ use\ the\ http://www.satisoft.com/tcltk/gridplus2/groups.html%|%Groups%|%\ facility\ to\ enable/disable\ named\ groups\ of\ widgets.\n\n\[nb\]\ 2010-05-08:\n\nI've\ also\ found\ the\ following\ very\ helpful\ which\ is\ referenced\ in\ the\ docs\n\nhttp://www.satisoft.com/tcltk/gridplus2/reference.html#modes\n\n\"It\ maybe\ neccessary\ to\ reference\ Tablelist,\ Text\ or\ Tree\ widgets\ directly\ in\ \norder\ to\ get\ information\ about\ the\ widget\ -or-\ to\ set\ an\ attribute\ not\ available\ \nthrough\ GRIDPLUS.\"\n\nGRIDPLUS\ uses\ a\ simple\ widget\ naming\ scheme\ which\ makes\ this\ easy.\n\nExamples\ assuming\ a\ GRIDPLUS\ widget\ called\ \".mywidget\"\ of\ each\ of\ the\ \nabove\ types:-\n\nTablelist:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .mywidget.tablelist\n\nText:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .mywidget.text\n\nTree:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .mywidget.tree\n\nFor\ example:\ To\ get\ the\ number\ of\ rows\ in\ a\ tablelist:-\n\n.mywidget.tablelist\ size\ \n\n\nFigure\ I'd\ save\ someone\ sometime\ \;-)\n\n----\n\n\[milarepa\]\ 2010-10-17\ 07:54:41:\n\nHi,\ I\ am\ testing\ gridplus\ 2.5\ on\ Linux.\ I\ am\ trying\ to\ run\ the\ \"Container\ Example\ 1\"\ http://www.satisoft.com/tcltk/gridplus2/container.html%|%GRIDPLUS2\ Container%|%\ without\ success.\ I\ tested\ it\ with\ both\ tcl/tk\ 8.5.9\ and\ 8.6b1\ versions\ and\ both\ Ubuntu\ 10.10\ and\ Archlinux\ and\ is\ not\ working\ properly.\ It\ does\ only\ works\ on\ Windows\ XP.\ Please\ any\ help\ or\ thoughts.\ This\ is\ the\ error\ log:\n\n======none\ninvalid\ command\ name\ \".win2\"\ninvalid\ command\ name\ \".win2\"\n\ \ \ \ while\ executing\n\"\$options(name)\ configure\ -menu\ \{\}\"\n\ \ \ \ (procedure\ \"gpClear\"\ line\ 24)\n\ \ \ \ invoked\ from\ within\n\"gpClear\"\n\ \ \ \ (procedure\ \"::gridplus::gridplus\"\ line\ 116)\n\ \ \ \ invoked\ from\ within\n\"::gridplus::gridplus\ clear\ .win2\"\n\ \ \ \ (\"eval\"\ body\ line\ 1)\n\ \ \ \ invoked\ from\ within\n\"eval\ \$gpInfo(\$options(-in):wcmd)\"\n\ \ \ \ (procedure\ \"gpWindow\"\ line\ 29)\n\ \ \ \ invoked\ from\ within\n\"gpWindow\"\n\ \ \ \ (procedure\ \"gridplus\"\ line\ 138)\n\ \ \ \ invoked\ from\ within\n\"gridplus\ window\ .win1\ -in\ .mycont\"\n\ \ \ \ (procedure\ \"display_win1\"\ line\ 3)\n\ \ \ \ invoked\ from\ within\n\"display_win1\"\n\ \ \ \ invoked\ from\ within\n\".select,win1\ invoke\ \"\n\ \ \ \ invoked\ from\ within\n\".select,win1\ instate\ \{pressed\ !disabled\}\ \{\ .select,win1\ state\ !pressed\;\ .select,win1\ invoke\ \}\ \"\n\ \ \ \ (command\ bound\ to\ event)\n======\n\nTHANK\ YOU\n\n\[adavis\]\ 2010-10-19:\ I\ now\ have\ a\ fix\ for\ this\ (still\ testing).\ I\ intend\ to\ upload\ to\ the\ website\ within\ the\ next\ week.\ If\ you\ need\ it\ urgently\ please\ email\ me.\ \n\n\[milarepa\]\ 2010-10-19\ 18:11:47:\n\nThank\ you\ Adrian\ for\ your\ quick\ reply\ and\ for\ trying\ to\ solve\ the\ issue.\ I\ can\ wait\ for\ the\ fix.\ And\ thank\ you\ for\ your\ work\ on\ gridplus,\ I\ love\ this\ package,\ it\ is\ so\ easy\ to\ build\ applications\ and\ I\ always\ find\ a\ way\ to\ arrange\ the\ widgets\ the\ way\ I\ want\ it.\n\n\[adavis\]\ 2010-10-25:\ This\ problem\ is\ fixed\ in\ GRIDPLUS\ 2.6.\n\n----\n\n\[nb\]\ 2010-11-29:\ Hi\ all,\n\nWas\ wondering\ if\ there's\ any\ preferred\ way\ to\ read/write\ to\ an\ sqlite\ db\ from\ a\ gridplus\ application\ interface,\ outside\ of\ looping\ over\ the\ \"\"\ array\ where\ the\ widget\ values\ are\ stored.\n\nCurrently\ trying\ to\ use\ nstcl\ w/\ sqlite\ backend?\n\nAny\ hints\ would\ be\ welcome\n\nregards\n\n\n\[milarepa\]\ 2010-11-29\ 10:30:05:\n\nCurrently\ I\ am\ developing\ an\ application\ with\ gridplus\ and\ sqlite\ as\ backend.\ I\ don't\ use\ any\ database\ layer,\ just\ the\ standard\ sqlite3\ library\ for\ tcl.\ \n\nFor\ example,\ let\ say\ you\ are\ developing\ an\ application\ for\ a\ school\ and\ you\ want\ to\ load\ a\ dropdown\ widget\ with\ a\ list\ of\ lessons:\n\n======\ngpset\ .form,dropdown_lesson\ \ \[db\ eval\ \"SELECT\ lesson_name\ FROM\ lesson\"\]\n======\n\nTo\ save\ it:\n\n======\ndb\ eval\ \"INSERT\ INTO\ new_lesson\ (lesson_name)\ VALUES\ ('\[.form,dropdown_lesson\ get\]'\"\n======\n\nI\ do\ not\ quite\ understand\ what\ you\ mean\ when\ you\ said\ \"outside\ of\ looping\ over\ the\ array\".\ If\ you\ could\ be\ more\ specific.\n\n\[adavis\]\ 2010-11-29:\ You\ can\ also\ use\ '''gpmap'''\ to\ set\ multiple\ interface\ items\ with\ a\ single\ command\ -\ See\ \"Mapping\ of\ a\ SQLite\ result\"\ http://www.satisoft.com/tcltk/gridplus2/gpset.html#gpmap%|%here%|%.\ All\ GRIDPLUS\ interface\ items\ have\ their\ value\ in\ the\ null\ named\ array.\ If\ you\ have\ an\ item\ called\ \"`.form,dropdown_lesson`\"\ its\ value\ can\ be\ referenced\ as:\ `'''\$(.form,dropdown_lesson)'''`\n\n\[nb\]\ 2011-01-27:\ Thanks\ for\ the\ advice\ above,\ I've\ gotten\ my\ simple\ items\ working\ ok.\ While\ this\ is\ probably\ not\ gridplus\ specific,\ the\ difficulties\ I'm\ facing\ now\ is\ a\ strategy\ for\ storing\ the\ multiple\ items\ selected\ in\ a\ treeview.\ While\ storing\ the\ selected\ values\ of\ a\ tree\ in\ a\ single\ field\ is\ straightforward,\ e.g\ just\ store\ \"/u1\ /u1/3\ /u1/6\ /u1/8\ /u2\ /u2/2\ /u2/4\ /u2/6\ /u2/18\ /u3/2\ /u3/3\ /u6\"\ /u2\",\ this\ approach\ does\ not\ facilitate\ future\ queries,\ like\ what\ \"find\ all\ the\ /u1's\"....\n\n----\n\n\[MHo\]\ 2011-05-29:\ I\ miss\ ''scrolled\ windows''\ as\ a\ gridplus\ widget\ type.\ 2nd\ question:\ I\ noticed\ that,\ when\ doing\ a\ ''gridplus\ window''\ operation\ to\ define\ a\ new\ toplevel\ window,\ for\ a\ short\ time,\ a\ blank\ windows\ is\ appearing\ just\ before\ the\ final\ layout\ is\ configured\ and\ the\ window\ is\ packed.\ Is\ there\ a\ way\ to\ avoid\ the\ flicker?\ The\ code\ (fragment)\ is\ as\ follows:\n\n======\ngridplus\ window\ .main\ -modal\ 1\ -topmost\ 1\ -windowcommand\ main:buttons,exit\nwm\ withdraw\ .main\neval\ \[format\ \{gridplus\ widget\ .main.userWidget\ -title\ \$fTitle\ %s\}\ \$args\]\ngridplus\ button\ .main.buttons\ \{\n\ \ \ \ \{Weiter\ .ok\}\ \{Abbruch\ .exit\}\n\}\ngridplus\ layout\ .main.layout\ -wtitle\ \$wTitle\ \{\n\ \ \ \ .main.userWidget\n\ \ \ \ .main.buttons:e\n\}\nbind\ .main\ <Escape>\ \[list\ main:buttons,exit\]\npack\ .main.layout\n======\n\n\[adavis\]\ 2011-05-31:\ I\ don't\ have\ a\ complete\ cure\ for\ this\ (for\ the\ moment\ at\ least)\ -\ but\ you\ could\ try\ the\ following...\n\n======\ngridplus\ window\ .main\ -modal\ 1\ -topmost\ 1\ -windowcommand\ main:buttons,exit\ -overrideredirect\ 1\nwm\ withdraw\ .main\nwm\ overrideredirect\ .main\ 0\n======\n\n...the\ flicker\ should\ be\ much\ less\ noticable.\n\n\[MHo\]:\ Thanks,\ that\ works.\ Another\ remark:\ As\ you\ may\ guess\ from\ the\ code\ fragment\ above,\ I'll\ try\ to\ encapsulate\ gridplus\ in\ a\ way\ that\ one\ could\ quickly\ define\ a\ simple\ dialog\ without\ caring\ about\ the\ tricky\ details.\ The\ call\ from\ the\ shelling\ application's\ perspective\ than\ looks\ something\ like:\n\n======\nif\ \{\[gpDialog1\ TestFensterTitel\ TestFrameTitel\ \{\n\ \ \ \{&e\ \"Benutzer\"\ .benutzer\}\ \{&e\ \"Neues\ Kennwort\"\ .passwort\ +\}\n\ \ \ \{\"Optionen\"\ &c\ .unlock\}\ \ \ \{\}\n\}\]\ ==\ 1\}\ \{\n\ \ \ msgBox\ \">>>\$gpDialog1bValues<<<\"\n\}\n======\n\nwhich\ is\ pretty\ simple,\ I\ think.\ The\ only\ thing\ which\ isn't\ possible\ this\ way\ is\ using\ constructs\ which\ needs\ explicitely\ coded\ ''callbacks''.\ This\ was\ the\ reason\ that\ I\ first\ choosed\ \[tepam\]\ as\ part\ of\ my\ program.\ With\ \[tepam\],\ one\ could\ build\ complex\ dialogs\ without\ using\ callbacks.\ As\ I\ discovered\ several\ things\ which\ does\ not\ work\ as\ I\ expected\ and\ the\ dialog\ layout\ doesn't\ fullfill\ my\ needs\ though,\ I\ switched\ to\ gridplus2\ again...\n\n\[adavis\]\ 2011-05-31:\ Can\ you\ give\ me\ an\ example\ of\ how\ you\ would\ like\ it\ to\ behave?\n\n\[adavis\]\ 2011-06-01:\ Something\ you\ may\ find\ useful\ -\ maybe\ if\ developing\ a\ dialog\ builder\ which\ allows\ users\ to\ create/customise\ntheir\ own\ dialogs/screens\ -\ is\ to\ use\ GRIDPLUS\ http://www.satisoft.com/tcltk/gridplus2/define.html%|%defined%|%\ widgets.\n\nThis\ is\ best\ explained\ using\ a\ simple\ example:-\n\n======\n#-------------------------------#\n#\ First,\ define\ some\ widgets...\ #\n#-------------------------------#\n\ngridplus\ define\ \{\n\ \ \ \ userid\ \ \ \ \{&e\ \"User\ ID\"\ .userid\ 25\ +\}\n\ \ \ \ password\ \ \{&e\ \"Password\"\ .password\ 25\ *\}\n\ \ \ \ ok-cancel\ \{|&b\ \"OK\"\ .ok\ |>\ \"Cancel\"\ .cancel\}\n\}\n\n#----------------------------------#\n#\ Then,\ use\ the\ defined\ widgets...\ #\n#----------------------------------#\n\ngridplus\ widget\ .dialog\ -wtitle\ Login\ \{\n\ \ \ \ @userid\n\ \ \ \ @password\n\ \ \ \ =\n\ \ \ \ @ok-cancel\n\}\n\npack\ .dialog\n\n#-------------------------------------#\n#\ ...to\ create\ a\ simple\ login\ dialog.\ #\n#-------------------------------------#\n======\n\n\[MHo\]\ Thanks\ again,\ later\ I\ will\ give\ a\ complete\ example,\ which\ illustrates\ better,\ what\ I\ want.\ Here's\ another\ questions:\n\ \ \ *\ Just\ tested\ the\ &D-Dropdown-Date-Selector,\ but\ it's\ window\ appears\ behind\ the\ main\ dialog\ window\ (perhaps\ because\ the\ main\ windows\ has\ the\ attribut\ '''-topmost\ 1'''?).\n\ \ \ **\ \[MHo\]:\ I\ tested\ it\ again,\ yes,\ it\ was\ the\ topmost\ 1.\n\ \ \ **\ \[adavis\]\ 2011-06-10:\ I'll\ look\ into\ this.\ \n\n\ \ \ *\ A\ predefined\ file/directory\ selector\ would\ eleminate\ the\ need\ to\ code\ a\ button\ callback\ routine,\ which\ in\ turn\ calls\ tk_getOpenFile\ etc.\n\ \ \ *\ \[adavis\]\ 2011-06-10:\ What\ do\ you\ require\ that\ is\ different\ from\ tk_getOpenFile?\n\ \ \ **\ \[MHo\]\ I\ thought\ of\ some\ kind\ of\ megawidget:\ an\ entry\ widget\ with\ a\ button\ to\ the\ right,\ togeter\ as\ a\ unit.\ Klicking\ in\ the\ button\ (labeled\ \"...\",\ e.g.)\ open\ the\ FileOpen-dialog.\ Or\ something\ like\ that.\ Just\ to\ reduce\ the\ neccesseraity\ to\ code\ a\ callback,\ for\ no\ other\ reason.\n\nMore\ questions:\n\ \ \ *\ Is\ it\ possible\ to\ redefine\ the\ day/month\ names?\ Maybe\ I\ overlooked\ something...\n\ \ \ *\ \[adavis\]\ (10th\ June\ 2011):\ The\ day/month\ names\ are\ set\ according\ to\ the\ locale.\ It\ uses\ the\ day/month\ names\ as\ they\ are\ returned\ by\ the\ '''clock'''\ command.\n\ \ \ **\ \[MHo\]\ I\ notice,\ that\ the\ \[clock\]\ command\ doesn't\ do\ automatically\ what\ it\ should\ (IMHO),\ at\ least\ on\ Windows\ XP:\n\n======\n%\ clock\ format\ \[clock\ seconds\]\ -format\ %A\nFriday\;\ #\ wrong\n%\ clock\ format\ \[clock\ seconds\]\ -format\ %A\ -locale\ current\nFreitag\;\ #\ correct\n%\ clock\ format\ \[clock\ seconds\]\ -format\ %A\ -locale\ system\nFreitag\;\ #\ correct\n%\n======\n\n\ \ \ *\ The\ Calendarcontrol\ only\ handles\ mouse\ clicks,\ the\ arrow\ keys\ seem\ to\ have\ no\ effect.\n\ \ \ *\ Another\ fundamental:\ '''how\ to\ give\ default\ values\ for\ entry\ fields'''\ (GPSET\ or\ manipulating\ \{\}\ before\ doesn't\ help\ as\ the\ values\ are\ cleared\ on\ call!)???\n\ \ \ *\ The\ text\ \"-ecmd\ <tab>\"\ should\ be\ rewritten\ as\ \"-ecmd\ <Tab>\"\ in\ your\ documentation.\n\n\[adavis\]\ 2011-06-12:\ I\ now\ have\ a\ test\ version\ of\ GRIDPLUS2\ which\ allows\ the\ locale\ to\ be\ explicitly\ set\ -and-\ has\ a\ fix\ for\ the\ calendar/topmost\ problem.\ I\ am\ hoping\ you\ would\ be\ able\ to\ test\ this\ for\ me\ -\ If\ you\ would\ like\ to\ do\ this,\ please\ email\ me.\n\nThe\ calendar\ does\ (for\ the\ moment)\ only\ handle\ mouse\ clicks.\ I\ will\ add\ cursor\ key\ control\ in\ a\ future\ release.\n\nI\ will\ add\ an\ entry\ with\ \"...\"\ button\ file/directory\ selector\ in\ a\ future\ release.\ In\ the\ meatime,\ there\ is\ a\ special\ optionset\ which\ helps\ in\ creating\ this\ kind\ feature\ (See:\ http://www.satisoft.com/tcltk/gridplus2/embedded-grid.html#example3)\n\nDefault\ values\ cannot\ currently\ be\ set\ as\ the\ value\ is\ initialised\ to\ null.\ Do\ you\ have\ an\ application\ where\ it\ is\ important\ to\ set\ the\ value\ of\ an\ entry\ before\ it\ is\ created?\ I\ guess\ I\ could\ add\ a\ '''gpdefault'''\ command?\ \[MHo\]:\ Yes,\ or\ an\ option\ similar\ to\ '''-variables\ 0'''\ which\ say\ ''no\ clear\ at\ init''.\n\nCan\ you\ tell\ me\ what\ page\ the\ \"<tab>\"\ mistake\ is\ on?\ \[MHo\]\ I\ didn't\ find\ it\ again\ by\ myself.\ Maybe\ I\ stared\ at\ the\ screen\ too\ long...\n\n----\n\n\[ARR\]\ 2012-02-13:\ I've\ started\ to\ use\ this\ great\ package\ in\ my\ apps\ and\ I\ like\ to\ help,\ fix\ some\ bugs,\ add\ functions...\ Is\ Gridplus2\ still\ maintained?\ Is\ there\ a\ newer\ Version\ than\ 2.6\ from\ 23/10/2010?\n\n\[adavis\]\ 2012-02-14:\ GRIDPLUS2\ is\ still\ being\ maintained/enhanced.\ I\ have\ recently\ finished\ the\ coding\ for\ version\ 2.7\ and\ I\ am\ currently\ in\ the\ process\ of\ updating\ the\ documentation.\ If\ you\ have\ any\ enhancement\ requests\ or\ bugs\ to\ report\ please\ email\ me\ at\ '''[email protected]'''.\ \ \n\n\[ARR\]\ 2012-02-15:\ Dear\ Adrian,\ thanks\ for\ quick\ response,\ here\ are\ some\ bugs\ and\ enhancements:\n\n\ \ Bugs:\n\ \ \ -\ I\ think\ internal\ group\ data\ is\ not\ completely\ deleted\ when\ doing\ \"gridplus\ clear\ …“\n\ \ \ -\ When\ using\ an\ embedded\ grid\ and\ a\ -group\ name\ I\ get\ an\ error\ when\ trying\ to\ disable\ the\ group\ widgets:\n\ \ \ \ \ \"gridplus::gridplus\ set\ -group\ view_dummy\ -state\ disabled\"\ ->\ Error:\ unknown\ option\ \"-state\"\n\ \ \ -\ An\ embedded\ grid\ takes\ some\ more\ left\ and\ right\ space\ than\ a\ normal\ grid\ (some\ pixels\ only!)\n\ \ \ -\ I\ cannot\ get\ locale\ days\ in\ german\ because\ of\ the\ clock\ behaviour\ in\ 8.5\ as\ already\ mentioned\ by\ \[MHo\]\n\n\ \ Enhancements:\n\ \ \ -\ a\ spinbox\ widget\n\ \ \ -\ a\ time\ selection\ widget\ i.e.\ a\ clock\ with\ moveable\ hands\ (like\ iWidgets)\n\ \ \ -\ I\ would\ like\ to\ call\ a\ given\ proc\ with\ a\ parameter\ from\ a\ button\ like\ this:\ \"\{&b\ .name=para\ :image\ ~:::namespace::myproc\}\"\n\n\[adavis\]\ (16th\ February\ 2012):\ I\ have\ sent\ you\ a\ copy\ of\ GRIDPLUS\ 2.7\ for\ evaluation.\ Please\ see\ below\ for\ my\ comments:-\n\n\ \ \ -\ I\ think\ internal\ group\ data\ is\ not\ completely\ deleted\ when\ doing\ \"gridplus\ clear\ …“\n\nCan\ you\ give\ me\ a\ simple\ example\ to\ illustrate\ this?\n\n\[ARR\]\ I'm\ updating\ my\ running\ app\ by\ resourcing\ tcl\ files\ at\ runtime.\ If\ I\ delete\ a\ gp\ widget\ it\ is\ still\ in\ the\ group\ but\ it's\ state\ cannot\ be\ changed.\ Of\ course\ the\ problem\ will\ never\ happen\ if\ I\ restart\ the\ app.\ I\ think\ 'gridplus\ clear\ ..'\ should\ erase\ these\ widets\ from\ the\ group's\ names\ list.\ I\ will\ make\ an\ example.\n\n\ \ \ -\ When\ using\ an\ embedded\ grid\ and\ a\ -group\ name\ I\ get\ an\ error\ when\ trying\ to\ disable\ the\ group\ widgets\n\ \ \ -\ (\[ARR\]\ ->\ solved!\ see\ below...)\n\nThanks\ for\ pointing\ this\ out\ -\ It\ is\ something\ that\ I\ should\ make\ clear\ in\ the\ documentation...\n\n...Embedded\ grids\ '''''do\ not'''''\ inherit\ options\ from\ the\ parent\ grid.\ I\ had\ considered\ this,\ but\ I\ found\ too\ many\ occasions\ (for\ my\ purposes)\ where\ this\ was\ not\ the\ desired\ behaviour.\n\nTo\ use\ the\ group\ facility\ within\ embedded\ grids\ there\ are\ two\ options:-\n\n1)\ Specify\ the\ group\ for\ each\ widget\ item\ in\ the\ embedded\ grid...\n\ \n======\ngridplus\ widget\ .mygrid\ \{\n\ \ \ \ \{\"My\ Label\"\ ||\ |&e\ \"Entry\ 1\"\ .entry1\ %mygroup\ |>\ \"Entry\ 2\"\ .entry2\ %mygroup\ |>\ \"Entry\ 3\"\ .entry3\ %mygroup\}\n\}\n\npack\ .mygrid\n\ngridplus\ set\ -group\ mygroup\ -state\ disabled\n======\n\n2)\ Use\ a\ style/optionset\ for\ the\ embedded\ grid...\n\n======\ngridplus\ optionset\ myoptions\ \{\n\ \ \ \ -group\ mygroup\n\ \ \ \ -style\ \{\}\n\}\n\ngridplus\ widget\ .mygrid\ \{\n\ \ \ \ \{\"My\ Label\"\ ||\ |#myoptions\ |&e\ \"Entry\ 1\"\ .entry1\ |>\ \"Entry\ 2\"\ .entry2\ |>\ \"Entry\ 3\"\ .entry3\}\n\}\n\npack\ .mygrid\n\ngridplus\ set\ -group\ mygroup\ -state\ disabled\n======\ \n\nAgain,\ this\ is\ something\ that\ needs\ clarification\ in\ the\ documentation.\ The\ \"|#\"\ widget\ option\ can\ set\ a\ style\ to\ use\ for\ an\ embedded\ grid.\ Additionally,\ if\ there\ is\ an\ optionset\ with\ the\ same\ name,\ this\ is\ also\ applied.\ What\ I\ don't\ think\ I've\ made\ clear\ is\ that,\ if\ you\ wish\ to\ use\ \"|#\"\ to\ specify\ an\ optionset\ only\ \ (where\ there\ is\ not\ style\ with\ the\ same\ name)\ it\ is\ necessary\ to\ explicitly\ specify\ a\ style\ option\ in\ the\ optionset\ -\ Otherwise\ you\ will\ get\ a\ \"layout\ not\ found\"\ error.\n\nIn\ GIRDPLUS\ 2.7\ I\ have\ added\ a\ `'''Gridplus.optionsetDefaultStyle'''`\ option\ database\ option.\ To\ maintain\ backward\ compatibility\ the\ default\ for\ this\ is\ \"0\"\ (false).\n\nWhen\ set\ to\ true...\n\n======\noption\ add\ *Gridplus.optionsetDefaultStyle\ 1\n======\n\ \n...\"`'''-style\ \{\}'''`\"\ is\ added\ automatically\ to\ each\ optionset\ if\ \"-style\"\ is\ not\ explictly\ specified.\n\n\ \ \ -\ An\ embedded\ grid\ takes\ some\ more\ left\ and\ right\ space\ than\ a\ normal\ grid\ (some\ pixels\ only!)\n\nI\ will\ investigate\ this.\n\n\ \ \ -\ I\ cannot\ get\ locale\ days\ in\ german\ because\ of\ the\ clock\ behaviour\ in\ 8.5\ \n\nI\ have\ added\ an\ explict\ `'''-locale'''`\ option\ in\ GRIDPLUS\ 2.7\ -\ (\[ARR\]\ solved\ and\ tested\ in\ V2.7)\n\n\ \ \ -\ a\ spinbox\ widget\ \n\nYou\ can,\ for\ the\ moment,\ use\ the\ normal\ '''tk/ttk'''\ spinbox\ widget\ as\ demonstrated\ in:\ http://www.satisoft.com/tcltk/gridplus2/groups.html\ -\ (\[ARR\]\ works\ fine!)\n\n\ \ \ -\ a\ time\ selection\ widget\ i.e.\ a\ clock\ with\ moveable\ hands\ (like\ iWidgets)\n\nI'm\ sorry\ -\ I\ don't\ have\ any\ plans\ to\ do\ this\ at\ the\ moment.\ -\ (\[ARR\]\ I'm\ currently\ working\ on\ a\ clock\ widget\ like\ this.\ I'll\ send\ it\ when\ it's\ running\ if\ you\ like.)\n\n\ \ \ -\ I\ would\ like\ to\ call\ a\ given\ proc\ with\ a\ parameter\ from\ a\ button\n\nWould\ something\ like\ the\ following\ suit\ your\ purpose?\ -\ (\[ARR\]\ Oh\ yes\ that\ works.\ Somehow\ I\ didn't\ get\ it\ before...)\n\n======\nproc\ myproc\ \{parameter\}\ \{\n\ \ \ \ puts\ \$parameter\n\}\n\ngridplus\ button\ .mygrid\ \{\n\ \ \ \ \{\"Press\ Me\"\ .mybutton\ \"~myproc\ myparameter\"\}\n\}\n\npack\ .mygrid\n======\n\n----\n\n\[MHo\]\ 2012-02-24:\ I've\ problems\ to\ line\ up\ colums\ properly.\ Here's\ a\ fragment\ of\ a\ wrapper\ I\ use\ to\ encapsulated\ part\ of\ the\ gridplus\ functionality,\ but\ I\ think\ the\ wrapper\ is\ not\ relevant\ here:\n\n======\n\{:fileopen16\ \"^Quelle:w\"\ |:\ \}\n\{\ |:\ \"Datei(en)/Ordner:\"\ |>\ &e\ .source\ 30\ |:\ &b\ \"Datei(en)...\"\ .button=chooseFile\ \ |:\ &b\ \"Ordner...\"\ .button=chooseDir\}\n\{\}\n=\n\{:devpc16\ \"^Ziel:w\"\ |:\ \}\n\{\ |:\ \"Maschine(n):\"\ \ \ \ \ \ |>\ &e\ .dest\ 30\ \ \ |:\ &b\ \"AusGruppe...\"\ .button=chooseADGrp\ |:\ &b\ \"QueryFarm...\"\ .button=getFarm\}\n\{\ |:\ \"Zielpfad:\"\ \ \ \ \ \ \ \ \ |>\ &e\ .dPath\ 30\ \ |:\ ^\ |:\ ^\ \}\n\{\}\n=\n\{:apptools16\ \ \"^Optionen:w\"\ |:\ \}\n\{\ |:\ &c\ .testOnly\ \"Testmodus\"\}\n\{\ |:\ &c\ .overWrite\ \"Vorhandene\ Zieldateien\ überschreiben\"\ +\}\n======\n\nThe\ lines\ with\ Maschinen(n):\ and\ Zielpfad:\ near\ the\ beginning\ do\ not\ show\ as\ I\ want....\nUnfortunally,\ I\ couldn't\ upload\ a\ screenshot\ at\ the\ moment.\n\n\[adavis\]\ 2012-02-24:\ Unfortunately\ there\ isn't\ (currently)\ a\ really\ neat\ way\ to\ do\ exactly\ what\ I\ think\ you\ want.\ This\ will\ require\ an\ enchancement.\ I'll\ have\ a\ look\ tomorrow\ to\ see\ if\ it\ will\ be\ simple\ enough\ to\ incorporate\ in\ (the\ very\ soon\ to\ be\ released)\ GRIDPLUS\ 2.7.\ In\ the\ meantime\ something\ like\ the\ following\ may\ do:-\n\n======\ngridplus\ optionset\ x\ \{\n\ \ \ \ -cfmt\ \ \{0\ 10\}\n\ \ \ \ -style\ \{\}\n\}\n\ngridplus\ widget\ .test\ \{\n\ \ \ \ \{:fileopen16\ \"^Quelle\"\ |>\}\n\ \ \ \ \{|:\ |#x\ &e\ \"Datei(en)/Ordner:\"\ .source\ 30\ |>\ &b\ \"Datei(en)...\"\ .button=chooseFile\ \ |:\ &b\ \"Ordner...\"\ .button=chooseDir\}\n\ \ \ \ \{\}\n\ \ \ \ =\n\ \ \ \ \{:devpc16\ \"^Ziel\"\ |>\}\n\ \ \ \ \{|:\ |#x\ &e\ \"Maschine(n):\"\ \ \ \ \ \ .dest\ 30\ \ \ |>\ &b\ \"AusGruppe...\"\ .button=chooseADGrp\ |:\ &b\ \"QueryFarm...\"\ .button=getFarm\}\n\ \ \ \ \{|:\ |#x\ &e\ \"Zielpfad:\"\ \ \ \ \ \ \ \ \ .dPath\ 30\ \ |>\}\n\ \ \ \ \{\}\n\ \ \ \ =\n\ \ \ \ \{:apptools16\ \ \"^Optionen\"\ |>\}\n\ \ \ \ \{|:\ &c\ .testOnly\ \ \"Testmodus\"\ |>\}\n\ \ \ \ \{|:\ &c\ .overWrite\ \"Vorhandene\ Zieldateien\ überschreiben\"\ +\ |>\}\n\}\n\npack\ .test\n======\n\n----\n\n\[MHo\]:\ Thank\ you\ for\ your\ fast\ response\ and\ the\ great\ tool!\ Here's\ a\ screenshot,\ produced\ from\ the\ minimal\ modified\ code\ shown\ first:\n\n\[http://home.arcor.de/hoffenbar/prog/gpdialog2.jpg\]\n\nOne\ alternative\ could\ be\ to\ use\ a\ separate\ \{block\}\ (grid)\ for\ each\ cell\ like\ this:\n\n======\n\{:fileopen16\ \"^Quelle:w\"\ |:\ \}\n\{\ |:\ \"Datei(en)/Ordner:\"\ |>\ &e\ .source\ 30\ \}\ \{&b\ \"Datei(en)...\"\ .button=chooseFile\ |:\ &b\ \"Ordner...\"\ .button=chooseDir\}\n\{\}\n=\ -\ -\ -\ -\n\{\}\n\{:devpc16\ \"^Ziel:w\"\ |:\ \}\n\{\ |:\ \"Maschine(n):\"\ \ \ \ \ \ |>\ &e\ .dest\ 30\ \ \ \}\ \{&b\ \"AusGruppe...\"\ .button=chooseADGrp\ |:\ &b\ \"QueryFarm...\"\ .button=getFarm\}\n\{\ |:\ \"Zielpfad:\"\ \ \ \ \ \ \ \ \ |>\ &e\ .dPath\ 30\ \ \}\ \n\{\}\n=\ -\ -\ -\ -\n\{\}\n\{:apptools16\ \ \"^Optionen:w\"\ |:\ \}\n\{\ |:\ &c\ .testOnly\ \"Testmodus\"\}\n\{\ |:\ &c\ .overWrite\ \"Vorhandene\ Zieldateien\ überschreiben\"\ +\}\n======\n\nBut\ then,\ the\ separation\ lines\ to\ not\ look\ like\ they\ should\ (specifying\ =\ =\ =\ =\ =\ don't\ work,\ either):\n\n\[http://home.arcor.de/hoffenbar/prog/gpdialog3.jpg\]\n\nI\ should\ mention\ that,\ because\ of\ the\ special\ environment\ (wrapper/encapsulation,\ single\ call\ to\ construct\ and\ handle\ the\ \"map\"\ like\ with\ tepam)\ I\ could\ only\ use\ \"inline\"\ constructs\ like\ &c,\ &e,\ &b\ etc.,\ explizit\ commands\ like\ ''gridplus\ line''\ are\ currently\ not\ available\ (with\ the\ exception\ of\ a\ variant\ of\ ''gpset'').\ Maybe\ publishing\ ''gridplus\ define''\ could\ help\ here,\ as\ you\ mention\ earlier.\ Here's\ an\ simple\ example\ of\ how\ the\ whole\ thing\ could\ look\ (part\ of\ a\ password\ change\ dialogue):\n\n======\nif\ \{\[gpDialog1\ dlg1\ \{Kennwort\ zurücksetzen\}\ \[list\ -taborder\ row\]\ \{\n\ \ \ \{&e\ \"Benutzer\ :e\"\ \ \ \ \ \ \ .benutzer\ 20\ +\}\n\ \ \ \{&e\ \"Neues\ Kennwort\ :e\"\ .passwort\ 20\}\n\ \ \ \{=\}\n\ \ \ \{&c\ .mustchg\ \"Änderung\ bei\ 1.Anmeldung\ erzwingen\ :w\"\ +\}\n\}\]\ ==\ 1\}\ \{\n\ \ \ array\ set\ myVals\ \$dlg1_Val\n\}\ else\ \{\n\ \ \ return\n\}\n#\ :\n#\ :\n#\ now\ we\ can\ use\ \$myVals(benutzer),\ \$myVals(passwort),\ etc.\n#\ :\n======\n\nwhere\ the\ code\ for\ gpDialog1\ is\ a\ \"black\ box\"\ within\ my\ program...\ (not\ too\ large,\ but\ to\ many\ lines\ to\ show\ here\ \;-).\nThe\ \"body\"\ of\ gpDialog1\ (that\ is,\ the\ content\ of\ the\ last\ arg)\ are\ the\ args\ for\ a\ ''gridplus\ widget''\ command!\n\nMeanwhile\ I've\ adapted\ your\ workaround.\ Don't\ exactly\ now\ why,\ but\ it\ works\ perfect!!!\n\n\[adavis\]\ 2012-02-25:\ I've\ enhanced\ the\ GRIDPLUS\ 2.7\ '''grid'''\ command\ so\ that\ it\ is\ possible\ to\ specify\ the\ width\ of\ a\ label.\ Using\ this\ option\ the\ following\ code\ will\ give\ the\ same\ result\ as\ my\ previous\ solution\ without\ the\ need\ to\ use\ an\ '''optionset''':-\n\n======\ngridplus\ widget\ .test\ \{\n\ \ \ \ \{:fileopen16\ \"^Quelle\"\ |>\}\n\ \ \ \ \{|:\ &e\ \"Datei(en)/Ordner:10\"\ .source\ 30\ |>\ &b\ \"Datei(en)...\"\ .button=chooseFile\ \ |:\ &b\ \"Ordner...\"\ .button=chooseDir\}\n\ \ \ \ \{\}\n\ \ \ \ =\n\ \ \ \ \{:devpc16\ \"^Ziel\"\ |>\}\n\ \ \ \ \{|:\ &e\ \"Maschine(n):10\"\ \ \ \ \ \ .dest\ 30\ \ \ |>\ &b\ \"AusGruppe...\"\ .button=chooseADGrp\ |:\ &b\ \"QueryFarm...\"\ .button=getFarm\}\n\ \ \ \ \{|:\ &e\ \"Zielpfad:10\"\ \ \ \ \ \ \ \ \ .dPath\ 30\ \ |>\}\n\ \ \ \ \{\}\n\ \ \ \ =\n\ \ \ \ \{:apptools16\ \ \"^Optionen\"\ |>\}\n\ \ \ \ \{|:\ &c\ .testOnly\ \"Testmodus\"\ |>\}\n\ \ \ \ \{|:\ &c\ .overWrite\ \"Vorhandene\ Zieldateien\ überschreiben\"\ +\ |>\}\n\ \ \ \ \{\}\n\}\n\npack\ .test\n======\n\nIn\ this\ example\ you\ can\ see\ that\ the\ label\ \"suffix\"\ can\ now\ specify\ a\ width\ in\ characters\ in\ addition\ to\ a\ sticky\ indicator.\ If\ both\ are\ to\ be\ specified\ the\ sticky\ indicator\ must\ come\ before\ the\ width.\n\nIf\ you\ would\ like\ a\ pre-release\ copy\ of\ GRIDPLUS\ 2.7\ to\ try\ this\ please\ email\ me.\n----\n\n\[MHo\]\ Thanks\ again.\ Another\ question:\n\nHow\ can\ I\ define\ an\ editable\ dropdown\ combox\ with\ default\ list\ entries\ using\ the\ `\{&d\ ....\}`\ syntax?\nUsing\ `gridplus\ dropdown\ .name\ \{...\}`,\ everything\ works...\n\n\[adavis\]\ 2012-02-26:\ You\ seem\ to\ have\ discovered\ a\ minor\ inconsistency\ with\ the\ dropdown.\ I'm\ not\ going\ to\ change\ this\ in\ 2.7\ as\ it\ is\ possible\ that\ it\ may\ break\ existing\ code.\ I'll\ need\ to\ think\ carefully\ about\ this.\ In\ the\ meantime\ you\ can\ get\ an\ editable\ dropdown\ using\ the\ \"&d\"\ syntax\ by\ explicitly\ setting\ the\ state\ of\ the\ widget\ by\ using\ the\ \">\"\ option.\ For\ example:-\n\n======\n\{&d\ \"Dropdown\ One\"\ .dropdown1\ \{+\"Option\ one\"\ \"Option\ two\"\ \"Option\ three\"\}\ >\}\n======\ \n\n----\n\n\[Mho\]:\ It\ works\ now.\ Thanks\ again.\ And\ how\ to\ set\ the\ ''active''\ Item\ of\ a\ dropdown\ widget?\ My\ dialoge\ restores\ the\ last\ settings\ if\ called\ again,\ but\ do\ I\ have\ to\ re-order\ the\ list\ with\ the\ combobox\ items,\ or\ is\ there\ another\ way?\n\n\[adavis\]\ 2012-02-26:\ When\ setting\ the\ value\ of\ the\ dropdown\ item\ as\ it\ is\ created\ it\ will\ set\ to\ the\ first\ item\ in\ the\ list.\ You\ can\ also\ use\ http://www.satisoft.com/tcltk/gridplus2/gpset.html%|%gpset%|%\ to\ set\ any\ value\ you\ require.\n\n----\n\n\[MHo\]:\ Me\ again...\ (03rd\ March\ 2012):\ it\ seems\ that\ setting\ a\ value\ for\ a\ checkbox\ wich\ defaults\ to\ the\ ''on''\ state\ via\ ''+''\ via\ ''gpdefault''\ is\ toggling\ instead\ of\ setting...\ That\ means,\ ''gpdefault\ .xyz\ 1''\ switches\ a\ checkbox\ ''off''.\n\n\[adavis\]\ 2012-03-05:\ This\ is\ working\ as\ designed.\ '''gpdefault'''\ sets\ a\ default\ value\ -\ The\ '''+'''\ option\ selects/invokes\ the\ widget.\ As\ the\ value\ is\ set\ before\ the\ select,\ using\ both\ together\ does\ result\ in\ the\ behaviour\ you\ describe.\ Can\ you\ give\ me\ an\ example\ of\ what\ you\ are\ trying\ to\ achieve?\n\n\[MHo\]:\ The\ dialog\ saves\ it's\ state\ for\ later\ recall.\ So,\ regardless\ how\ the\ default\ state\ is,\ this\ last\ state\ should\ be\ restored.\ For\ the\ very\ first\ default\ (before\ the\ 1st\ call),\ the\ setting\ is\ determined\ via\ the\ \"+\"\ flag\ in\ the\ &b-clause.\ Then,\ the\ user\ either\ leaves\ this\ default\ or\ switches\ it\ to\ off.\ The\ actual\ value\ is\ then\ saved.\n\n\[adavis\]:\ 2012-03-07:\ The\ simplest\ way\ to\ save\ the\ values\ of\ GRIDPLUS\ items\ and\ then\ to\ restore\ them\ is\ to\ use\ '''array\ get'''\ and\ '''array\ set'''.\n\nSomething\ like...\n\n======\nset\ mydata\ \[array\ get\ \{\}\]\n======\n\n...will\ save\ the\ window/dialog\ data\ into\ \"`'''mydata'''`\"\ -\ then...\n\n======\narray\ set\ \{\}\ \$mydata\n======\n\n...will\ restore\ the\ values.\n\nIs\ this\ solution\ useful?\n\n\[MHo\]:\ Hm...\ Don't\ remember\ the\ details,\ but\ there\ where\ some\ reasons\ for\ '''gpdefault'''\ (maybe\ we\ can\ read\ somewhere\ on\ this\ page?).\ I\ think\ setting\ \{\}\ before\ defining\ the\ dialog\ has\ no\ effect\ because\ it's\ resetted\ or\ so...\n\n\[adavis\]\ 2012-03-09:\ \ `\{\}`\ does\ need\ to\ be\ set\ after\ defining\ the\ dialog.\n\nTo\ get\ the\ behaviour\ I\ think\ you\ require\ -\ Change...\n\n======\nif\ \{\$select\}\ \{\n\ \ \ \ \$widgetName\ invoke\n\}\n======\n\n...In\ the\ \"Create\ checkbutton\"\ section\ of\ `::gridplus::gpWidget`\ to...\n\n======\nif\ \{\$select\}\ \{\n\ \ \ \ set\ (\$widgetName)\ 0\n\ \ \ \ \$widgetName\ invoke\n\}\n======\n\nI\ don't\ think\ this\ is\ likely\ to\ break\ any\ existing\ code.\ If\ not,\ I\ will\ incorporate\ this\ into\ the\ next\ release.\n\n\[MHo\]:\ Hm,\ I\ have\ to\ include\ a\ little\ (or\ more)\ extra\ logic,\ as\ the\ code\ I'm\ constructing\ the\ dialog\ with\ does\ not\ neccessarily\ know\ at\ every\ place,\ what\ type\ of\ widget\ it's\ constructing....,\ say:\n\n======\nif\ \{type_of_widget\ is\ checkbox\}\ \{\n\ \ \ \ if\ \{save_value\}\ \{\n\ \ \ \ \ \ \ \ widget\ invoke\n\ \ \ \ \}\n\}\n======\n\nBut\ that's\ not\ enough.\ Since\ the\ default\ could\ be\ \"on\",\ when\ the\ saved\ value\ instead\ is\ \"off\",\ the\ visible\ value\ remains\ \"on\"...\n\n\[MHo\]:\ Meanwhile,\ I\ reorderd\ my\ code.\ Now,\ all\ values\ are\ set\ ''after''\ the\ dialoge\ is\ constructed,\ via\ ''gpset''\ and\ ''gpselect''\;\ no\ more\ ''gpdefault''.\ So,\ the\ \"checkbox\ problem\"\ is\ gone.\ But\ I\ hit\ other\ problems,\ the\ biggest\ of\ what\ is:\ I\ cannot\ restore\ the\ current\ \"selection\"\ of\ a\ set\ of\ radiobuttons.\ The\ radiobutton\ window\ is\ of\ type\ TLabelframe\ and\ contains\ many\ other\ windows\ of\ type\ TFrame...\ I\ cannot\ find\ the\ widgets\ of\ type\ TRadiobutton,\ so\ I\ cannot\ do\ a\ ''widgetname\ invoke''\ to\ select\ the\ right\ radiobutton...\n\nIdeally,\ ''gpselect''\ should\ be\ able,\ given\ the\ last\ selected\ value\ of\ a\ radiobutton\ set\ or\ of\ a\ combobox,\ to\ \"activate\"\ the\ right\ value.\n\n\[adavis\]\ 2012-03-11:\ '''gpset'''\ can\ be\ used\ to\ set\ the\ value\ of\ any\ GRIDPLUS\ item\ including\ radiobuttons\ and\ dropdown/comboboxes.\ '''gpselect'''\ is\ only\ used\ the\ select\ '''tree'''\ nodes,\ '''tablelist'''\ rows\ and\ '''calendar'''\ dates.\n\nI\ have,\ however,\ just\ discovered\ a\ bug\ such\ that:\ If\ '''gpset'''\ is\ called\ immediately\ after\ a\ window\ is\ created/updated\ it\ is\ possible\ that\ the\ '''gpset'''\ is\ executed\ before\ the\ window\ update\ is\ complete.\ In\ this\ case\ the\ radiobutton\ may\ not\ be\ set\ correctly.\ I\ will\ release\ a\ bug\ fix\ soon\ -\ But,\ in\ the\ meantime,\ calling\ '''update\ idletasks'''\ before\ the\ '''gpset'''\ should\ resolve\ this\ problem.\ For\ example:-\n\n======\ngridplus\ widget\ .mydialog\ -wtitle\ Dialog\ \{\n\ \ \ \{&e\ \"Entry\"\ \ \ \ \ \ \ \ \ .myentry\}\n\ \ \ \{&c\ \"Checkbutton\"\ \ \ .mycheck\}\n\ \ \ \{&r\ \"Radiobutton\ 1\"\ .\ +radio1\ *radiogroup\}\n\ \ \ \{&r\ \"Radiobutton\ 2\"\ .\ -radio2\ *radiogroup\}\n\ \ \ \{&d\ \"Dropdown\"\ \ \ \ \ \ .mydrop\ \{+\"Option\ One\"\ \"Option\ Two\"\ \"Option\ Three\"\}\}\n\}\n\npack\ .mydialog\n\nupdate\ idletasks\n\ngpset\ \{\n\ \ \ .mydialog,myentry\ \ \ \ \"Test\ String\"\n\ \ \ .mydialog,mycheck\ \ \ \ 1\n\ \ \ .mydialog,mydrop\ \ \ \ \ \"Option\ Two\"\n\ \ \ .mydialog,radiogroup\ radio2\n\}\n======\ \ \n\n\[MHo\]\ Yes,\ experimenting\ with\ a\ demo\ prog\ and\ reading\ your\ help\ over\ again,\ I\ just\ discovered\ the\ same.\ I\ put\ an\ update\ idletasks\ before\ the\ relevant\ code,\ and\ now\ it\ works\ as\ expected....\ I\ came\ about\ this\ when\ I\ intersperse\ the\ code\ with\ tk_messageBoxes,\ and\ when\ they\ are\ there,\ everything\ worked\ as\ expected,\ so\ it\ seems\ like\ some\ window\ update\ issue...\n\nJust\ went\ back\ here\ to\ remove\ my\ last\ question\ and\ leave\ some\ remarks,\ but\ I\ was\ too\ slow\ (or,\ better:\ you\ were\ too\ fast!)...\;-)\ Thanks!\n\n----\n\n\[MHo\]\ 2012-03-14:\n\ \ \ *\ It\ seems\ that\ using\ '''-title'''\ '''''title'''''\ for\ a\ widget\ automatically\ forces\ the\ '''-relief'''\ value\ to\ '''theme'''?\n\ \ \ *\ Using\ '''-relief\ theme'''\ alone\ (without\ a\ title)\ \"interrupts\"\ the\ border\ where\ otherwise\ the\ title\ would\ be?\n\ \ \ *\ Keyboard\ Shortcuts\ in\ Buttons\ would\ be\ great\ (So\ one\ can\ press\ Alt+O\ for\ Ok,\ or\ Alt+C\ for\ cancel).\n\n\[adavis\]\ 2012-03-15:\n\n`*\ It\ seems\ that\ using\ '''-title'''\ '''''title'''''\ for\ a\ widget\ automatically\ forces\ the\ '''-relief'''\ value\ to\ '''theme'''?`\n\nYes\ that\ is\ the\ case.\ For\ frames\ with\ a\ label/title\ it\ seems\ best\ to\ leave\ it\ up\ to\ the\ theme\ to\ set\ the\ style\ for\ the\ border.\n\n\n`*\ Using\ '''-relief\ theme'''\ alone\ (without\ a\ title)\ \"interrupts\"\ the\ border\ where\ otherwise\ the\ title\ would\ be?`\n\nThis\ is\ the\ result\ of,\ what\ I\ believe\ to\ be,\ a\ long\ standing\ bug\ in\ '''ttk::labelframe'''.\ I\ have\ noticed\ that\ this\ also\ still\ seems\ to\ be\ the\ case\ in\ Tcl\ 8.6.\ I\ have\ developed\ a\ workaround\ which\ works\ on\ XP\ (Themes:\ winnative,\ clam,\ alt,\ default,\ classic,\ and\ xpnative).\ I\ may\ give\ up\ on\ waiting\ for\ the\ bug\ fix\ and\ implement\ the\ workaround...\n\n\n`*\ Keyboard\ Shortcuts\ in\ Buttons\ would\ be\ great\ (So\ one\ can\ press\ Alt+O\ for\ Ok,\ or\ Alt+C\ for\ cancel).`\n\nI'll\ consider\ this\ for\ a\ future\ release.\n\n\[MHo\]\ Another\ question:\n\ \ \ *\ Is\ it\ right,\ that\ the\ '''~command'''-option\ has\ no\ meaning\ with\ '''links'''...?\ That\ is,\ I\ cannot\ overwrite\ the\ autogenerated\ name\ of\ the\ proc\ that\ is\ called\ if\ the\ link\ is\ clicked?\n\n\[adavis\]\ 2012-03-17:\ I\ have\ just\ added\ this\ option\ (and\ the\ '''labelframe'''\ work-around)\ to\ GRIDPLUS\ 2.8\ -\ To\ be\ released\ shortly.\ If\ you\ would\ like\ a\ \"preview\"\ copy\ of\ 2.8\ please\ email\ me.\n\n\n----\n\n\[milarepa\]\ 2012-06-23\ 17:48:44:\n\nI\ am\ trying\ to\ migrate\ my\ software\ from\ version\ 2.6\ to\ 2.8,\ however\ is\ not\ displaying\ correctly\ the\ GUI\ on\ 2.8\ version\ of\ gridplus,\ just\ a\ small\ square\ on\ the\ top\ right\ hand\ corner\ of\ the\ screen.\n\nHere\ is\ my\ source\ code:\n\n\n***\ main.tcl:\ ***\n\n======\npackage\ require\ Tk\npackage\ require\ gridplus\ \nnamespace\ import\ gridplus::*\nset\ c\ 0\;set\ row\ 0\;\ set\ inTime\ 0\;\ set\ nearTime\ 0\;\ set\ pastTime\ 0\nset\ cmbName\ \"\"\;\ set\ cmbWard\ \"\"\noption\ add\ *Gridplus.linkColor\ /blue\noption\ add\ *Gridplus.icon\ right1wbw\ \noption\ add\ *Gridplus.linkStyle\ 10/10\noption\ add\ *Gridplus.labelStyle\ 10/10\nttk::setTheme\ clam\nttk::style\ configure\ title.TLabel\ -font\ \{\"Tahoma\"\ 16\}\ \;\ #\ -foreground\ white\ -background\ dodgerblue\nttk::style\ configure\ TLabel\ -font\ \{\"Tahoma\"\ 10\ bold\}\nttk::style\ configure\ TButton\ -font\ \{\"Tahoma\"\ 10\ bold\}\n#=======================================================================#\n#\ WINDOW\ SETTINGS\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\nwm\ title\ .\ \"TrakPil\"\nbind\ .\ <Escape>\ \{exit\}\nwm\ geometry\ .\ +0+0\n#=======================================================================#\n#\ INCLUDE\ SOURCES\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\nsource\ \"./Menu.tcl\"\nsource\ \"./FormRegistration.tcl\"\n#=======================================================================#\n#\ CONTAINERS\ CONFIGURATION\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\ngridplus\ container\ .ctrMenu\ -height\ 600\ -width\ 150\ -relief\ groove\ -sticky\ new\ngridplus\ container\ .ctrForm\ -height\ 600\ -width\ 700\ -relief\ groove\ -sticky\ new\ngridplus\ container\ .ctrTop\ \ \ -height\ 50\ -width\ 860\ -relief\ ridge\ \ -sticky\ new\ngridplus\ container\ .ctrBtm\ \ \ -height\ 65\ -width\ 860\ -relief\ raised\ -sticky\ new\n#=======================================================================#\n#\ TOP\ BAR\ (TITLE)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\nif\ \{!\ \[gridplus\ window\ .top\ -in\ .ctrTop\]\}\ \{return\}\nttk::label\ .top.lblTitle\ -text\ \"TRAKPIL\ v0.4\ -\ PRESCRIPTION\ TRACKER\ SYSTEM\"\ -style\ title.TLabel\n\ \ \ \ gridplus\ layout\ .top.display\ \{\n\ \ \ \ \ .top.lblTitle:c\ \ \n\ \ \ \ \}\n\ \ \ \ pack\ .top.display\ -expand\ 1\ -fill\ both\n#=======================================================================#\n#\ SET\ LAYOUT\ AND\ DISPLAY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\ngridplus\ layout\ .mainDisplay\ -wtitle\ \"TrakPil\ 0.4\"\ \{\n\ \ \ \ .ctrTop\ \ \ \ \ -\n\ \ \ \ .ctrMenu\ \ \ .ctrForm\n\ \ \ \ .ctrBtm\ \ \ \ \ -\n\}\n\npack\ .mainDisplay\nfocus\ -force\ .mainDisplay\nproc\ formInit\ \{\}\ \{\nif\ \{!\ \[gridplus\ window\ .form\ -in\ .ctrForm\]\}\ \{return\}\n\ \ \ \ foreach\ tag\ \{.\ .form\}\ \{\n\ \ \ \ \ \ \ \ bind\ \$tag\ <F1>\ \{tkcon\ show\}\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Escape>\ \{exit\}\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-1>\ menu:main,registration\ \n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-2>\ menu:main,tracking\ \n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-3>\ menu:main,queue\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-4>\ menu:main,complete\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-5>\ menu:main,logout\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-6>\ menu:main,mainmenu\ \n\ \ \ \ \}\nif\ \{\[winfo\ exists\ .gpValidateError\]\}\ \{wm\ withdraw\ .gpValidateError\}\n\}\nMenu\n======\n\n***\ Menu.tcl:\ ***\n\n======\nproc\ Menu\ \{\}\ \{\n\ \ \ \ formInit\n\ \ \ \ if\ \{!\ \[gridplus\ window\ .menu\ -in\ .ctrMenu\]\}\ \{return\}\n\ \ \ \ gridplus\ link\ .menu.main\ -iconfile\ tkIcons.sat\ \{\n\ \ \ \ \ \ \ \{:\ \"1.\ Registration\"\ .registration\}\n\ \ \ \ \ \ \ \{:\ \"2.\ Tracking\"\ \ \ \ \ .tracking\}\n\ \ \ \ \ \ \ \{:\ \"3.\ Work\ Queue\"\ \ \ .queue\}\n\ \ \ \ \ \ \ \{:\ \"4.\ Scan\ Barcode\"\ .scan\}\n\ \ \ \ \ \ \ \{:\ \"5.\ Complete\"\ \ \ \ \ .complete\}\n\ \ \ \ \ \ \ \{:\ \"6.\ Logout\"\ \ \ \ \ \ \ .logout\}\n\ \ \ \ \}\n\n\ \ \ \ ttk::label\ .form.lblTitle\ -text\ \"\\n\\n\\n\\nPLEASE\ CLICK\ ON\ MENU\ ITEM\\n\\n\\n\\n\\\n\ \ \ \ OR\ PRESS\ ALT\ +\ MENU\ NUMBER\"\ -style\ title.TLabel\ -justify\ center\ \n\ \ \ \ gridplus\ layout\ .form.display\ \{\n\ \ \ \ \ .form.lblTitle:c\n\ \ \ \ \}\n\ \ \ \ pack\ .form.display\ -expand\ 1\ -fill\ both\n\n\ \ \ \ gridplus\ layout\ .menu.display\ \{\n\ \ \ \ \ \ \ \ .menu.main\n\ \ \ \ \}\n\ \ \ \ pack\ .menu.display\ -expand\ 1\ -fill\ both\n\}\nproc\ menu:main,registration\ \{\}\ \{\n\ \ \ \ FormRegistration\n\}\nproc\ menu:main,tracking\ \{\}\ \{\n\ \ \ \ FormTracking\n\}\nproc\ menu:main,queue\ \{\}\ \{\n\ \ \ \ FormQueue\n\}\n======\n\n***\ FormRegistration.tcl:\ ***\n\n======\nproc\ FormRegistration\ \{\}\ \{\n\ \ \ \ formInit\n\ \ \ \ #=======================================================================#\n\ \ \ \ #\ TITLE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n\ \ \ \ #=======================================================================#\n\ \ \ \ ttk::label\ .form.lblTitle\ -text\ \"REGISTRATION\ OF\ PRESCRIPTION\"\ -style\ title.TLabel\n\ \ \ \ #=======================================================================#\n\ \ \ \ #\ REGISTRATION\ FORM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n\ \ \ \ #=======================================================================#\n\ \ \ \ gridplus\ entry\ .form.registration\ -validatepopup\ 1\ \{\n\ \ \ \ \ \ \ \{\ \"PATIENT\ DETAILS:\"\}\n\ \ \ \ \ \ \ \{\ \ \ \"Hospital\ Number:\ \"\ \ .txtHospNum\ 20\ \"!int?Please\ enter\ correct\ Hospital\ Number\"\ \}\n\ \ \ \ \ \ \ \{\ \ \ \"Surname:\ \"\ \ \ \ \ \ \ \ \ \ .txtSurname\ 20\ \}\n\ \ \ \ \ \ \ \{\ \ \ \"Forename:\ \"\ \ \ \ \ \ \ \ \ .txtForename\ 20\}\n\ \ \ \ \ \ \ \{&d\ \"Ward:\ \"\ \ \ \ \ \ \ \ \ \ \ \ \ .cmbWard\ 17\}\n\ \ \ \ \ \ \ =\n\ \ \ \ \ \ \ \{\"PRESCRIPTION\ DETAILS:\"\}\ ^\n\ \ \ \ \ \ \ \{&d\ \"Prescription\ Type:\ \"\ .cmbType\ 17\ \}\n\ \ \ \ \ \ \ \{\ \ \ \"Number\ of\ Items:\ \"\ \ \ .txtItem\ 5\ \"!int?Must\ be\ a\ valid\ number\"\ \}\n\ \ \ \ \ \ \ \{&d\ \"Initial\ Comments:\ \"\ \ .cmbComment\ 40\}\n\ \ \ \ \ \ \ \{&c\ \"Fast\ Track\ \"\ \ \ \ \ \ \ \ \ .chkFast\ \ \}\n\ \ \ \ \ \ \ \{&b\ .register\ :actcheck16\ \"Register\"\ !\ |:\ &b\ .clear\ :actstop16\ \"Clear\ Form\"\ \}\n\ \ \ \ \}\n\ \ \ \ .form.registration,cmbComment\ configure\ -state\ normal\n\ \ \ \ #\ click\ to\ open\ comment\ combobox\ because\ is\ editable\ \n\ \ \ \ bind\ .form.registration,cmbComment\ <ButtonPress>\ \{event\ generate\ %W\ <Down>\}\n\ \ \ \ focus\ .form.registration,txtHospNum\n\n\ \ \ \ gpset\ .form.registration,cmbType\ \ \ \ \ \[db\ eval\ \{SELECT\ typename\ FROM\ type\}\]\n\ \ \ \ gpset\ .form.registration,cmbWard\ \ \ \ \ \[db\ eval\ \{SELECT\ wardName\ FROM\ ward\}\]\n\ \ \ \ gpset\ .form.registration,cmbComment\ \ \[db\ eval\ \{SELECT\ comText\ FROM\ comment\}\]\n\ \ \ \ .form.registration,cmbType\ current\ 0\n\n\ \ \ \ gridplus\ layout\ .form.display\ \{\n\ \ \ \ \ .form.lblTitle\n\ \ \ \ \ .form.registration\n\}\n\ \ \ \ pack\ .form.display\ -expand\ 1\ -fill\ both\n\}\n======\n\n\[adavis\]\ 2012-06-27:\ Sorry\ about\ the\ delay\ -\ I've\ been\ away\ for\ a\ few\ days.\ Just\ to\ let\ you\ know\ I'm\ investigating.\ I\ can\ reproduce\ the\ problem,\ which\ seems\ to\ have\ occurred\ between\ 2.7\ and\ 2.8\ -\ Odd\ ,\ as\ there\ were\ no\ major\ changes\ here...\n\n\[adavis\]\ 2012-06-27:\ I\ think\ I\ now\ have\ a\ fix\ for\ this.\ If\ you\ would\ like\ me\ to\ send\ you\ a\ copy\ for\ testing\ please\ email\ me.\n\nEE\ 2012-06-28:\ There's\ an\ error\ on\ your\ website,\ in\ the\ installation\ instructions\ there's\ still\ a\ reference\ to\ version\ 2.7.\n\n\[adavis\]\ 2012-06-29:\ Thanks\ for\ letting\ me\ know\ -\ I'll\ update\ soon.\n\n----\n\n\[MHo\]\ 2012-10-24:\ I've\ buttons\ with\ mixed\ text\ and\ icons,\ here\ are\ some\ examples:\n======\n\{\ &b\ \"Nach\ oben\"\ \ \ \ \ \ \ \ .upList\ \ \ \ \ \ ~m_dlgKS_CB_moveUpInList\ \ \ 15\ <\ %rightGrp2\ :nav1uparrow16\ \ \ \ \}\n\{\ &b\ \"Nach\ unten\"\ \ \ \ \ \ \ .downList\ \ \ \ ~m_dlgKS_CB_moveDownInList\ 15\ <\ %rightGrp2\ :nav1downarrow16\ \ \}\n\{\ &b\ \"Pause\ einfügen\"\ \ \ .pauseList\ \ \ ~m_dlgKS_CB_insPauseInList\ 15\ \ \ \ \ \ \ \ \ \ \ \ \ \ :appclock16\ \ \ \ \ \ \ \}\n======\n\n\ \ \ *\ Is\ it\ possible\ to\ align\ the\ text\ left\ and\ the\ icons\ right\ within\ the\ button?\ In\ the\ example\ above,\ the\ icons\ are\ on\ the\ left\ side,\ and\ everything\ is\ centered.\ I\ Tried\ \"Nach\ oben:e\",\ but\ it\ has\ no\ effect\ (The\ \":e\"\ becomes\ visible\ part\ of\ the\ button\ text\ instead....).\n\ \ \ *\ Another\ question:\ I\ have\ a\ dialogue\ with\ mixed\ buttons\ and\ two\ tablelists.\ The\ tablelists\ do\ not\ gain\ focus\ during\ keyboard\ traversal,\ even\ with\ -takefocus\ 1.\ What\ could\ be\ wrong?\n\n\[adavis\]\ 2012-11-09:\ Sorry\ about\ the\ delay\ -\ I\ missed\ this\ Wiki\ update...\n\nTo\ have\ the\ button\ images\ on\ the\ right\ you\ can\ specify\ the\ '''-compound\ right'''\ option.\ To\ force\ the\ text\ to\ be\ left\ justified\ pad\ out\ the\ shorter\ text(s)\ with\ trailing\ spaces:-\n\n======\ngridplus\ widget\ .mygrid\ -compound\ right\ \{\n\ \ \ \ \{&b\ \"Nach\ oben\ \ \ \ \ \ \ \ \"\ .upList\ \ \ \ ~m_dlgKS_CB_moveUpInList\ \ \ 15\ <\ %rightGrp2\ :nav1uparrow16\ \ \}\n\ \ \ \ \{&b\ \"Nach\ unten\ \ \ \ \ \ \ \"\ .downList\ \ ~m_dlgKS_CB_moveDownInList\ 15\ <\ %rightGrp2\ :nav1downarrow16\}\n\ \ \ \ \{&b\ \"Pause\ einfügen\"\ \ \ \ .pauseList\ ~m_dlgKS_CB_insPauseInList\ 15\ \ \ \ \ \ \ \ \ \ \ \ \ \ :appclock16\ \ \ \ \ \}\n\}\n======\n\nCan\ you\ give\ me\ sample\ code\ to\ demonstrate\ the\ Tablelist\ focus\ issue?\n\n\[MHo\]:\ Thanks\ for\ response.\ I'll\ have\ to\ put\ some\ demo\ together,\ as\ I\ cannot\ post\ or\ mail\ the\ actual\ code,\ as\ it's\ part\ of\ my\ shell\ around\ gridplus2\ and\ therefore\ not\ executable\ by\ itself\ but\ my\ interpretring\ \[Simple\ Program\ Menu\].\n\n----\n\n\[MHo\]:\ How\ to\ alter\ the\ title\ of\ a\ labelframe\ around\ a\ textbox\ dynamically?\n\n\[adavis\]\ 2013-01-28:\ If\ you\ created\ this\ textbox...\n\n======\ngridplus\ text\ .mytext\ -width\ 25\ -height\ 8\ -scroll\ y\ -title\ \"Text\ Box\"\n======\n\n...You\ could\ change\ the\ title\ like\ this...\n\n======\n.mytext\ configure\ -text\ \"New\ Title\"\n======\ \n\n----\n\n\[MHo\]:\ Is\ there\ an\ essential\ difference\ between\ inserting\ text\ into\ a\ text\ widget\ via\n\n======\ngpinsert\ name\ index\ text\n======\n\nand\n\n======\nname.text\ insert\ index\ text\n======\n\n?\ I\ want\ to\ use\ ''tags'',\ which\ is\ as\ far\ as\ I\ know\ not\ possible\ with\ ''gpinsert''.\n\n\[adavis\]\ 2013-01-30:\ Yes\ there\ is\ a\ difference.\ For\ editable\ text\ widgets\ it\ ensures\ that\ value\ for\ the\ widget\ and\ the\ modfied\ flag\ are\ updated.\ For\ tags\ enabled\ text\ widgets\ it\ ensures\ that\ the\ tags\ are\ processed.\n\nI'm\ not\ sure\ what\ you\ are\ planning\ to\ do\ with\ the\ tags,\ but\ the\ GRIDPLUS\ text\ widget\ does\ support\ some\ HTML\ style\ tag\ definitions\ -\ See\ http://www.satisoft.com/tcltk/gridplus2/text.html#text-example4%|%This\ Example%|%.\n\nThe\ GRIDPLUS\ tags\ reference\ can\ be\ found\ http://www.satisoft.com/tcltk/gridplus2/tags.html%|%Here%|%.\n\nThe\ GRIDPLUS\ tags\ can\ be\ used\ with\ '''gpinsert'''\ -\ If\ you\ created\ this\ textbox...\n\n======\ngridplus\ text\ .mytext\ -menu\ .mymenu\ -tags\ 1\n\ \ngridplus\ layout\ .main\ -wtitle\ \"Text\ Example\"\ \{\n\ \ \ \ .mytext\n\}\n\ \npack\ .main\n\ngpset\ .mytext\ \{\n<b>This\ Text\ is\ Bold</b>\nThis\ text\ is\ not\ bold\n\}\n======\n\n...You\ can\ use\ the\ '''gpinsert'''\ command\ like\ this...\n\n======\ngpinsert\ .mytext\ end\ \"Here\ is\ some\ <color\ red>red</color>\ text\"\ngpinsert\ .mytext\ end\ \"Here\ is\ some\ <color\ blue>blue</color>\ text\"\ngpinsert\ .mytext\ end\ \"<u>This\ text</u>\ is\ underlined\"\n======\n\n----\n\n\[sai\]\ 2013-06-07:\n\nHow\ can\ I\ use\ tcl's\ built-in\ commands?\ e.g.\"text\ .t\ \;\ .t\ see\ end\"\nIt\ is\ autoscrolling\ in\ textbox.\ I\ am\ not\ sure\ whether\ \ the\ gridplus2\ also\ can\ likes\ it's\ effect\ or\ not.\nThanks.\n\n\[adavis\]\ 2013-06-07:\ If\ you\ have\ created\ a\ GRIDPLUS\ text\ widget\ called\ \".mywidget\"...\n======\n.mywidget.text\ see\ end\n======\n...should\ do\ what\ you\ require.\n\n'''NOTE:'''\ The\ naming\ convention\ used\ for\ GRIDPLUS\ widgets\ can\ be\ found\ http://www.satisoft.com/tcltk/gridplus2/reference.html#names%|%Here%|%.\n\n\[sai\]\ 2013-06-10:\ This\ can\ be\ seen\ in\ the\ following\ example.\n\n======\ngridplus\ text\ .mywidget\ -state\ disabled\ -font\ \{courier\ 8\}\ -scroll\ xy\ -wrap\ none\n.mywidget.text\ see\ end\n======\n\n\[adavis\]\ 2013-06-10:\ I'm\ sorry\ \[sai\]\;\ I\ obviously\ don't\ understand\ your\ issue\ correctly.\ Can\ you\ provide\ more\ detail?\ What\ are\ you\ expecting\ to\ see?\n\n\[sai\]\ 2013-06-10:\ The\ following\ example\ don't\ have\ effect\ of\ auto\ scrolling.\ \n\n======\npackage\ require\ gridplus\ \nnamespace\ import\ gridplus::*\n\ngridplus\ text\ .mywidget\ \ -scroll\ xy\ \ -wrap\ none\ \ngridplus\ layout\ .main\ -wtitle\ \"Test\"\ \{\n\ \ \ \ \ \ .mywidget\n\}\npack\ .main\n\nfor\ \{set\ i\ 1\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\nafter\ 300\ngpinsert\ .mywidget\ \$i\ \$i\ \;update\n\}\n======\n\nBut\ I\ think\ the\ information\ in\ text\ that\ can\ presented\ immediately\ \;\ in\ other\ words,\ the\ scroll\ bar\ was\ scrolled\ with\ text\ together.\n\n======\npackage\ require\ gridplus\ \nnamespace\ import\ gridplus::*\n\ngridplus\ text\ .mywidget\ \ -scroll\ xy\ \ -wrap\ none\ \ngridplus\ layout\ .main\ -wtitle\ \"Test\"\ \{\n\ \ \ \ \ \ .mywidget\n\}\npack\ .main\n\nfor\ \{set\ i\ 1\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\nafter\ 300\ngpinsert\ .mywidget\ \$i\ \$i\ \;update\n#effect\ of\ auto\ scrolling\ ?\n.mywidget.text\ see\ end\n\}\n======\n\n\[adavis\]\ 2013-06-10:\ I\ would\ recommend\ something\ like\ your\ second\ example\ -\ Though\ I\ think\ \"`'''update\ idletasks'''`\"\ \ would\ be\ preferred.\ You\ can\ also\ insert\ at\ the\ \"`'''end'''`\"...\n\n======\nfor\ \{set\ i\ 1\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\n\ \ \ \ after\ 300\n\ \ \ \ gpinsert\ .mywidget\ end\ \$i\n\ \ \ \ update\ idletasks\n\ \ \ \ .mywidget.text\ see\ end\n\}\n======\n\nI\ will\ be\ adding\ a\ '''-seeinsert'''\ option\ to\ the\ text\ widget\ in\ the\ next\ release\ of\ GRIDPLUS.\ If\ you\ would\ like\ a\ pre-release\ copy\ of\ GRIDPLUS\ 2.10\ please\ send\ me\ an\ email.\n\n\[sai\]\ 2013-06-10:\ Cool,this\ is\ great\ grid\ manager.I\ very\ like\ your\ gridplus2.\ I\ have\ \ emailed\ to\ you.\n\n\[sai\]\ 2013-06-14:\ Hello,\ \[adavis\].\ I\ try\ tablelist\ of\ gridplus2,\ it\ present\ the\ error\ messages\ in\ the\ following\ example:\n\n======\ngridplus\ tablelist\ .mytable\ \{\n\ \ \ \ 4\ \"Column1\"\n\ \ \ \ 4\ \"Column2\"\n\ \ \ \ 0\ \"Column3\"\n\}\n\ngridplus\ layout\ .main\ -wtitle\ \"Tablelist\ Example\"\ \{\n\ \ \ .mytable\n\}\n\npack\ .main\n======\n\nerror\ message\n\n======none\ncan't\ access\ \"::tablelist::ns.::data\":\ parent\ namespace\ doesn't\ exist\ncan't\ access\ \"::tablelist::ns.::data\":\ parent\ namespace\ doesn't\ exist\n\ \ \ \ while\ executing\n\"upvar\ ::tablelist::ns\$\{win\}::data\ data\"\n\ \ \ \ (procedure\ \"tablelist::addActiveTag\"\ line\ 2)\n\ \ \ \ invoked\ from\ within\n\"tablelist::addActiveTag\ .\"\n\ \ \ \ (command\ bound\ to\ event)\n======\n\nMy\ tcl\ is\ Active\ 8.15.13\ ,tablelist\ is\ 5.9.\n\n\[adavis\]\ 2013-06-14:\ I\ have\ tried\ this\ example\ with\ Tcl/Tk\ 8.5.11\ and\ 8.6.0,\ each\ of\ these\ with\ Tablelist\ 5.8\ and\ 5.9\ -\ I\ cannot\ reproduce\ this\ error.\ The\ above\ error\ messages\ come\ from\ the\ Tablelist\ package\ -\ Maybe\ Csaba\ will\ be\ able\ to\ help?\n\n\[Csaba\ Nemethi\]\ 2013-06-17:\ The\ reported\ error\ message\ was\ due\ to\ the\ fact\ that\ the\ name\ of\ the\ Tcl\ script\ was\ \"tablelist.tcl\",\ thus\ the\ main\ window\ \".\"\ had\ the\ class\ name\ \"Tablelist\".\ This\ is\ no\ Tablelist-specific\ problem:\ A\ script\ named\ \"entry.tcl\"\ or\ \"listbox.tcl\",\ etc.\ will\ equally\ throw\ error\ messages\ on\ Windows,\ for\ the\ same\ reason.\n\n\[sai\]:\ Yes,thank\ reply\ of\ \[Csaba\ Nemethi\].\n\n----\n\n\[milarepa\]\ 2013-08-29\ 09:50:52:\n\nI\ need\ to\ position\ a\ scrollbar\ on\ the\ left\ side\ of\ a\ text\ widget.\ On\ plain\ Tcl/Tk\ a\ scrollbar\ is\ like\ another\ widget,\ so\ it\ is\ possibe\ to\ position\ it\ where\ we\ want.\ How\ can\ I\ achieve\ this\ in\ gridplus?\n\n\[adavis\]\ 2013-08-29:\ I'm\ sorry,\ GRIDPLUS\ doesn't\ currently\ have\ that\ option.\ I\ may\ add\ this\ in\ GRIDPLUS\ 2.11.\ In\ the\ meantime,\ you\ could\ try\ something\ like...\n\n======\ngrid\ .mytext.ybar\ -row\ 0\ -column\ 0\ -sticky\ ns\ngrid\ .mytext.text\ -row\ 0\ -column\ 1\ -sticky\ nsew\n======\n\n...to\ swap\ the\ positions\ (assuming\ the\ GRIDPLUS\ '''text'''\ is\ called\ \".mytext\").\n\n\[milarepa\]\ 2013-08-29\ 12:56:43:\ Thank\ you\ \[adavis\].\ It\ works!\n\n----\n\n\[MHo\]\ 2013-08-30:\ Can't\ figure\ out\ how\ to\ dynamically\ enable\ or\ disable\ a\ menu\ entry\ (within\ a\ popup\ menu).\ I\ can\ create\ in\ disabled\ state\ with\ <,\ ok,\ but\ then\ how\ to\ switch\ state\ later?\n\n\[adavis\]\ 2013-08-30:\ GRIDPLUS\ widget\ and\ menu\ option\ states\ can\ be\ set\ dynamically\ using\ \"'''Groups'''\"\ -\ See\ http://www.satisoft.com/tcltk/gridplus2/groups.html\n\n\[MHo\]\ Yes\ I\ know,\ but\ I\ thought\ there\ was\ a\ way\ to\ enable/disable\ individual\ objects\ by\ their\ name,\ not\ only\ via\ groups...\n\n\[adavis\]\ 2013-08-30:\ I'm\ sorry,\ \"'''Groups'''\"\ is\ the\ supported\ GRIDPLUS\ way\ to\ do\ this.\n\n----\n\[kap\]\ 2014-07-03:\ Is\ there\ a\ way\ to\ add\ icons\ so\ they\ are\ not\ buttons,\ and\ do\ not\ have\ a\ proc\ associated\ with\ them\ (like\ if\ I\ could\ set\ an\ icon\ to\ a\ label)?\ Currently\ I\ set\ the\ icon\ as\ a\ link\ and\ create\ a\ dummy\ proc\ so\ it\ doesn't\ try\ and\ execute\ a\ command\ when\ clicking\ as\ so:\n\n======\ngridplus\ widget\ .statusbar\ -relief\ groove\ -stretch\ 0\ \{\n\ \ \ \ \{\"^Connection\ Status:\ \"\ .status\}\ \{&l\ .connect\ :disconnect\}\n\}\nproc\ statusbar,connect\ \{\}\ \{\}\n======\n\n\[kap\]\ 2014-07-03:\ Also\ is\ there\ a\ way\ to\ dynamically\ change\ the\ icon\ set\ to\ a\ gridplus\ widget?\ In\ the\ code\ above\ I'd\ like\ to\ be\ able\ to\ dynamically\ change\ the\ .statusbar,connect\ icon\ from\ \"disconnect\"\ to\ \"connect\"\ later\ in\ my\ code.\n\n\[adavis\]\ 2014-07-06:\ Assuming\ you\ have\ already\ created\ two\ images\ called\ \"connect\"\ and\ \"disconnect\",\ I\ would\ suggest...\n\n======\ngridplus\ widget\ .statusbar\ -relief\ groove\ -stretch\ 0\ \{\n\ \ \ \ \{\"^Connection\ Status:\ \"\ .status\}\ \{.connect\}\n\}\n\n.statusbar,connect\ configure\ -image\ disconnect\n======\n\n...you\ can\ then\ change\ the\ icon\ using...\n\n======\n.statusbar,connect\ configure\ -image\ connect\n======\n\nIf\ what\ you\ are\ actually\ trying\ to\ do\ is\ have\ the\ text\ \"Connection\ Status:\"\ with\ the\ icon\ immediately\ to\ the\ right,\ it\ can\ be\ simplified\ to\ something\ like...\n\n======\ngridplus\ widget\ .statusbar\ -relief\ groove\ -stretch\ 0\ \{\n\ \ \ \ \{\"^Connection\ Status:\ \"\ .connection\}\n\}\n\n.statusbar,connection\ configure\ -image\ disconnect\n======\n\n----\n\n\[kap\]\ 2014-08-04:\ Is\ there\ a\ way\ to\ configure\ a\ gridplus\ entry\ box\ to\ dynamically\ resize\ as\ the\ window\ size\ changes?\n\n\[adavis\]\ 2014-08-08:\ Yes.\ You\ need\ to\ use\ the\ \"-stretch\"\ option\ on\ the\ widget/entry\ grid\ and\ the\ \":ew\"\ anchor\ suffix\ on\ the\ entry\ widgets\ that\ are\ to\ be\ resized.\n\nFor\ example:\ If\ your\ window\ only\ contains\ and\ a\ widget/entry\ grid...\n\n======\ngridplus\ entry\ .myentry\ -stretch\ 0\ -width\ 30\ -title\ \"Entry\ Grid\"\ \{\n\ \ \ \{\"Entry\ One\"\ \ \ .entry1:ew\}\n\ \ \ \{\"Entry\ Two\"\ \ \ .entry2:ew\}\n\ \ \ \{\"Entry\ Three\"\ .entry3:ew\}\n\}\n\ngridplus\ pack\ .myentry\ -resize\ xy\n======\n\nIf\ the\ widget/entry\ grid\ is\ in\ a\ layout\ then\ the\ `:ew`\ anchor\ suffix\ must\ also\ be\ specified\ for\ the\ grid\ in\ the\ layout...\n\n======\ngridplus\ entry\ .myentry\ -stretch\ 0\ -width\ 30\ -title\ \"Entry\ Grid\"\ \{\n\ \ \ \{\"Entry\ One\"\ \ \ .entry1:ew\}\n\ \ \ \{\"Entry\ Two\"\ \ \ .entry2:ew\}\n\ \ \ \{\"Entry\ Three\"\ .entry3:ew\}\n\}\n\ngridplus\ layout\ .mylayout\ -wtitle\ \"Resize\ Example\"\ \{\n\ \ \ .myentry:ew\n\}\n\ngridplus\ pack\ .mylayout\ -resize\ xy\n======\n\n----\n\n\[kap\]\ 2014-10-17:\ Is\ it\ possible\ to\ configure\ a\ grid\ such\ that\ the\ widgets\ will\ stretch\ to\ fill\ the\ rest\ of\ the\ grid,\ right\ up\ to\ the\ next\ widget?\ For\ example,\ the\ entry\ box\ in\ the\ following\ entry\ grid,\ when\ stretched,\ resizes\ only\ to\ the\ midpoint\ of\ the\ window.\ This\ is\ the\ expected\ behavior\ since\ it\ is\ filling\ its\ half\ of\ the\ grid,\ though\ I'd\ like\ it\ to\ instead\ stretch\ all\ the\ way\ to\ the\ button\ as\ it's\ resizing.\n\n======\ngridplus\ entry\ .entry\ -stretch\ 0\ \{\n\ \ \ \ .entry:ew\ \{&b\ .button\ Foo\}\n\}\n\ngridplus\ layout\ .main\ \{\n\ \ \ \ .entry:ew\n\}\n\ngridplus\ pack\ .main\ -resize\ x\n======\n\n\[LAM\]\ 2014-10-18:\ What\ about\ this\ ?\n\n======\ngridplus\ entry\ .entry\ -stretch\ 0\ \{\n\ \ \ \ \{entry\ .entry:ew\ \}\n\}\n\ngridplus\ button\ .button\ \ \{\n\ \ \ \ \{Foo\ .button\ \}\ \n\}\n\ngridplus\ layout\ .main\ \{\n\ \ \ \ .entry:ew\n\ \ \ \ ^\ .button+\n\}\n\ngridplus\ pack\ .main\ -resize\ x\n======\n\n\[adavis\]\ 2014-10-20:\ You\ can\ use\ \"-spacestretch\"...\n\n======\ngridplus\ entry\ .entry\ -stretch\ 0\ -spacestretch\ \{000\}\ \{\n\ \ \ \ .entry:ew\ \{&b\ .button\ Foo\}\n\}\n\ngridplus\ layout\ .main\ \{\n\ \ \ \ .entry:ew\n\}\n\ngridplus\ pack\ .main\ -resize\ x\n======\n\n----\n\n\[kap\]\ 2014-11-03:\ Is\ there\ a\ way\ to\ tie\ an\ ensemble\ command\ to\ a\ widget\ specified\ in\ a\ grid?\ For\ example,\ let's\ say\ there\ exists\ ensemble\ commands\ \[foo\ bar\]\ and\ \[foo\ baz\]\ that\ should\ be\ fired\ when\ certain\ buttons\ in\ a\ \[gridplus\ button\]\ grid\ are\ pushed.\n\n\[adavis\]\ 2014-11-10:\ I've\ not\ tried\ ensemble\ commands\ -\ In\ what\ way\ would\ calling\ them\ be\ different\ to\ \"normal\"\ commands?\n\n\[kap\]\ 2014-11-11:\ I\ ended\ up\ using\ the\ configure\ method\ of\ the\ widget\ object\ to\ add\ the\ ensemble\ command\ explicitly.\ I\ was\ curious\ if\ it\ were\ possible\ to\ do\ this\ via\ the\ gridplus\ syntax\ similar\ to\ the\ following\ where\ I'd\ like\ \[foo\ bar\]\ to\ fire\ when\ .b,b1\ is\ pressed\ (this\ fails,\ shown\ to\ supplement\ the\ question).\n\n======\ngridplus\ button\ .b\ \{\n\ \ \ \{Foo\ .b1\ ~\{foo\ bar\}\}\ \{Bar\ .b2\}\n\}\n======\n\n\[adavis\]\ 2014-11-14:\ Have\ you\ tried\ the\ following?:-\n\n======\ngridplus\ button\ .b\ \{\n\ \ \ \{Foo\ .b1\ \"~foo\ bar\"\}\ \{Bar\ .b2\}\n\}\n======\n\n\[kap\]\ 2014-11-16:\ Works\ great,\ thanks.\n\n----\n\n\[kap\]\ 2014-11-16:\ Bug\ report,\ with\ gridplus\ 2.10,\ the\ gridplus\ text\ find\ dialog\ throws\ errors\ whenever\ a\ string\ beginning\ with\ \"-\"\ (ambiguous\ switch\ error)\ is\ provided.\n\n\[adavis\]\ 2014-11-22:\ That's\ odd.\ I\ thought\ I'd\ fixed\ that\ in\ 2.10\ -and-\ it\ does\ seem\ to\ work\ OK\ with\ my\ 2.10\ installation.\ Are\ you\ sure\ you\ are\ actually\ using\ 2.10?\ ('''package\ version\ gridplus''')\ -\ If\ so,\ can\ you\ give\ me\ some\ sample\ code\ which\ has\ this\ problem?\n\n\[kap\]\ 2014-11-22:\ Just\ did\ a\ fresh\ install\ of\ 2.10\ (and\ verified\ with\ \[package\ version\ gridplus\]).\ After\ requiring\ /\ importing\ the\ package\ this\ snippets\ generates\ the\ problem:\n\n======\ngridplus\ text\ .t\n\ngridplus\ pack\ .t\n======\n\nUpon\ right-clicking\ the\ text\ box\ and\ selecting\ 'Find',\ I\ select\ the\ 'Find\ What'\ box\ and\ input\ a\ hyphen\ '-'\ and\ click\ the\ 'Find\ Next'\ button.\ This\ yields\ an\ error\ dialog\ \"Error:\ ambiguous\ switch\ \"-\":\ must\ be\ --,\ -all...\".\n\n\[adavis\]\ 2014-11-24:\ Thanks\ for\ pointing\ this\ out\ -\ It\ seems\ I'd\ only\ fixed\ one\ of\ the\ text\ find\ procedures.\ I\ have\ fixed\ this\ in\ version\ 2.11.\n\n----\n\n\[MHo\]\ 2016-03-29:\ How\ to\ delete\ all\ data\ rows\ from\ a\ tablelist\ (like\ a\ reset\ to\ initial\ state\ -\ i\ mean\ something\ .x\ delete\ 0\ end)?\n\n\[adavis\]\ 2016-04-11:\ The\ following\ should\ do\ what\ you\ require:-\n\n======\ngpset\ .mytable\ \{\}\n======\n\n----\n\n\[beware\]\ 2016-04-11:\ What's\ the\ best\ way\ of\ doing\ scrolled\ frames?\ If\ it\ matters\ I\ have\ a\ notebook\ within\ a\ notebook\ and\ for\ each\ of\ the\ slave\ notebook\ tabs\ I\ would\ like\ to\ put\ a\ scrolled\ frame.\ \ BWidgets\ Scrollable\ Frame\ doesn't\ seem\ to\ work\ for\ me.\n\n\[adavis\]\ 2016-04-21:\ I'm\ afraid\ GRIDPLUS2\ does\ not\ have\ a\ scrolled\ frame.\n----\n\[MHo\]\ 2016-05-02:\ I\ noticed\ that\ popping\ up\ a\ -menu\ (with\ right\ click)\ from\ a\ tablelist\ clears\ the\ selected\ rows\ (in\ modes\ multiple\ or\ extended)...\n\n\[MHo\]\ 2016-05-02:\ I\ missed\ the\ -underline\ option\ here\ and\ there.\ How\ to\ specify\ accelerator\ keys\ for\ buttons,\ e.g.?\n\n\[MHo\]\ 2016-11-13:\ The\ '''spinbox'''\ should\ support\ a\ -command\ so\ that\ things\ could\ be\ triggered\ when\ the\ value\ changes.\ Workaround\ is\ to\ use\ a\ trace.\n\n\[adavis\]\ 2016-11-16:\ Thanks\ for\ the\ suggestion\ -\ I'll\ add\ it\ to\ the\ list.\n\n\[MHo\]\ 2016-11-18:\ Thanks!\ Is\ there\ a\ way\ to\ centrally\ manage\ ''tooltips''?\ Something\ like\ this\ would\ be\ very\ helpfull:\n======\ngpset\ tooltips\ \{\n\ \ \ widget\ \{text...\}\n\ \ \ widget\ \{text...\}\n\ \ \ :\n\}\n\n<<categories>>\ Dev.\ Tools\ |\ GUI\ |\ Package regexp2} CALL {my render GRIDPLUS2 \[adavis\]\ 2015-11-29:\ GRIDPLUS\ 2.11\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ GRIDPLUS\ http://www.satisoft.com/tcltk/gridplus2/gpdb.html%|%gpdb%|%\ command\ to\ provide\ a\ GRIDPLUS\ interface\ to\ '''TDBC'''\ based\ SQL\ databases.\n\ \ \ *\ New\ GRIDPLUS\ http://www.satisoft.com/tcltk/gridplus2/gpdelete.html%|%gpdelete%|%\ command\ to\ delete\ specified\ row/line/node\ from\ a\ '''tablelist/text/tree'''.\n\ \ \ *\ New\ GRIDPLUS\ http://www.satisoft.com/tcltk/gridplus2/gpupdate.html%|%gpupdate%|%\ command\ to\ update\ a\ specified\ '''tablelist'''\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-maintansort%|%-maintansort%|%\ option\ for\ '''tablelist'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-insertoptions%|%-insertoptions%|%\ true/false\ options\ for\ '''tablelist'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#widget-command%|%widget\ command%|%\ created\ for\ '''tablelist'''\ to\ return\ column\ values\ for\ selected\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-save%|%-save%|%\ option\ for\ '''gpselect'''\ to\ save\ the\ rowid/key\ of\ the\ selected\ tablelist\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-restore%|%-restore%|%\ option\ for\ '''gpselect'''\ to\ restore\ previously\ saved\ tablelist\ row\ selection.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-first%|%-first%|%\ option\ for\ '''gpselect'''\ to\ select\ tablelist\ row\ with\ lowest\ rowid.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-last%|%-last%|%\ option\ for\ '''gpselect'''\ to\ select\ tablelist\ row\ with\ highest\ rowid.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-max%|%-max%|%\ option\ for\ '''gpselect'''\ to\ select\ tablelist\ row\ with\ the\ highest\ match.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-min%|%-min%|%\ option\ for\ '''gpselect'''\ to\ select\ tablelist\ row\ with\ the\ lowest\ match.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-padding%|%-padding%|%\ option\ for\ '''notebook'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-tabpadding%|%-tabpadding%|%\ option\ for\ '''notebook'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-selectmode%|%-selectmode%|%\ option\ for\ '''tree'''.\n\ \ \ *\ New\ '''gpset'''\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-dedent%|%\"-|\"%|%\ dedent\ option\ to\ improve\ source\ code\ readability.\n\ \ \ *\ New\ '''layout'''\ column/row\ weight\ setting\ syntax\ to\ control\ http://www.satisoft.com/tcltk/gridplus2/resize.html%|%resizing%|%\ behaviour.\n\ \ \ *\ New\ '''grid'''\ \"'''ns'''\"\ row\ stretching\ option.\n\ \ \ *\ New\ '''grid'''\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-attach%|%-attach%|%\ \"'''ns'''\"\ stretch\ option.\n\ \ \ *\ New\ widget\ option\ subsitution\ in\ http://www.satisoft.com/tcltk/gridplus2/embedded-grid.html#option-substitution%|%embedded\ widget\ grid%|%.\n\ \ \ *\ New\ Adds\ \"'''buttonWidth'''\"\ and\ \"'''entryWidth'''\"\ http://www.satisoft.com/tcltk/gridplus2/defaults.html%|%option\ database%|%\ options\n\n'''CHANGES:'''\n\n\ \ \ *\ Change\ '''tablelist'''\ to\ automatically\ set\ default\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%column\ names%|%.\n\ \ \ *\ Change\ '''gpselect'''\ syntax\ to\ (optionally)\ reverse\ order\ of\ \"match\"\ and\ \"column\"\ for\ tablelist\ row\ selection.\n\ \ \ *\ Change\ '''gpselect'''\ to\ allow\ use\ of\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%tablelist\ column\ names%|%.\n\ \ \ *\ Change\ '''gpset'''\ so\ that\ '''-sortfirst'''\ is\ disabled\ if\ there\ is\ a\ \"saved\"\ selection.\n\ \ \ *\ Change\ '''gpunset'''\ to\ allow\ use\ of\ patterns.\n\ \ \ *\ Change:\ http://www.satisoft.com/tcltk/gridplus2/example5.html%|%Example\ 5%|%\ and\ http://www.satisoft.com/tcltk/gridplus2/example6.html%|%Example\ 6%|%\ have\ been\ updated\ to\ demonstrate\ using\ the\ http://www.satisoft.com/tcltk/gridplus2/gpdb.html%|%gpdb%|%\ command.\n\ \ \ *\ Change:\ StarKit\ now\ includes\ http://www.famfamfam.com%|%FamFamFam%|%\ icon\ set.\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ with\ '''entry'''\ validation\ when\ using\ right-click\ menu\ in\ another\ entry.\n\ \ \ *\ Fix\ problem\ setting\ '''checkbutton'''\ default\ selected\ when\ -state\ is\ \"disabled\".\n\ \ \ *\ Fix\ problem\ setting\ '''radiobutton'''\ default\ selected\ when\ -state\ is\ \"disabled\".\n\ \ \ *\ Fix\ '''dropdown'''\ to\ use\ \"-state\"\ correctly.\n\ \ \ *\ Fix\ problem\ with\ '''tree'''\ keyboard\ traversal\ selection.\n\ \ \ *\ Fix\ problem\ with\ '''notebook'''\ pane\ naming.\n\ \ \ *\ Fix\ problem\ with\ '''text'''\ find\ dialog\ with\ patterns\ begining\ with\ \"-\".\n\ \ \ *\ Fix\ problem\ clearing\ '''date'''\ when\ \"'''dateIcon'''\"\ specified.\n\n----\n\nGRIDPLUS\ is\ a\ \"Grid\"\ based\ GUI\ builder\ system\ which\ builds\ on,\ simplifies\ and\nextends\ the\ existing\ Tk\ \[grid\]\ manager.\ GRIDPLUS\ layouts\ are\ defined\ as\ a\nhierarchy\ of\ grids.\ Each\ cell\ in\ a\ grid\ consists\ of\ two\ elements.\ These\ \nwill\ usually\ be\ a\ text\ label\ and\ some\ other\ widget\ such\ as\ an\ entry.\ It\ is\nalso\ allowed\ to\ have\ just\ one\ element\ in\ a\ cell,\ or\ a\ cell\ which\ is\ empty.\nGRIDPLUS\ grids\ can\ also\ be\ stretched\ to\ neatly\ fill\ the\ cells\ in\ which\nthey\ are\ positioned.\ While\ the\ GRIDPLUS\ grid\ can\ be\ used\ \"native\",\nGRIDPLUS\ commands/options\ exist\ to\ create\ grids\ of\ Buttons,\ Checkbuttons,\ Date-selectors,\nDropdowns\ (comboboxes),\ Entries,\ Links,\ Menubuttons\ and\ Radiobuttons.\ All\ places\ where\ntext\ can\ be\ displayed\ make\ use\ of\ the\ Tcl\ message\ catalog\ facility.\ \n\nIn\ fact\ GRIDPLUS\ is\ much\ more\ than\ an\ alternative\ to\ the\ grid\ geometry\ manager,\nit\ provides\ most,\ if\ not\ all,\ of\ the\ facilities\ required\ to\ build\ complete\ screens/windows.\nIn\ many\ cases,\ using\ GRIDPLUS\ to\ code\ an\ application\ GUI\ will\ be\ quicker\ than\ using\ a\ \"Visual\"\nscreen\ design\ tool.\ Although\ aimed\ at\ producing\ data\ entry/update/display\ form\ screens\ for\ndatabase\ applications,\ it\ may\ be\ useful\ for\ other\ tasks.\ \n\nGRIDPLUS\ also\ includes\ the\ following\ features:-\ \n\n\ \ \ *\ Scrollable\ text\ widget.\ \n\ \ \ *\ Scrollable\ tablelist.\n\ \ \ *\ Scrollable\ tree\ widget.\n\ \ \ *\ Calendar\ style\ date\ display\ selector.\n\ \ \ *\ Basic\ notebook\ type\ widget.\ \n\ \ \ *\ Simple\ drop-down\ menus.\ \n\ \ \ *\ Simple\ method\ to\ specify\ widget\ traversal\ order\ when\ using\ the\ TAB\ key\ to\ navigate\ the\ screen.\ \n\ \ \ *\ A\ group\ facility\ to\ enable/disable\ groups\ of\ widgets\ and\ menu\ options.\ \n\ \ \ *\ Facility\ to\ include\ non-GRIDPLUS\ widgets\ in\ groups.\ \n\ \ \ *\ Simple\ pattern/procedure\ based\ entry\ validations.\ \n\ \ \ *\ Works\ with\ toplevel\ windows.\ \n\ \ \ *\ ...and\ much,\ much\ more.\n\n'''Here\ Are\ Some\ Screens\ Created\ Using\ GRIDPLUS2:'''\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample2-1.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample3-1.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample4-1.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample4-2.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/gpexample6-2.gif\]\n\n----\n\n**\ RELEASE\ HISTORY:\ **\n\n\[adavis\]\ 2013-07-03:\ GRIDPLUS\ 2.10\ has\ been\ released\ and\ is\ available\ from:-\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/spinbox.html%|%spinbox%|%\ command/mode.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/pane.html%|%pane%|%\ command/mode.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/defaults.html#gpoptions%|%gpoptions%|%\ command\ to\ simplify\ setting\ options\ database\ for\ GRIDPLUS.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html#icon%|%dateselector%|%\ option\ to\ display\ icon\ instead\ of\ downarrow.\n\ \ \ *\ New\ popup/balloon\ help\ ('''*Gridplus.helpDisplayTime''')\ display\ duration\ option.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpselect.html#syntax%|%gpselect%|%\ (backward\ compatible)\ syntax.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-menu%|%-menu%|%\ option\ to\ specify\ user\ defined\ right-click\ invoked\ menu\ for\ http://www.satisoft.com/tcltk/gridplus2/text.html#user-defined-menu%|%text%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-seeinsert%|%-seeinsert%|%\ option\ for\ text.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-seeinsert%|%-seeinsert%|%\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-takefocus%|%-takefocus%|%\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-selectpage%|%-selectpage%|%\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-names%|%-names%|%\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%tablelist%|%.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-options%|%\"=name\"%|%\ column\ option\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%tablelist%|%\ to\ set\ column\ names\ -\ '''(Potential\ compatibility\ issue)'''.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-names%|%-names%|%\ option\ for\ gpset\ to\ set\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#colums-names%|%tablelist%|%t\ column\ names.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-titles%|%-titles%|%\ option\ for\ gpset\ to\ set\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-names%|%tablelist%|%\ column\ titles.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-index%|%-index%|%\ option\ for\ gpset\ to\ set/select\ a\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-index%|%-index%|%\ option\ for\ gpselect\ to\ set/select\ a\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html%|%tablelist%|%\ row.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpset.html#gpmap%|%gpmap%|%\ option\ to\ map\ to\ dict.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/subst.html#command-substitution%|%Command\ Substitution%|%\ facility\ for\ '''Grid/Layout'''\ and\ '''Notebook'''.\n\ \ \ *\ New\ interface\ to\ create\ http://www.satisoft.com/tcltk/gridplus2/user-defined-widgets.html%|%User\ Defined\ Grid\ Widgets%|%\ for\ http://www.satisoft.com/tcltk/gridplus2/widget.html%|%widget%|%\ grid.\n\n'''CHANGES:'''\n\n\ \ \ *\ Change\ popup/balloon\ help\ to\ display\ at\ pointer\ position\ to\ improve\ look/feel\ for\ larger\ widgets.\n\ \ \ *\ Change\ to\ allow\ '''\"@\"'''\ embedded\ widgets\ to\ work\ in\ embedded\ grids.\n\ \ \ *\ Change:\ Support\ for\ '''\"&w\"'''\ embedded\ widget\ '''grid'''\ syntax\ removed\ -\ '''(Potential\ compatibility\ issue)'''.\n\ \ \ *\ Change:\ http://www.satisoft.com/tcltk/gridplus2/example7.html%|%Example7%|%\ has\ been\ updated\ to\ demonstrate\ using\ the\ (PNG)\ icon\ image\ files\ facility\ in\ http://www.satisoft.com/tcltk/icons/%|%ICONS%|%\ version\ 2.\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ setting\ '''tablelist'''\ sort\ column\ when\ first\ column\ is\ '''integer/real'''.\n\ \ \ *\ Fix\ problem\ with\ '''tablelist'''\ row\ selection.\n\ \ \ *\ Fix\ problem\ with\ clipboard\ operations\ when\ widget\ with\ focus\ not\ of\ suitable\ type.\n\ \ \ *\ Fix\ problem\ with\ '''gpfind'''\ for\ patterns\ begining\ with\ '''\"-\"'''.\n\ \ \ *\ Fix\ problem\ with\ menu\ separator\ problem\ with\ cascade\ style\ menus.\n\n----\n\n\n\[adavis\]\ 2012-07-12:\ GRIDPLUS\ 2.9\ has\ been\ released\ and\ is\ available\ from:-\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ with\ value\ of\ '''tree'''\ node\ containing\ spaces.\ \n\ \ \ *\ Fix\ problem\ with\ '''container'''\ frame\ sizing.\ \n\ \ \ *\ Fix\ problem\ with\ some\ validations\ in\ \"contained\"\ toplevels.\ \n\ \ \ *\ Fix\ problem\ with\ '''clear'''\ to\ ensure\ validation\ pop-up\ messages\ are\ withdrawn.\n\n----\n\n\[adavis\]\ 2012-04-04:\ GRIDPLUS\ 2.8\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ ''http://www.satisoft.com/tcltk/gridplus2/manpage.html#widget-default%|%=default%|%''\ \ option\ to\ specify\ default\ dropdown\ option.\ \n\ \ \ *\ New\ ''http://www.satisoft.com/tcltk/gridplus2/manpage.html#widget-action%|%~command%|%''\ link\ option\ to\ specify\ command\ to\ invoke\ when\ link\ is\ selected.\ \n\n'''CHANGES'''\n\n\ \ \ *\ '''checkbutton'''\ \ modified\ so\ that\ \"+\"\ option\ always\ results\ in\ a\ checked\ button.\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ '''gpset'''\ to\ ensure\ that\ window\ is\ updated.\ \n\ \ \ *\ Fix\ problem\ clearing\ '''radiobutton'''\ group\ values.\ \n\ \ \ *\ Fix\ '''link'''\ indent\ \"-\"\ option\ problem.\ \n\ \ \ *\ Fix\ gap\ in\ theme\ style\ border\ when\ text\ is\ null\ (Due\ to\ '''::ttk::labelframe'''\ bug?)\ \n\n----\n\n\[adavis\]\ 2012-02-27:\ GRIDPLUS\ 2.7\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-locale%|%-locale%|%\ option\ for\ set\ to\ explicitly\ set\ locale.\ This\ can\ be\ used\ to\ ensure\ that\ correct\ locale\ specific\ month/day\ text\ is\ used\ for\ '''calendar/dateselector'''\ when\ the\ month/day\ names\ returned\ by\ '''clock'''\ are\ not\ in\ accordance\ with\ the\ default\ locale.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpdefault.html%|%gpdefault%|%\ command.\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpdate.html%|%gpdate%|%\ command.\n\ \ \ *\ New\ ''http://www.satisoft.com/tcltk/gridplus2/manpage.html#widget-default%|%=default%|%''\ widget\ option\ to\ specify\ default\ http://www.satisoft.com/tcltk/gridplus2/entry.html%|%entry%|%\ and\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html#setting-default%|%date%|%\ values.\n\ \ \ *\ New\ '''integer/real'''\ sort\ options\ for\ http://www.satisoft.com/tcltk/gridplus2/tablelist.html#column-options%|%tablelist%|%\n\ \ \ *\ New\ option\ to\ set\ a\ fixed\ http://www.satisoft.com/tcltk/gridplus2/grid.html#widget-text%|%label\ width%|%\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/optionset.html%|%*Gridplus.optionDefaultStyle%|%\ option.\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ posting\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html%|%dateselector%|%\ in\ a\ topmost\ http://www.satisoft.com/tcltk/gridplus2/window.html%|%window%|%.\n\ \ \ *\ Fix\ problem\ clearing\ http://www.satisoft.com/tcltk/gridplus2/radiobutton.html%|%radiobutton%|%\ group\ values.\n\n\[adavis\]\ (29th\ February\ 2012):\ I\ have\ corrected\ an\ error\ in\ the\ documentation\ example\ for\ setting\ default\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html#setting-default%|%date%|%\ values.\ Both\ the\ website\ and\ the\ documentation\ download\ have\ been\ updated.\n\n----\n\n\[adavis\]\ 2010-10-25:\ GRIDPLUS\ 2.6\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/manpage.html#option-action%|%single/space%|%\ action\ for\ http://www.satisoft.com/tcltk/gridplus2/tree.html#action%|%tree%|%\ command\ mode.\ \n\ \ \ *\ New\ ISO\ date\ http://www.satisoft.com/tcltk/gridplus2/validations.html#date%|%validation%|%.\ \n\ \n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ with\ http://www.satisoft.com/tcltk/gridplus2/container.html%|%containers%|%\ on\ Unix.\n\n----\n\n\[adavis\]\ 2009-11-11:\ GRIDPLUS\ 2.5\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/calendar.html%|%calendar%|%\ command\ mode.\ \n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/gpnav.html%|%gpnav%|%\ command.\ \n\ \ \ *\ New\ dropdown\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html%|%date\ selector%|%\ grid\ widget.\ \n\ \ \ *\ Extra\ pre-defined\ validations.\ \n\ \ \ *\ New\ \"trim\"\ option\ for\ validations.\ \n\ \ \ *\ New\ button\ \"!+\"\ widget\ option.\ \n\ \ \ *\ New\ \"-overrideredirect\"\ option\ for\ GRIDPLUS\ window.\ \n\ \ \ *\ New\ pre-defined\ optionset.\ \n\n\n'''CHANGES:'''\n\n\ \ \ *\ '''gpset'''\ and\ '''gpselect'''\ modified\ to\ set\ values\ for\ \"calendar\"\ and\ \"date\"\ selector.\ \n\ \ \ *\ Pressing\ the\ Enter\ key\ while\ a\ button\ is\ highlighted\ will\ now\ invoke\ the\ button\ command.\ \n\ \ \ *\ New\ behaviour\ for\ validations\ when\ loosing\ focus\ to\ toplevel\ window.\n\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ various\ validation\ problems\ when\ validated\ field\ looses\ focus\ to\ a\ toplevel\ window.\n\ \ \ *\ Fix\ problem\ with\ popup\ validation\ error\ messages\ in\ notebooks.\ \n\ \ \ *\ Fix\ \"num\"\ validation\ pattern.\ \n\ \ \ *\ Fixes\ \"expected\ integer\"\ font\ problem\ due\ to\ Tcl/Tk\ bug.\ \n\n'''EXAMPLES:'''\n\nHere\ are\ examples\ of\ the\ the\ http://www.satisoft.com/tcltk/gridplus2/calendar.html%|%calendar%|%\ and\ http://www.satisoft.com/tcltk/gridplus2/dateselector.html%|%date\ selector%|%\ widgets:-\n\n\[http://www.satisoft.com/tcltk/gridplus2/calendar-example2.gif\]\n\n\[http://www.satisoft.com/tcltk/gridplus2/dateselector-example3.gif\]\n\n----\n\n\[adavis\]\ 2009-09-06:\ GRIDPLUS\ 2.4\ has\ been\ released\ and\ is\ available\ from:-\n\nhttp://www.satisoft.com/tcltk/gridplus2\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ much\ simpler/clearer\ syntax\ for\ http://www.satisoft.com/tcltk/gridplus2/embedded-grid.html%|%Embedded\ Widget\ Grids%|%.\ \n\ \ \ *\ New\ \"-spacestretch\"\ option\ for\ widget\ and\ grid\ to\ specify\ which\ links\ between\ columns\ can\ stretch.\ \n\ \ \ *\ New\ \"-stretch\"\ option\ for\ widget\ and\ grid\ to\ specify\ which\ column\ contents\ can\ stretch.\ \n\ \ \ *\ New\ \"-basename\"\ option\ for\ grid\ to\ specify\ the\ basename\ for\ data\ items\ and\ commands.\ \n\ \ \ *\ New\ \"#style\"\ widget\ option.\ \n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/define.html%|%define%|%\ command\ mode.\ \n\ \ \ *\ New\ radiobutton\ groups\ facility.\ \n\ \ \ *\ New\ window\ http://www.satisoft.com/tcltk/gridplus2/resize.html%|%resizing%|%\ facility.\ \n\ \ \ *\ New\ http://www.satisoft.com/tcltk/gridplus2/pack.html%|%pack%|%\ command\ mode\ to\ support\ resizing.\ \n\ \ \ *\ New\ \"-command\"\ option\ for\ text\ to\ specify\ a\ command\ to\ be\ invoked\ when\ the\ content\ of\ the\ text\ widget\ is\ modified.\ \n\n\n'''CHANGES:'''\n\n\ \ \ *\ '''gpselect'''\ to\ \"see\"\ the\ selected\ row\ for\ tablelist.\ \n\ \ \ *\ It\ is\ no\ longer\ necessary\ to\ name\ the\ widget\ ID\ for\ radiobuttons.\ \n\ \ \ *\ All\ examples\ have\ been\ updated\ to\ use\ new\ syntax/facilities/recommendations.\ \n\ \ \ *\ Examples\ 2,\ http://www.satisoft.com/tcltk/gridplus2/example4.html%|%4%|%,\ 5\ and\ 6\ have\ been\ updated\ to\ demonstrate\ embedded\ widget\ grids.\ \n\ \ \ *\ http://www.satisoft.com/tcltk/gridplus2/example7.html%|%Example\ 7%|%\ has\ been\ updated\ to\ demonstrate\ resizing.\ \n\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fix\ problem\ whereby\ popup\ validation\ error\ messages\ were\ not\ cleared\ properly\ for\ toplevel\ windows.\ \n\ \ \ *\ Fix\ problem\ with\ popup\ validation\ error\ messages\ in\ notebooks.\ \n\ \ \ *\ Fix\ date\ validations.\ \n\ \ \ *\ Fix\ problem\ with\ entry\ popup\ edit\ menu\ in\ contained\ windows.\ \n\ \ \ *\ Fix\ problem\ creating\ default\ label\ widgets\ for\ embedded\ grids.\ \n\ \ \ *\ Fix\ problem\ setting\ dropdown\ using\ '''gpmap'''.\ \n\ \ \ *\ Fix\ problem\ in\ widget\ displaying\ a\ label\ only\ column\ when\ default\ widget\ is\ button/link/menubutton.\ \n\n\n----\n\n\[adavis\]\ 2008-05-27:\ GRIDPLUS\ 2.3\ has\ been\ released.\n\n'''ENHANCEMENTS:'''\n\n\ \ \ *\ New\ \"-columnformat\"\ option\ for\ widget\ and\ grid\ to\ specify\ the\ width\ of\ the\ left\ and\ right\ elements\ of\ each\ column.\ This\ makes\ it\ possible\ to\ line\ up\ labels\ and\ widgets\ in\ separately\ created\ grids.\ \n\ \ \ *\ New\ \"-validatepopup\"\ option\ to\ enable\ \"pop-up\"\ validation\ error\ messages.\ \n\ \ \ *\ New\ \"-validateauto\"\ option\ for\ widget\ to\ determine\ whether\ entry\ validations\ are\ to\ be\ automatic\ or\ forced.\n\ \ \ *\ New\ \"-validate\"\ option\ for\ tree\ and\ tablelist\ to\ invoke\ entry\ validations\ when\ a\ tree/tablelist\ node/row\ is\ selected.\ \n\ \ \ *\ New\ facility\ to\ specify\ entry\ validation\ error\ messages\ for\ individual\ widgets.\ \n\ \ \ *\ New\ \"`!@`\"\ widget\ option\ to\ specify\ that\ an\ entry\ may\ be\ null\ when\ a\ validation\ is\ specified.\ For\ example:\ \"`!@int`\"\ means\ entry\ may\ be\ null\ or\ integer.\n\ \ \ *\ New\ \"`?!`\"\ widget\ option\ to\ set\ pop-up/balloon\ text\ to\ be\ same\ as\ validation\ error\ message.\ \n\ \ \ *\ The\ \"-entrycommand\"\ option\ can\ be\ used\ to\ specify\ an\ event\ to\ be\ generated.\ This\ can\ be\ used\ to\ allow\ the\ enter\ key\ to\ \"Tab\"\ to\ the\ next\ field.\ \n\ \ \ *\ The\ \"-entrycommand\"\ can\ now\ be\ set\ using\ the\ option\ database.\ \n\ \ \ *\ New\ \"-fixed\"\ option\ for\ widget\ grid\ to\ specify\ maximum\ number\ of\ characters\ allowed\ in\ an\ entry\ field.\ \n\ \ \ *\ New\ widget\ option\ for\ entry\ widgets\ to\ allow\ both\ display\ size\ and\ maximum\ number\ of\ characters\ allowed\ to\ be\ specified\ for\ an\ individual\ widget.\ \n\ \ \ *\ New\ \"-topmost\"\ option\ for\ window\ to\ determine\ whether\ a\ toplevel\ \ window\ will\ be\ the\ topmost\ window.\ \n\ \ \ *\ New\ facility\ to\ allow\ accelerator\ keys\ for\ menus.\ \n\ \ \ *\ New\ \"-labelanchor\"\ option\ for\ grid\ and\ layout\ to\ determine\ the\ position\ of\ the\ frame\ label\ text.\ \n\ \ \ *\ New\ \"Find\"\ option\ added\ to\ text\ right-click\ pop-up\ menu.\ \n\ \ \ *\ New\ '''gpfind/gpfind_dialog'''\ commands\ to\ perform\ find\ operations\ on\ text\ widgets.\ \n\ \ \ *\ New\ '''gpcut/gpcopy/gppaste/gpclear'''\ commands\ to\ perform\ cut/copy/paste/clear\ operations\ on\ text\ and\ entry\ widgets.\ \n\ \ \ *\ New\ Example\ \"Text\ Editor\"\ application.\ See:\ \[http://www.satisoft.com/tcltk/gridplus2/example7.html\]\n\n\n'''CHANGES:'''\n\n\ \ \ *\ When\ autogroup\ facility\ is\ in\ use\ the\ initial\ widget\ state\ is\ set\ to\ the\ opposite\ of\ the\ state\ specified\ for\ when\ the\ widget\ is\ modified.\ For\ example:\ If\ \"`>mygroup`\"\ widget\ option\ is\ specified\ the\ widget\ will\ be\ created\ as\ \"disabled\".\ \n\ \ \ *\ The\ menu\ seprator\ can\ now\ be\ specified\ using\ \"=\"\ to\ be\ consistent\ with\ grid/layout.\ The\ old\ (\"-\")\ method\ still\ works.\ \n\ \ \ *\ The\ menu\ command\ can\ now\ be\ specified\ using\ \"~\"\ to\ be\ consistent\ with\ widget.\ The\ old\ (\".\")\ method\ still\ works.\ \n\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Date\ validations\ now\ work\ for\ dates\ prior\ to\ 01/01/1970.\ \n\ \ \ *\ Text\ right-click\ pop-up\ menu\ only\ shows\ \"Copy\"\ when\ created\ as\ \"disabled\".\ \n\ \ \ *\ \"\{expand\}\"\ changed\ to\ \"\{*\}\"\ for\ Tcl8.5b1\ and\ later.\ \n\ \ \ *\ Fix\ problem\ with\ validations\ in\ contained\ windows.\ \n\ \ \ *\ Notebook\ tab\ text\ now\ uses\ message\ catalog.\ \n\ \ \ *\ The\ '''text'''\ default\ font\ is\ set\ to\ \"TkTextFont\"\ to\ deal\ with\ font\ change\ in\ recent\ (production)\ 8.5\ releases.\ \n\n\n----\n\n\[adavis\]\ 2007-07-26:\ \ GRIDPLUS\ 2.2\ has\ been\ released.\n\n'''ENHANCEMENTS:'''\n\ \n\ \ \ *\ New\ \"-icons\"\ option\ for\ '''tree'''\ to\ determine\ whether\ or\ not\ icons\ are\ displayed.\n\n'''CHANGES:'''\n\n\ \ \ *\ The\ '''gpmap'''\ modified\ to\ map\ to\ a\ dropdown\ value\ (which\ makes\ much\ more\ sense!!).\n\ \ \ *\ The\ '''window'''\ command\ mode\ has\ been\ modified\ so\ that\ (for\ a\ contained\ window)\ the\ \"windowcommand\"\ is\ invoked\ when\ a\ window\ of\ the\ same\ name\ already\ exists.\n\n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ Fixed\ '''container'''\ problem\ caused\ by\ latest\ Tcl/Tk\ release.\n\ \ \ *\ Fixed\ '''layout'''\ edge\ padding\ problem\ for\ some\ layouts\ using\ spanned\ columns.\n\n----\n\n\[adavis\]\ 2007-02-28:\ GRIDPLUS\ 2.1\ has\ been\ released.\n\n'''ENHANCEMENTS:'''\n\ \n\ \ \ *\ New\ GRIDPLUS\ '''container'''\ command\ mode\ to\ create\ a\ frame\ which\ can\ contain\ toplevel\ windows.\ \n\ \ \ *\ New\ '''gpselect'''\ command\ to\ select\ a\ tablelist\ row\ or\ tree\ node.\ \n\ \ \ *\ New\ '''gpinsert'''\ command\ to\ insert\ a\ tablelist\ row\ or\ text\ line.\ \n\ \ \ *\ The\ '''gpmap'''\ command\ can\ now\ also\ map\ array\ elements\ to\ GRIDPLUS\ widget\ values.\n\ \ \ *\ The\ window\ command\ mode\ now\ has\ an\ \"-in\"\ option\ to\ put\ the\ window\ into\ a\ container.\n\ \ \ *\ Variable\ Substitution\ now\ also\ works\ for\ the\ notebook\ layout.\ \n\ \ \ *\ The\ text\ command\ mode\ now\ has\ an\ \"-font\"\ option\ to\ set\ the\ display\ font\ when\ not\ using\ tags.\n\n'''CHANGES:'''\n\n\ \ \ *\ The\ -title\ option\ for\ the\ GRIDPLUS\ layouts\ with\ a\ name\ ending\ with\ \".main\"\ no\ longer\ sets\ the\ window\ title.\ \n\n'''BUG\ FIXES:'''\n\n\ \ \ *\ The\ Notebook\ now\ works\ in\ toplevel\ windows.\ \n\ \ \ *\ The\ tablelist\ \"-columnsort\"\ now\ works.\ \n\n----\n\n\[adavis\]\ 2006-10-10:\ GRIDPLUS\ 2.0\ has\ been\ released.\n\nGRIDPLUS2\ is\ a\ \[Tile\]\ based\ version\ of\ \[GRIDPLUS\].\ Whereas\ GRIDPLUS\ Version\ 1\nhas\ features\ to\ control\ widget\ style\ as\ well\ as\ window\ layout\ -\ GRIDPLUS2\nassumes\ that\ the\ Tile\ style\ engine\ facilities\ will\ be\ used\ to\ control\nwidget\ styles.\ GRIDPLUS2\ instead\ provides\ '''significantly\ enhanced'''\ screen\nlayout/design\ functionality\ which\ can\ further\ reduce\ the\ coding\ required\ to\ncreate\ the\ desired\ window/widget\ layout.\n\nOne\ of\ the\ main\ enhancements\ is\ the\ new\ GRIDPLUS2\ Widget\ Grid\n\[http://www.satisoft.com/tcltk/gridplus2/widget.html\].\ With\ GRIDPLUS1\nit\ was\ only\ possible\ to\ create\ one\ type\ of\ widget\ in\ a\ particular\ Grid\n(Buttons,\ checkbuttons,\ entries\ etc.).\ In\ order\ to\ mix\ widgets\ in\ a\ Grid\nit\ was\ necessary\ to\ create\ additional\ Grids\ for\ the\ other\ widget\ types\ and\nthen\ \"embed\"\ them\ into\ a\ parent\ Grid.\ The\ new\ widget\ Grid\ allows\ all\ of\ the\nGRIDPLUS\ widget\ types\ to\ be\ mixed\ in\ the\ same\ Grid.\ \n\nThere\ are\ many\ more\ changes\ and\ enhancements\ -\ See\ the\ GRIDPLUS2\ Readme\n\[http://www.satisoft.com/tcltk/gridplus2/readme-20.html\]\ for\ further\ details.\n\n\n\n----\n\n**\ COMMENTS:\ **\n\n\[AET\]\ 2007-03-01:\ As\ usual,\ Adrian,\ A\ top-notch\ offering.\ \ A\ well\ thought\ out\ utility,\ and\ documentation\ that\ is\ exemplory.\ \ Thanks\ very\ much.\ \ I\ am\ still\ struggling\ to\ put\ together\ a\ database\ using\ GRIDPLUS,\ but\ will\ be\ porting\ it\ to\ GRIDPLUS\ 2\ as\ soon\ as\ I\ can.\ \ \n\n----\n\n\[Ro\]\ 2007-03-03:\ \ Fantastic\ project!\ \ Currently\ resizable\ toplevels\ are\ not\ supported,\ but\ you\ can\ do\ it\ with\ \"wm\ resizable\ .mytoplevel\ 1\ 1\"\ if\ you\ really\ need\ to.\ \ I\ don't\ think\ it's\ necessary\ for\ these\ kinds\ of\ apps\ (database\ +\ well\ behaved\ windows\ apps)\ but\ it's\ interesting\ to\ know.\ \ Thanks\ Adrian\ for\ this\ superb\ package.\n\n----\n\n\[WHD\]:\ The\ GRIDPLUS2\ home\ page\ says\ that\ it's\ only\ been\ tested\ on\ Windows\ XP.\ \ Has\ anyone\ used\ it\ successfully\ on\ Linux?\n\nEffe:\ I\ didn't\ check\ each\ and\ every\ detail,\ but\ GRIDPLUS\ 2.4\ works\ well\ on\ Linux\ (tested\ with\ ActiveTcl\ 8.6\ on\ fluxflux\ Linux).\n\n----\n\n\[MHo\]\ 2009-11-10:\n\ \ \ *\ The\ new\ version,\ 2.5,\ should\ be\ noted\ and\ documented\ here...\n\ \ \ *\ Can't\ get\ the\ tree\ to\ work:\ ERROR:\ Invalid\ file\ (C:/Programme/Tcl/lib/tcl8.5/tkIcons)\n\n\[adavis\]\ (11th\ November\ 2009):\ I'm\ assuming\ that\ \"C:/Programme/Tcl/lib/tcl8.5\"\ is\ your\ Tcl\ library\ path\ (\[info\ library\])\ -\ If\ this\ is\ the\ case,\ have\ you\ installed/copied\ the\ \"TkIcons\"\ file\ to\ this\ location?\ If\ this\ isn't\ the\ problem\ can\ you\ give\ me\ an\ example?\ \[MHo\]\ No\ I\ forgot\ this...\n\n\[MHo\]\ 2009-11-14:\n\nThis\ works:\n======\ngpset\ .mytree2\ \{\n\ \ \ \ /a\n\ \ \ \ /a/b\n\ \ \ \ /a/b/c\n\}\n======\nThis\ one\ does\ not\ work:\n======\ngpset\ .mytree2\ \{\n\ \ \ \ /a/b\n\ \ \ \ /a/b/c\n\}\n======\n\nDoes\ this\ mean\ that\ trees\ always\ have\ to\ begin\ with\ the\ root\ element?\n\n\[adavis\]\ 2009-11-16:\ More\ generally,\ it\ is\ required\ that\ the\ parent\ for\ a\ node\ be\ created\ explicitly,\ unless\ the\ parent\ is\ the\ root.\n\n----\n\n\[MHo\]\ 2009-12-05:\ More\ questions:\n\n\ \ \ 1.\ In\ the\ tree\ widget,\ how\ do\ I\ get\ the\ horizontal\ scrollbar\ to\ work?\ `'''-scroll\ x'''`\ or\ `'''-scroll\ xy'''`\ don't\ work,\ only\ `'''-scroll\ y'''`\ works.\n\ \ \ 1.\ If\ I\ specify\ `'''-action\ single'''`\ and\ `'''-command\ test'''`\ in\ a\ gridplus\ tree\ statement,\ how\ do\ I\ know\ which\ item\ gets\ clicked?\ It\ seems\ that\ the\ callback\ proc\ didn't\ get\ any\ arguments.\ Does\ some\ kind\ of\ ''%var\ substitution''\ take\ place\ like\ with\ ''bind''?\n\ \ \ 1.\ The\ documentation\ states:\ ''...Specifies\ text\ to\ be\ displayed\ for\ node\ ('''Must\ not\ begin\ with'''\ \"+\",\ \":\"\ -or-\ '''\"/\"''')...''.\ But\ the\ various\ examples\ for\ `'''gpset'''`\ show\ that\ inserting\ entries\ like\ `'''/a/b/c'''`\ is\ perfectly\ ok...?\n\n\[adavis\]\ 2009-12-07:\n\ \ \ 1.\ When\ I\ was\ working\ on\ GRIDPLUS\ 2.5\ the\ '''ttk\ treeview'''\ didn't\ support\ \"X\"\ direction\ scrolling.\ I\ tried\ it\ recently\ with\ Tcl\ 8.5.8\ and\ it\ still\ didn't\ seem\ to\ work.\n\ \ \ 1.\ The\ value\ of\ the\ array\ item\ for\ the\ '''tree'''\ will\ be\ set\ to\ the\ selected\ node.\ For\ example:\ If\ you\ created\ a\ '''tree'''\ called\ `'''.mytree`'''\ then\ the\ name\ of\ the\ node\ can\ be\ accessed\ as\ `'''\$(.mytree)`'''\ -\ See\ \"''Selecting\ a\ Tree\ Node''\"\ in\ http://www.satisoft.com/tcltk/gridplus2/tree.html\n\ \ \ 1.\ This\ applies\ when\ specifying\ alternative\ display\ text\ as\ a\ node\ option.\ By\ default,\ the\ last\ part\ of\ the\ nodename\ (after\ the\ last\ \"/\")\ is\ the\ text\ displayed\ for\ the\ node\ in\ the\ '''tree'''\ display.\ It\ is\ possible\ to\ specify\ alternative\ text\ -\ See\ \"''Setting\ Specific\ Text\ For\ a\ Node''\"\ in\ http://www.satisoft.com/tcltk/gridplus2/tree.html#tree-gpset\n\n\[MHo\]\ 2009-12-07:\n\n\ \ \ *\ Expanding\ and\ collapsing\ a\ node\ with\ the\ (space)-key\ does\ not\ trigger\ the\ callback,\ while\ klicking\ on\ the\ symbol\ does...\n\n\[adavis\]\ 2009-12-08:\ Currently\ that\ is\ true.\n\nHowever\ -\ Adding\ a...\n\n\ \ single/space\ \{\n\ \ \ \ \ \ bind\ \$options(name).tree\ <Button-1>\ \"after\ 1\ \[list\ ::gridplus::gpTreeSelect\ \$options(name)\ .\$window\ \$options(-validate)\ \[list\ \$command\]\]\"\n\ \ \ \ \ \ bind\ \$options(name).tree\ <space>\ \ \ \ \"after\ 1\ \[list\ ::gridplus::gpTreeSelect\ \$options(name)\ .\$window\ \$options(-validate)\ \[list\ \$command\]\]\"\n\ \ \}\n\n...case\ to\ the\ \"`\$options(-action)`\"\ switch\ in\ '''::gridplus::gpTree'''\ will\ add\ an\ option\ (`'''-action\ single/space`''')\ to\ implement\ this\ functionality.\ I\ will\ include\ this\ modification\ in\ the\ next\ GRIDPLUS2\ release.\n\n----\n\n\[nb\]\ 2010-09-05:\n\nReally\ good\ stuff\ Adrian\nI've\ been\ putting\ off\ doing\ a\ complex\ db/form\ app\ for\ awhile\ now\ due\ to\ \"packing\ hell\"\ that\ comes\ along\ with\ these\ forms.I'm\ blowing\ this\ app\ off\ like\ nothing\ with\ your\ package,\ bravo...\nIf\ I'm\ not\ careful,\ I'm\ risking\ finishing\ it\ too\ early\ \;-)\n\nOTOH,\ Maybe\ I'm\ missing\ something\ obvious,\ I\ went\ through\ the\ docs\ but\ did\ not\ see\ anywhere\ a\ way\ to\ set\ the\ state\ of\ individual\ widgets\ (as\ opposed\ to\ the\ whole\ grid),\ e.g.\ set\ an\ entry\ to\ disabled.\ \n\nregards\n\n\[adavis\]\ 2010-02-05:\ In\ GRIDPLUS2\ there\ are\ a\ couple\ of\ ways\ to\ achieve\ this\ -\ depending\ on\ what\ you\ are\ trying\ to\ do.\n\nIf\ you\ simply\ want\ to\ set\ the\ state\ of\ an\ individual\ widget\ when\ it\ is\ created\ you\ can\ use\ the\ \"<\"\ (create\ as\ disabled)\ or\ \">\"\ (create\ as\ enabled)\ widget\ option.\ The\ GRIDPLUS2\ documentation\ \ http://www.satisoft.com/tcltk/gridplus2/example1.html%|%Example\ 1%|%\ uses\ this\ for\ the\ \"ID\"\ field.\n\nYou\ can\ also\ use\ the\ http://www.satisoft.com/tcltk/gridplus2/groups.html%|%Groups%|%\ facility\ to\ enable/disable\ named\ groups\ of\ widgets.\n\n\[nb\]\ 2010-05-08:\n\nI've\ also\ found\ the\ following\ very\ helpful\ which\ is\ referenced\ in\ the\ docs\n\nhttp://www.satisoft.com/tcltk/gridplus2/reference.html#modes\n\n\"It\ maybe\ neccessary\ to\ reference\ Tablelist,\ Text\ or\ Tree\ widgets\ directly\ in\ \norder\ to\ get\ information\ about\ the\ widget\ -or-\ to\ set\ an\ attribute\ not\ available\ \nthrough\ GRIDPLUS.\"\n\nGRIDPLUS\ uses\ a\ simple\ widget\ naming\ scheme\ which\ makes\ this\ easy.\n\nExamples\ assuming\ a\ GRIDPLUS\ widget\ called\ \".mywidget\"\ of\ each\ of\ the\ \nabove\ types:-\n\nTablelist:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .mywidget.tablelist\n\nText:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .mywidget.text\n\nTree:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .mywidget.tree\n\nFor\ example:\ To\ get\ the\ number\ of\ rows\ in\ a\ tablelist:-\n\n.mywidget.tablelist\ size\ \n\n\nFigure\ I'd\ save\ someone\ sometime\ \;-)\n\n----\n\n\[milarepa\]\ 2010-10-17\ 07:54:41:\n\nHi,\ I\ am\ testing\ gridplus\ 2.5\ on\ Linux.\ I\ am\ trying\ to\ run\ the\ \"Container\ Example\ 1\"\ http://www.satisoft.com/tcltk/gridplus2/container.html%|%GRIDPLUS2\ Container%|%\ without\ success.\ I\ tested\ it\ with\ both\ tcl/tk\ 8.5.9\ and\ 8.6b1\ versions\ and\ both\ Ubuntu\ 10.10\ and\ Archlinux\ and\ is\ not\ working\ properly.\ It\ does\ only\ works\ on\ Windows\ XP.\ Please\ any\ help\ or\ thoughts.\ This\ is\ the\ error\ log:\n\n======none\ninvalid\ command\ name\ \".win2\"\ninvalid\ command\ name\ \".win2\"\n\ \ \ \ while\ executing\n\"\$options(name)\ configure\ -menu\ \{\}\"\n\ \ \ \ (procedure\ \"gpClear\"\ line\ 24)\n\ \ \ \ invoked\ from\ within\n\"gpClear\"\n\ \ \ \ (procedure\ \"::gridplus::gridplus\"\ line\ 116)\n\ \ \ \ invoked\ from\ within\n\"::gridplus::gridplus\ clear\ .win2\"\n\ \ \ \ (\"eval\"\ body\ line\ 1)\n\ \ \ \ invoked\ from\ within\n\"eval\ \$gpInfo(\$options(-in):wcmd)\"\n\ \ \ \ (procedure\ \"gpWindow\"\ line\ 29)\n\ \ \ \ invoked\ from\ within\n\"gpWindow\"\n\ \ \ \ (procedure\ \"gridplus\"\ line\ 138)\n\ \ \ \ invoked\ from\ within\n\"gridplus\ window\ .win1\ -in\ .mycont\"\n\ \ \ \ (procedure\ \"display_win1\"\ line\ 3)\n\ \ \ \ invoked\ from\ within\n\"display_win1\"\n\ \ \ \ invoked\ from\ within\n\".select,win1\ invoke\ \"\n\ \ \ \ invoked\ from\ within\n\".select,win1\ instate\ \{pressed\ !disabled\}\ \{\ .select,win1\ state\ !pressed\;\ .select,win1\ invoke\ \}\ \"\n\ \ \ \ (command\ bound\ to\ event)\n======\n\nTHANK\ YOU\n\n\[adavis\]\ 2010-10-19:\ I\ now\ have\ a\ fix\ for\ this\ (still\ testing).\ I\ intend\ to\ upload\ to\ the\ website\ within\ the\ next\ week.\ If\ you\ need\ it\ urgently\ please\ email\ me.\ \n\n\[milarepa\]\ 2010-10-19\ 18:11:47:\n\nThank\ you\ Adrian\ for\ your\ quick\ reply\ and\ for\ trying\ to\ solve\ the\ issue.\ I\ can\ wait\ for\ the\ fix.\ And\ thank\ you\ for\ your\ work\ on\ gridplus,\ I\ love\ this\ package,\ it\ is\ so\ easy\ to\ build\ applications\ and\ I\ always\ find\ a\ way\ to\ arrange\ the\ widgets\ the\ way\ I\ want\ it.\n\n\[adavis\]\ 2010-10-25:\ This\ problem\ is\ fixed\ in\ GRIDPLUS\ 2.6.\n\n----\n\n\[nb\]\ 2010-11-29:\ Hi\ all,\n\nWas\ wondering\ if\ there's\ any\ preferred\ way\ to\ read/write\ to\ an\ sqlite\ db\ from\ a\ gridplus\ application\ interface,\ outside\ of\ looping\ over\ the\ \"\"\ array\ where\ the\ widget\ values\ are\ stored.\n\nCurrently\ trying\ to\ use\ nstcl\ w/\ sqlite\ backend?\n\nAny\ hints\ would\ be\ welcome\n\nregards\n\n\n\[milarepa\]\ 2010-11-29\ 10:30:05:\n\nCurrently\ I\ am\ developing\ an\ application\ with\ gridplus\ and\ sqlite\ as\ backend.\ I\ don't\ use\ any\ database\ layer,\ just\ the\ standard\ sqlite3\ library\ for\ tcl.\ \n\nFor\ example,\ let\ say\ you\ are\ developing\ an\ application\ for\ a\ school\ and\ you\ want\ to\ load\ a\ dropdown\ widget\ with\ a\ list\ of\ lessons:\n\n======\ngpset\ .form,dropdown_lesson\ \ \[db\ eval\ \"SELECT\ lesson_name\ FROM\ lesson\"\]\n======\n\nTo\ save\ it:\n\n======\ndb\ eval\ \"INSERT\ INTO\ new_lesson\ (lesson_name)\ VALUES\ ('\[.form,dropdown_lesson\ get\]'\"\n======\n\nI\ do\ not\ quite\ understand\ what\ you\ mean\ when\ you\ said\ \"outside\ of\ looping\ over\ the\ array\".\ If\ you\ could\ be\ more\ specific.\n\n\[adavis\]\ 2010-11-29:\ You\ can\ also\ use\ '''gpmap'''\ to\ set\ multiple\ interface\ items\ with\ a\ single\ command\ -\ See\ \"Mapping\ of\ a\ SQLite\ result\"\ http://www.satisoft.com/tcltk/gridplus2/gpset.html#gpmap%|%here%|%.\ All\ GRIDPLUS\ interface\ items\ have\ their\ value\ in\ the\ null\ named\ array.\ If\ you\ have\ an\ item\ called\ \"`.form,dropdown_lesson`\"\ its\ value\ can\ be\ referenced\ as:\ `'''\$(.form,dropdown_lesson)'''`\n\n\[nb\]\ 2011-01-27:\ Thanks\ for\ the\ advice\ above,\ I've\ gotten\ my\ simple\ items\ working\ ok.\ While\ this\ is\ probably\ not\ gridplus\ specific,\ the\ difficulties\ I'm\ facing\ now\ is\ a\ strategy\ for\ storing\ the\ multiple\ items\ selected\ in\ a\ treeview.\ While\ storing\ the\ selected\ values\ of\ a\ tree\ in\ a\ single\ field\ is\ straightforward,\ e.g\ just\ store\ \"/u1\ /u1/3\ /u1/6\ /u1/8\ /u2\ /u2/2\ /u2/4\ /u2/6\ /u2/18\ /u3/2\ /u3/3\ /u6\"\ /u2\",\ this\ approach\ does\ not\ facilitate\ future\ queries,\ like\ what\ \"find\ all\ the\ /u1's\"....\n\n----\n\n\[MHo\]\ 2011-05-29:\ I\ miss\ ''scrolled\ windows''\ as\ a\ gridplus\ widget\ type.\ 2nd\ question:\ I\ noticed\ that,\ when\ doing\ a\ ''gridplus\ window''\ operation\ to\ define\ a\ new\ toplevel\ window,\ for\ a\ short\ time,\ a\ blank\ windows\ is\ appearing\ just\ before\ the\ final\ layout\ is\ configured\ and\ the\ window\ is\ packed.\ Is\ there\ a\ way\ to\ avoid\ the\ flicker?\ The\ code\ (fragment)\ is\ as\ follows:\n\n======\ngridplus\ window\ .main\ -modal\ 1\ -topmost\ 1\ -windowcommand\ main:buttons,exit\nwm\ withdraw\ .main\neval\ \[format\ \{gridplus\ widget\ .main.userWidget\ -title\ \$fTitle\ %s\}\ \$args\]\ngridplus\ button\ .main.buttons\ \{\n\ \ \ \ \{Weiter\ .ok\}\ \{Abbruch\ .exit\}\n\}\ngridplus\ layout\ .main.layout\ -wtitle\ \$wTitle\ \{\n\ \ \ \ .main.userWidget\n\ \ \ \ .main.buttons:e\n\}\nbind\ .main\ <Escape>\ \[list\ main:buttons,exit\]\npack\ .main.layout\n======\n\n\[adavis\]\ 2011-05-31:\ I\ don't\ have\ a\ complete\ cure\ for\ this\ (for\ the\ moment\ at\ least)\ -\ but\ you\ could\ try\ the\ following...\n\n======\ngridplus\ window\ .main\ -modal\ 1\ -topmost\ 1\ -windowcommand\ main:buttons,exit\ -overrideredirect\ 1\nwm\ withdraw\ .main\nwm\ overrideredirect\ .main\ 0\n======\n\n...the\ flicker\ should\ be\ much\ less\ noticable.\n\n\[MHo\]:\ Thanks,\ that\ works.\ Another\ remark:\ As\ you\ may\ guess\ from\ the\ code\ fragment\ above,\ I'll\ try\ to\ encapsulate\ gridplus\ in\ a\ way\ that\ one\ could\ quickly\ define\ a\ simple\ dialog\ without\ caring\ about\ the\ tricky\ details.\ The\ call\ from\ the\ shelling\ application's\ perspective\ than\ looks\ something\ like:\n\n======\nif\ \{\[gpDialog1\ TestFensterTitel\ TestFrameTitel\ \{\n\ \ \ \{&e\ \"Benutzer\"\ .benutzer\}\ \{&e\ \"Neues\ Kennwort\"\ .passwort\ +\}\n\ \ \ \{\"Optionen\"\ &c\ .unlock\}\ \ \ \{\}\n\}\]\ ==\ 1\}\ \{\n\ \ \ msgBox\ \">>>\$gpDialog1bValues<<<\"\n\}\n======\n\nwhich\ is\ pretty\ simple,\ I\ think.\ The\ only\ thing\ which\ isn't\ possible\ this\ way\ is\ using\ constructs\ which\ needs\ explicitely\ coded\ ''callbacks''.\ This\ was\ the\ reason\ that\ I\ first\ choosed\ \[tepam\]\ as\ part\ of\ my\ program.\ With\ \[tepam\],\ one\ could\ build\ complex\ dialogs\ without\ using\ callbacks.\ As\ I\ discovered\ several\ things\ which\ does\ not\ work\ as\ I\ expected\ and\ the\ dialog\ layout\ doesn't\ fullfill\ my\ needs\ though,\ I\ switched\ to\ gridplus2\ again...\n\n\[adavis\]\ 2011-05-31:\ Can\ you\ give\ me\ an\ example\ of\ how\ you\ would\ like\ it\ to\ behave?\n\n\[adavis\]\ 2011-06-01:\ Something\ you\ may\ find\ useful\ -\ maybe\ if\ developing\ a\ dialog\ builder\ which\ allows\ users\ to\ create/customise\ntheir\ own\ dialogs/screens\ -\ is\ to\ use\ GRIDPLUS\ http://www.satisoft.com/tcltk/gridplus2/define.html%|%defined%|%\ widgets.\n\nThis\ is\ best\ explained\ using\ a\ simple\ example:-\n\n======\n#-------------------------------#\n#\ First,\ define\ some\ widgets...\ #\n#-------------------------------#\n\ngridplus\ define\ \{\n\ \ \ \ userid\ \ \ \ \{&e\ \"User\ ID\"\ .userid\ 25\ +\}\n\ \ \ \ password\ \ \{&e\ \"Password\"\ .password\ 25\ *\}\n\ \ \ \ ok-cancel\ \{|&b\ \"OK\"\ .ok\ |>\ \"Cancel\"\ .cancel\}\n\}\n\n#----------------------------------#\n#\ Then,\ use\ the\ defined\ widgets...\ #\n#----------------------------------#\n\ngridplus\ widget\ .dialog\ -wtitle\ Login\ \{\n\ \ \ \ @userid\n\ \ \ \ @password\n\ \ \ \ =\n\ \ \ \ @ok-cancel\n\}\n\npack\ .dialog\n\n#-------------------------------------#\n#\ ...to\ create\ a\ simple\ login\ dialog.\ #\n#-------------------------------------#\n======\n\n\[MHo\]\ Thanks\ again,\ later\ I\ will\ give\ a\ complete\ example,\ which\ illustrates\ better,\ what\ I\ want.\ Here's\ another\ questions:\n\ \ \ *\ Just\ tested\ the\ &D-Dropdown-Date-Selector,\ but\ it's\ window\ appears\ behind\ the\ main\ dialog\ window\ (perhaps\ because\ the\ main\ windows\ has\ the\ attribut\ '''-topmost\ 1'''?).\n\ \ \ **\ \[MHo\]:\ I\ tested\ it\ again,\ yes,\ it\ was\ the\ topmost\ 1.\n\ \ \ **\ \[adavis\]\ 2011-06-10:\ I'll\ look\ into\ this.\ \n\n\ \ \ *\ A\ predefined\ file/directory\ selector\ would\ eleminate\ the\ need\ to\ code\ a\ button\ callback\ routine,\ which\ in\ turn\ calls\ tk_getOpenFile\ etc.\n\ \ \ *\ \[adavis\]\ 2011-06-10:\ What\ do\ you\ require\ that\ is\ different\ from\ tk_getOpenFile?\n\ \ \ **\ \[MHo\]\ I\ thought\ of\ some\ kind\ of\ megawidget:\ an\ entry\ widget\ with\ a\ button\ to\ the\ right,\ togeter\ as\ a\ unit.\ Klicking\ in\ the\ button\ (labeled\ \"...\",\ e.g.)\ open\ the\ FileOpen-dialog.\ Or\ something\ like\ that.\ Just\ to\ reduce\ the\ neccesseraity\ to\ code\ a\ callback,\ for\ no\ other\ reason.\n\nMore\ questions:\n\ \ \ *\ Is\ it\ possible\ to\ redefine\ the\ day/month\ names?\ Maybe\ I\ overlooked\ something...\n\ \ \ *\ \[adavis\]\ (10th\ June\ 2011):\ The\ day/month\ names\ are\ set\ according\ to\ the\ locale.\ It\ uses\ the\ day/month\ names\ as\ they\ are\ returned\ by\ the\ '''clock'''\ command.\n\ \ \ **\ \[MHo\]\ I\ notice,\ that\ the\ \[clock\]\ command\ doesn't\ do\ automatically\ what\ it\ should\ (IMHO),\ at\ least\ on\ Windows\ XP:\n\n======\n%\ clock\ format\ \[clock\ seconds\]\ -format\ %A\nFriday\;\ #\ wrong\n%\ clock\ format\ \[clock\ seconds\]\ -format\ %A\ -locale\ current\nFreitag\;\ #\ correct\n%\ clock\ format\ \[clock\ seconds\]\ -format\ %A\ -locale\ system\nFreitag\;\ #\ correct\n%\n======\n\n\ \ \ *\ The\ Calendarcontrol\ only\ handles\ mouse\ clicks,\ the\ arrow\ keys\ seem\ to\ have\ no\ effect.\n\ \ \ *\ Another\ fundamental:\ '''how\ to\ give\ default\ values\ for\ entry\ fields'''\ (GPSET\ or\ manipulating\ \{\}\ before\ doesn't\ help\ as\ the\ values\ are\ cleared\ on\ call!)???\n\ \ \ *\ The\ text\ \"-ecmd\ <tab>\"\ should\ be\ rewritten\ as\ \"-ecmd\ <Tab>\"\ in\ your\ documentation.\n\n\[adavis\]\ 2011-06-12:\ I\ now\ have\ a\ test\ version\ of\ GRIDPLUS2\ which\ allows\ the\ locale\ to\ be\ explicitly\ set\ -and-\ has\ a\ fix\ for\ the\ calendar/topmost\ problem.\ I\ am\ hoping\ you\ would\ be\ able\ to\ test\ this\ for\ me\ -\ If\ you\ would\ like\ to\ do\ this,\ please\ email\ me.\n\nThe\ calendar\ does\ (for\ the\ moment)\ only\ handle\ mouse\ clicks.\ I\ will\ add\ cursor\ key\ control\ in\ a\ future\ release.\n\nI\ will\ add\ an\ entry\ with\ \"...\"\ button\ file/directory\ selector\ in\ a\ future\ release.\ In\ the\ meatime,\ there\ is\ a\ special\ optionset\ which\ helps\ in\ creating\ this\ kind\ feature\ (See:\ http://www.satisoft.com/tcltk/gridplus2/embedded-grid.html#example3)\n\nDefault\ values\ cannot\ currently\ be\ set\ as\ the\ value\ is\ initialised\ to\ null.\ Do\ you\ have\ an\ application\ where\ it\ is\ important\ to\ set\ the\ value\ of\ an\ entry\ before\ it\ is\ created?\ I\ guess\ I\ could\ add\ a\ '''gpdefault'''\ command?\ \[MHo\]:\ Yes,\ or\ an\ option\ similar\ to\ '''-variables\ 0'''\ which\ say\ ''no\ clear\ at\ init''.\n\nCan\ you\ tell\ me\ what\ page\ the\ \"<tab>\"\ mistake\ is\ on?\ \[MHo\]\ I\ didn't\ find\ it\ again\ by\ myself.\ Maybe\ I\ stared\ at\ the\ screen\ too\ long...\n\n----\n\n\[ARR\]\ 2012-02-13:\ I've\ started\ to\ use\ this\ great\ package\ in\ my\ apps\ and\ I\ like\ to\ help,\ fix\ some\ bugs,\ add\ functions...\ Is\ Gridplus2\ still\ maintained?\ Is\ there\ a\ newer\ Version\ than\ 2.6\ from\ 23/10/2010?\n\n\[adavis\]\ 2012-02-14:\ GRIDPLUS2\ is\ still\ being\ maintained/enhanced.\ I\ have\ recently\ finished\ the\ coding\ for\ version\ 2.7\ and\ I\ am\ currently\ in\ the\ process\ of\ updating\ the\ documentation.\ If\ you\ have\ any\ enhancement\ requests\ or\ bugs\ to\ report\ please\ email\ me\ at\ '''[email protected]'''.\ \ \n\n\[ARR\]\ 2012-02-15:\ Dear\ Adrian,\ thanks\ for\ quick\ response,\ here\ are\ some\ bugs\ and\ enhancements:\n\n\ \ Bugs:\n\ \ \ -\ I\ think\ internal\ group\ data\ is\ not\ completely\ deleted\ when\ doing\ \"gridplus\ clear\ …“\n\ \ \ -\ When\ using\ an\ embedded\ grid\ and\ a\ -group\ name\ I\ get\ an\ error\ when\ trying\ to\ disable\ the\ group\ widgets:\n\ \ \ \ \ \"gridplus::gridplus\ set\ -group\ view_dummy\ -state\ disabled\"\ ->\ Error:\ unknown\ option\ \"-state\"\n\ \ \ -\ An\ embedded\ grid\ takes\ some\ more\ left\ and\ right\ space\ than\ a\ normal\ grid\ (some\ pixels\ only!)\n\ \ \ -\ I\ cannot\ get\ locale\ days\ in\ german\ because\ of\ the\ clock\ behaviour\ in\ 8.5\ as\ already\ mentioned\ by\ \[MHo\]\n\n\ \ Enhancements:\n\ \ \ -\ a\ spinbox\ widget\n\ \ \ -\ a\ time\ selection\ widget\ i.e.\ a\ clock\ with\ moveable\ hands\ (like\ iWidgets)\n\ \ \ -\ I\ would\ like\ to\ call\ a\ given\ proc\ with\ a\ parameter\ from\ a\ button\ like\ this:\ \"\{&b\ .name=para\ :image\ ~:::namespace::myproc\}\"\n\n\[adavis\]\ (16th\ February\ 2012):\ I\ have\ sent\ you\ a\ copy\ of\ GRIDPLUS\ 2.7\ for\ evaluation.\ Please\ see\ below\ for\ my\ comments:-\n\n\ \ \ -\ I\ think\ internal\ group\ data\ is\ not\ completely\ deleted\ when\ doing\ \"gridplus\ clear\ …“\n\nCan\ you\ give\ me\ a\ simple\ example\ to\ illustrate\ this?\n\n\[ARR\]\ I'm\ updating\ my\ running\ app\ by\ resourcing\ tcl\ files\ at\ runtime.\ If\ I\ delete\ a\ gp\ widget\ it\ is\ still\ in\ the\ group\ but\ it's\ state\ cannot\ be\ changed.\ Of\ course\ the\ problem\ will\ never\ happen\ if\ I\ restart\ the\ app.\ I\ think\ 'gridplus\ clear\ ..'\ should\ erase\ these\ widets\ from\ the\ group's\ names\ list.\ I\ will\ make\ an\ example.\n\n\ \ \ -\ When\ using\ an\ embedded\ grid\ and\ a\ -group\ name\ I\ get\ an\ error\ when\ trying\ to\ disable\ the\ group\ widgets\n\ \ \ -\ (\[ARR\]\ ->\ solved!\ see\ below...)\n\nThanks\ for\ pointing\ this\ out\ -\ It\ is\ something\ that\ I\ should\ make\ clear\ in\ the\ documentation...\n\n...Embedded\ grids\ '''''do\ not'''''\ inherit\ options\ from\ the\ parent\ grid.\ I\ had\ considered\ this,\ but\ I\ found\ too\ many\ occasions\ (for\ my\ purposes)\ where\ this\ was\ not\ the\ desired\ behaviour.\n\nTo\ use\ the\ group\ facility\ within\ embedded\ grids\ there\ are\ two\ options:-\n\n1)\ Specify\ the\ group\ for\ each\ widget\ item\ in\ the\ embedded\ grid...\n\ \n======\ngridplus\ widget\ .mygrid\ \{\n\ \ \ \ \{\"My\ Label\"\ ||\ |&e\ \"Entry\ 1\"\ .entry1\ %mygroup\ |>\ \"Entry\ 2\"\ .entry2\ %mygroup\ |>\ \"Entry\ 3\"\ .entry3\ %mygroup\}\n\}\n\npack\ .mygrid\n\ngridplus\ set\ -group\ mygroup\ -state\ disabled\n======\n\n2)\ Use\ a\ style/optionset\ for\ the\ embedded\ grid...\n\n======\ngridplus\ optionset\ myoptions\ \{\n\ \ \ \ -group\ mygroup\n\ \ \ \ -style\ \{\}\n\}\n\ngridplus\ widget\ .mygrid\ \{\n\ \ \ \ \{\"My\ Label\"\ ||\ |#myoptions\ |&e\ \"Entry\ 1\"\ .entry1\ |>\ \"Entry\ 2\"\ .entry2\ |>\ \"Entry\ 3\"\ .entry3\}\n\}\n\npack\ .mygrid\n\ngridplus\ set\ -group\ mygroup\ -state\ disabled\n======\ \n\nAgain,\ this\ is\ something\ that\ needs\ clarification\ in\ the\ documentation.\ The\ \"|#\"\ widget\ option\ can\ set\ a\ style\ to\ use\ for\ an\ embedded\ grid.\ Additionally,\ if\ there\ is\ an\ optionset\ with\ the\ same\ name,\ this\ is\ also\ applied.\ What\ I\ don't\ think\ I've\ made\ clear\ is\ that,\ if\ you\ wish\ to\ use\ \"|#\"\ to\ specify\ an\ optionset\ only\ \ (where\ there\ is\ not\ style\ with\ the\ same\ name)\ it\ is\ necessary\ to\ explicitly\ specify\ a\ style\ option\ in\ the\ optionset\ -\ Otherwise\ you\ will\ get\ a\ \"layout\ not\ found\"\ error.\n\nIn\ GIRDPLUS\ 2.7\ I\ have\ added\ a\ `'''Gridplus.optionsetDefaultStyle'''`\ option\ database\ option.\ To\ maintain\ backward\ compatibility\ the\ default\ for\ this\ is\ \"0\"\ (false).\n\nWhen\ set\ to\ true...\n\n======\noption\ add\ *Gridplus.optionsetDefaultStyle\ 1\n======\n\ \n...\"`'''-style\ \{\}'''`\"\ is\ added\ automatically\ to\ each\ optionset\ if\ \"-style\"\ is\ not\ explictly\ specified.\n\n\ \ \ -\ An\ embedded\ grid\ takes\ some\ more\ left\ and\ right\ space\ than\ a\ normal\ grid\ (some\ pixels\ only!)\n\nI\ will\ investigate\ this.\n\n\ \ \ -\ I\ cannot\ get\ locale\ days\ in\ german\ because\ of\ the\ clock\ behaviour\ in\ 8.5\ \n\nI\ have\ added\ an\ explict\ `'''-locale'''`\ option\ in\ GRIDPLUS\ 2.7\ -\ (\[ARR\]\ solved\ and\ tested\ in\ V2.7)\n\n\ \ \ -\ a\ spinbox\ widget\ \n\nYou\ can,\ for\ the\ moment,\ use\ the\ normal\ '''tk/ttk'''\ spinbox\ widget\ as\ demonstrated\ in:\ http://www.satisoft.com/tcltk/gridplus2/groups.html\ -\ (\[ARR\]\ works\ fine!)\n\n\ \ \ -\ a\ time\ selection\ widget\ i.e.\ a\ clock\ with\ moveable\ hands\ (like\ iWidgets)\n\nI'm\ sorry\ -\ I\ don't\ have\ any\ plans\ to\ do\ this\ at\ the\ moment.\ -\ (\[ARR\]\ I'm\ currently\ working\ on\ a\ clock\ widget\ like\ this.\ I'll\ send\ it\ when\ it's\ running\ if\ you\ like.)\n\n\ \ \ -\ I\ would\ like\ to\ call\ a\ given\ proc\ with\ a\ parameter\ from\ a\ button\n\nWould\ something\ like\ the\ following\ suit\ your\ purpose?\ -\ (\[ARR\]\ Oh\ yes\ that\ works.\ Somehow\ I\ didn't\ get\ it\ before...)\n\n======\nproc\ myproc\ \{parameter\}\ \{\n\ \ \ \ puts\ \$parameter\n\}\n\ngridplus\ button\ .mygrid\ \{\n\ \ \ \ \{\"Press\ Me\"\ .mybutton\ \"~myproc\ myparameter\"\}\n\}\n\npack\ .mygrid\n======\n\n----\n\n\[MHo\]\ 2012-02-24:\ I've\ problems\ to\ line\ up\ colums\ properly.\ Here's\ a\ fragment\ of\ a\ wrapper\ I\ use\ to\ encapsulated\ part\ of\ the\ gridplus\ functionality,\ but\ I\ think\ the\ wrapper\ is\ not\ relevant\ here:\n\n======\n\{:fileopen16\ \"^Quelle:w\"\ |:\ \}\n\{\ |:\ \"Datei(en)/Ordner:\"\ |>\ &e\ .source\ 30\ |:\ &b\ \"Datei(en)...\"\ .button=chooseFile\ \ |:\ &b\ \"Ordner...\"\ .button=chooseDir\}\n\{\}\n=\n\{:devpc16\ \"^Ziel:w\"\ |:\ \}\n\{\ |:\ \"Maschine(n):\"\ \ \ \ \ \ |>\ &e\ .dest\ 30\ \ \ |:\ &b\ \"AusGruppe...\"\ .button=chooseADGrp\ |:\ &b\ \"QueryFarm...\"\ .button=getFarm\}\n\{\ |:\ \"Zielpfad:\"\ \ \ \ \ \ \ \ \ |>\ &e\ .dPath\ 30\ \ |:\ ^\ |:\ ^\ \}\n\{\}\n=\n\{:apptools16\ \ \"^Optionen:w\"\ |:\ \}\n\{\ |:\ &c\ .testOnly\ \"Testmodus\"\}\n\{\ |:\ &c\ .overWrite\ \"Vorhandene\ Zieldateien\ überschreiben\"\ +\}\n======\n\nThe\ lines\ with\ Maschinen(n):\ and\ Zielpfad:\ near\ the\ beginning\ do\ not\ show\ as\ I\ want....\nUnfortunally,\ I\ couldn't\ upload\ a\ screenshot\ at\ the\ moment.\n\n\[adavis\]\ 2012-02-24:\ Unfortunately\ there\ isn't\ (currently)\ a\ really\ neat\ way\ to\ do\ exactly\ what\ I\ think\ you\ want.\ This\ will\ require\ an\ enchancement.\ I'll\ have\ a\ look\ tomorrow\ to\ see\ if\ it\ will\ be\ simple\ enough\ to\ incorporate\ in\ (the\ very\ soon\ to\ be\ released)\ GRIDPLUS\ 2.7.\ In\ the\ meantime\ something\ like\ the\ following\ may\ do:-\n\n======\ngridplus\ optionset\ x\ \{\n\ \ \ \ -cfmt\ \ \{0\ 10\}\n\ \ \ \ -style\ \{\}\n\}\n\ngridplus\ widget\ .test\ \{\n\ \ \ \ \{:fileopen16\ \"^Quelle\"\ |>\}\n\ \ \ \ \{|:\ |#x\ &e\ \"Datei(en)/Ordner:\"\ .source\ 30\ |>\ &b\ \"Datei(en)...\"\ .button=chooseFile\ \ |:\ &b\ \"Ordner...\"\ .button=chooseDir\}\n\ \ \ \ \{\}\n\ \ \ \ =\n\ \ \ \ \{:devpc16\ \"^Ziel\"\ |>\}\n\ \ \ \ \{|:\ |#x\ &e\ \"Maschine(n):\"\ \ \ \ \ \ .dest\ 30\ \ \ |>\ &b\ \"AusGruppe...\"\ .button=chooseADGrp\ |:\ &b\ \"QueryFarm...\"\ .button=getFarm\}\n\ \ \ \ \{|:\ |#x\ &e\ \"Zielpfad:\"\ \ \ \ \ \ \ \ \ .dPath\ 30\ \ |>\}\n\ \ \ \ \{\}\n\ \ \ \ =\n\ \ \ \ \{:apptools16\ \ \"^Optionen\"\ |>\}\n\ \ \ \ \{|:\ &c\ .testOnly\ \ \"Testmodus\"\ |>\}\n\ \ \ \ \{|:\ &c\ .overWrite\ \"Vorhandene\ Zieldateien\ überschreiben\"\ +\ |>\}\n\}\n\npack\ .test\n======\n\n----\n\n\[MHo\]:\ Thank\ you\ for\ your\ fast\ response\ and\ the\ great\ tool!\ Here's\ a\ screenshot,\ produced\ from\ the\ minimal\ modified\ code\ shown\ first:\n\n\[http://home.arcor.de/hoffenbar/prog/gpdialog2.jpg\]\n\nOne\ alternative\ could\ be\ to\ use\ a\ separate\ \{block\}\ (grid)\ for\ each\ cell\ like\ this:\n\n======\n\{:fileopen16\ \"^Quelle:w\"\ |:\ \}\n\{\ |:\ \"Datei(en)/Ordner:\"\ |>\ &e\ .source\ 30\ \}\ \{&b\ \"Datei(en)...\"\ .button=chooseFile\ |:\ &b\ \"Ordner...\"\ .button=chooseDir\}\n\{\}\n=\ -\ -\ -\ -\n\{\}\n\{:devpc16\ \"^Ziel:w\"\ |:\ \}\n\{\ |:\ \"Maschine(n):\"\ \ \ \ \ \ |>\ &e\ .dest\ 30\ \ \ \}\ \{&b\ \"AusGruppe...\"\ .button=chooseADGrp\ |:\ &b\ \"QueryFarm...\"\ .button=getFarm\}\n\{\ |:\ \"Zielpfad:\"\ \ \ \ \ \ \ \ \ |>\ &e\ .dPath\ 30\ \ \}\ \n\{\}\n=\ -\ -\ -\ -\n\{\}\n\{:apptools16\ \ \"^Optionen:w\"\ |:\ \}\n\{\ |:\ &c\ .testOnly\ \"Testmodus\"\}\n\{\ |:\ &c\ .overWrite\ \"Vorhandene\ Zieldateien\ überschreiben\"\ +\}\n======\n\nBut\ then,\ the\ separation\ lines\ to\ not\ look\ like\ they\ should\ (specifying\ =\ =\ =\ =\ =\ don't\ work,\ either):\n\n\[http://home.arcor.de/hoffenbar/prog/gpdialog3.jpg\]\n\nI\ should\ mention\ that,\ because\ of\ the\ special\ environment\ (wrapper/encapsulation,\ single\ call\ to\ construct\ and\ handle\ the\ \"map\"\ like\ with\ tepam)\ I\ could\ only\ use\ \"inline\"\ constructs\ like\ &c,\ &e,\ &b\ etc.,\ explizit\ commands\ like\ ''gridplus\ line''\ are\ currently\ not\ available\ (with\ the\ exception\ of\ a\ variant\ of\ ''gpset'').\ Maybe\ publishing\ ''gridplus\ define''\ could\ help\ here,\ as\ you\ mention\ earlier.\ Here's\ an\ simple\ example\ of\ how\ the\ whole\ thing\ could\ look\ (part\ of\ a\ password\ change\ dialogue):\n\n======\nif\ \{\[gpDialog1\ dlg1\ \{Kennwort\ zurücksetzen\}\ \[list\ -taborder\ row\]\ \{\n\ \ \ \{&e\ \"Benutzer\ :e\"\ \ \ \ \ \ \ .benutzer\ 20\ +\}\n\ \ \ \{&e\ \"Neues\ Kennwort\ :e\"\ .passwort\ 20\}\n\ \ \ \{=\}\n\ \ \ \{&c\ .mustchg\ \"Änderung\ bei\ 1.Anmeldung\ erzwingen\ :w\"\ +\}\n\}\]\ ==\ 1\}\ \{\n\ \ \ array\ set\ myVals\ \$dlg1_Val\n\}\ else\ \{\n\ \ \ return\n\}\n#\ :\n#\ :\n#\ now\ we\ can\ use\ \$myVals(benutzer),\ \$myVals(passwort),\ etc.\n#\ :\n======\n\nwhere\ the\ code\ for\ gpDialog1\ is\ a\ \"black\ box\"\ within\ my\ program...\ (not\ too\ large,\ but\ to\ many\ lines\ to\ show\ here\ \;-).\nThe\ \"body\"\ of\ gpDialog1\ (that\ is,\ the\ content\ of\ the\ last\ arg)\ are\ the\ args\ for\ a\ ''gridplus\ widget''\ command!\n\nMeanwhile\ I've\ adapted\ your\ workaround.\ Don't\ exactly\ now\ why,\ but\ it\ works\ perfect!!!\n\n\[adavis\]\ 2012-02-25:\ I've\ enhanced\ the\ GRIDPLUS\ 2.7\ '''grid'''\ command\ so\ that\ it\ is\ possible\ to\ specify\ the\ width\ of\ a\ label.\ Using\ this\ option\ the\ following\ code\ will\ give\ the\ same\ result\ as\ my\ previous\ solution\ without\ the\ need\ to\ use\ an\ '''optionset''':-\n\n======\ngridplus\ widget\ .test\ \{\n\ \ \ \ \{:fileopen16\ \"^Quelle\"\ |>\}\n\ \ \ \ \{|:\ &e\ \"Datei(en)/Ordner:10\"\ .source\ 30\ |>\ &b\ \"Datei(en)...\"\ .button=chooseFile\ \ |:\ &b\ \"Ordner...\"\ .button=chooseDir\}\n\ \ \ \ \{\}\n\ \ \ \ =\n\ \ \ \ \{:devpc16\ \"^Ziel\"\ |>\}\n\ \ \ \ \{|:\ &e\ \"Maschine(n):10\"\ \ \ \ \ \ .dest\ 30\ \ \ |>\ &b\ \"AusGruppe...\"\ .button=chooseADGrp\ |:\ &b\ \"QueryFarm...\"\ .button=getFarm\}\n\ \ \ \ \{|:\ &e\ \"Zielpfad:10\"\ \ \ \ \ \ \ \ \ .dPath\ 30\ \ |>\}\n\ \ \ \ \{\}\n\ \ \ \ =\n\ \ \ \ \{:apptools16\ \ \"^Optionen\"\ |>\}\n\ \ \ \ \{|:\ &c\ .testOnly\ \"Testmodus\"\ |>\}\n\ \ \ \ \{|:\ &c\ .overWrite\ \"Vorhandene\ Zieldateien\ überschreiben\"\ +\ |>\}\n\ \ \ \ \{\}\n\}\n\npack\ .test\n======\n\nIn\ this\ example\ you\ can\ see\ that\ the\ label\ \"suffix\"\ can\ now\ specify\ a\ width\ in\ characters\ in\ addition\ to\ a\ sticky\ indicator.\ If\ both\ are\ to\ be\ specified\ the\ sticky\ indicator\ must\ come\ before\ the\ width.\n\nIf\ you\ would\ like\ a\ pre-release\ copy\ of\ GRIDPLUS\ 2.7\ to\ try\ this\ please\ email\ me.\n----\n\n\[MHo\]\ Thanks\ again.\ Another\ question:\n\nHow\ can\ I\ define\ an\ editable\ dropdown\ combox\ with\ default\ list\ entries\ using\ the\ `\{&d\ ....\}`\ syntax?\nUsing\ `gridplus\ dropdown\ .name\ \{...\}`,\ everything\ works...\n\n\[adavis\]\ 2012-02-26:\ You\ seem\ to\ have\ discovered\ a\ minor\ inconsistency\ with\ the\ dropdown.\ I'm\ not\ going\ to\ change\ this\ in\ 2.7\ as\ it\ is\ possible\ that\ it\ may\ break\ existing\ code.\ I'll\ need\ to\ think\ carefully\ about\ this.\ In\ the\ meantime\ you\ can\ get\ an\ editable\ dropdown\ using\ the\ \"&d\"\ syntax\ by\ explicitly\ setting\ the\ state\ of\ the\ widget\ by\ using\ the\ \">\"\ option.\ For\ example:-\n\n======\n\{&d\ \"Dropdown\ One\"\ .dropdown1\ \{+\"Option\ one\"\ \"Option\ two\"\ \"Option\ three\"\}\ >\}\n======\ \n\n----\n\n\[Mho\]:\ It\ works\ now.\ Thanks\ again.\ And\ how\ to\ set\ the\ ''active''\ Item\ of\ a\ dropdown\ widget?\ My\ dialoge\ restores\ the\ last\ settings\ if\ called\ again,\ but\ do\ I\ have\ to\ re-order\ the\ list\ with\ the\ combobox\ items,\ or\ is\ there\ another\ way?\n\n\[adavis\]\ 2012-02-26:\ When\ setting\ the\ value\ of\ the\ dropdown\ item\ as\ it\ is\ created\ it\ will\ set\ to\ the\ first\ item\ in\ the\ list.\ You\ can\ also\ use\ http://www.satisoft.com/tcltk/gridplus2/gpset.html%|%gpset%|%\ to\ set\ any\ value\ you\ require.\n\n----\n\n\[MHo\]:\ Me\ again...\ (03rd\ March\ 2012):\ it\ seems\ that\ setting\ a\ value\ for\ a\ checkbox\ wich\ defaults\ to\ the\ ''on''\ state\ via\ ''+''\ via\ ''gpdefault''\ is\ toggling\ instead\ of\ setting...\ That\ means,\ ''gpdefault\ .xyz\ 1''\ switches\ a\ checkbox\ ''off''.\n\n\[adavis\]\ 2012-03-05:\ This\ is\ working\ as\ designed.\ '''gpdefault'''\ sets\ a\ default\ value\ -\ The\ '''+'''\ option\ selects/invokes\ the\ widget.\ As\ the\ value\ is\ set\ before\ the\ select,\ using\ both\ together\ does\ result\ in\ the\ behaviour\ you\ describe.\ Can\ you\ give\ me\ an\ example\ of\ what\ you\ are\ trying\ to\ achieve?\n\n\[MHo\]:\ The\ dialog\ saves\ it's\ state\ for\ later\ recall.\ So,\ regardless\ how\ the\ default\ state\ is,\ this\ last\ state\ should\ be\ restored.\ For\ the\ very\ first\ default\ (before\ the\ 1st\ call),\ the\ setting\ is\ determined\ via\ the\ \"+\"\ flag\ in\ the\ &b-clause.\ Then,\ the\ user\ either\ leaves\ this\ default\ or\ switches\ it\ to\ off.\ The\ actual\ value\ is\ then\ saved.\n\n\[adavis\]:\ 2012-03-07:\ The\ simplest\ way\ to\ save\ the\ values\ of\ GRIDPLUS\ items\ and\ then\ to\ restore\ them\ is\ to\ use\ '''array\ get'''\ and\ '''array\ set'''.\n\nSomething\ like...\n\n======\nset\ mydata\ \[array\ get\ \{\}\]\n======\n\n...will\ save\ the\ window/dialog\ data\ into\ \"`'''mydata'''`\"\ -\ then...\n\n======\narray\ set\ \{\}\ \$mydata\n======\n\n...will\ restore\ the\ values.\n\nIs\ this\ solution\ useful?\n\n\[MHo\]:\ Hm...\ Don't\ remember\ the\ details,\ but\ there\ where\ some\ reasons\ for\ '''gpdefault'''\ (maybe\ we\ can\ read\ somewhere\ on\ this\ page?).\ I\ think\ setting\ \{\}\ before\ defining\ the\ dialog\ has\ no\ effect\ because\ it's\ resetted\ or\ so...\n\n\[adavis\]\ 2012-03-09:\ \ `\{\}`\ does\ need\ to\ be\ set\ after\ defining\ the\ dialog.\n\nTo\ get\ the\ behaviour\ I\ think\ you\ require\ -\ Change...\n\n======\nif\ \{\$select\}\ \{\n\ \ \ \ \$widgetName\ invoke\n\}\n======\n\n...In\ the\ \"Create\ checkbutton\"\ section\ of\ `::gridplus::gpWidget`\ to...\n\n======\nif\ \{\$select\}\ \{\n\ \ \ \ set\ (\$widgetName)\ 0\n\ \ \ \ \$widgetName\ invoke\n\}\n======\n\nI\ don't\ think\ this\ is\ likely\ to\ break\ any\ existing\ code.\ If\ not,\ I\ will\ incorporate\ this\ into\ the\ next\ release.\n\n\[MHo\]:\ Hm,\ I\ have\ to\ include\ a\ little\ (or\ more)\ extra\ logic,\ as\ the\ code\ I'm\ constructing\ the\ dialog\ with\ does\ not\ neccessarily\ know\ at\ every\ place,\ what\ type\ of\ widget\ it's\ constructing....,\ say:\n\n======\nif\ \{type_of_widget\ is\ checkbox\}\ \{\n\ \ \ \ if\ \{save_value\}\ \{\n\ \ \ \ \ \ \ \ widget\ invoke\n\ \ \ \ \}\n\}\n======\n\nBut\ that's\ not\ enough.\ Since\ the\ default\ could\ be\ \"on\",\ when\ the\ saved\ value\ instead\ is\ \"off\",\ the\ visible\ value\ remains\ \"on\"...\n\n\[MHo\]:\ Meanwhile,\ I\ reorderd\ my\ code.\ Now,\ all\ values\ are\ set\ ''after''\ the\ dialoge\ is\ constructed,\ via\ ''gpset''\ and\ ''gpselect''\;\ no\ more\ ''gpdefault''.\ So,\ the\ \"checkbox\ problem\"\ is\ gone.\ But\ I\ hit\ other\ problems,\ the\ biggest\ of\ what\ is:\ I\ cannot\ restore\ the\ current\ \"selection\"\ of\ a\ set\ of\ radiobuttons.\ The\ radiobutton\ window\ is\ of\ type\ TLabelframe\ and\ contains\ many\ other\ windows\ of\ type\ TFrame...\ I\ cannot\ find\ the\ widgets\ of\ type\ TRadiobutton,\ so\ I\ cannot\ do\ a\ ''widgetname\ invoke''\ to\ select\ the\ right\ radiobutton...\n\nIdeally,\ ''gpselect''\ should\ be\ able,\ given\ the\ last\ selected\ value\ of\ a\ radiobutton\ set\ or\ of\ a\ combobox,\ to\ \"activate\"\ the\ right\ value.\n\n\[adavis\]\ 2012-03-11:\ '''gpset'''\ can\ be\ used\ to\ set\ the\ value\ of\ any\ GRIDPLUS\ item\ including\ radiobuttons\ and\ dropdown/comboboxes.\ '''gpselect'''\ is\ only\ used\ the\ select\ '''tree'''\ nodes,\ '''tablelist'''\ rows\ and\ '''calendar'''\ dates.\n\nI\ have,\ however,\ just\ discovered\ a\ bug\ such\ that:\ If\ '''gpset'''\ is\ called\ immediately\ after\ a\ window\ is\ created/updated\ it\ is\ possible\ that\ the\ '''gpset'''\ is\ executed\ before\ the\ window\ update\ is\ complete.\ In\ this\ case\ the\ radiobutton\ may\ not\ be\ set\ correctly.\ I\ will\ release\ a\ bug\ fix\ soon\ -\ But,\ in\ the\ meantime,\ calling\ '''update\ idletasks'''\ before\ the\ '''gpset'''\ should\ resolve\ this\ problem.\ For\ example:-\n\n======\ngridplus\ widget\ .mydialog\ -wtitle\ Dialog\ \{\n\ \ \ \{&e\ \"Entry\"\ \ \ \ \ \ \ \ \ .myentry\}\n\ \ \ \{&c\ \"Checkbutton\"\ \ \ .mycheck\}\n\ \ \ \{&r\ \"Radiobutton\ 1\"\ .\ +radio1\ *radiogroup\}\n\ \ \ \{&r\ \"Radiobutton\ 2\"\ .\ -radio2\ *radiogroup\}\n\ \ \ \{&d\ \"Dropdown\"\ \ \ \ \ \ .mydrop\ \{+\"Option\ One\"\ \"Option\ Two\"\ \"Option\ Three\"\}\}\n\}\n\npack\ .mydialog\n\nupdate\ idletasks\n\ngpset\ \{\n\ \ \ .mydialog,myentry\ \ \ \ \"Test\ String\"\n\ \ \ .mydialog,mycheck\ \ \ \ 1\n\ \ \ .mydialog,mydrop\ \ \ \ \ \"Option\ Two\"\n\ \ \ .mydialog,radiogroup\ radio2\n\}\n======\ \ \n\n\[MHo\]\ Yes,\ experimenting\ with\ a\ demo\ prog\ and\ reading\ your\ help\ over\ again,\ I\ just\ discovered\ the\ same.\ I\ put\ an\ update\ idletasks\ before\ the\ relevant\ code,\ and\ now\ it\ works\ as\ expected....\ I\ came\ about\ this\ when\ I\ intersperse\ the\ code\ with\ tk_messageBoxes,\ and\ when\ they\ are\ there,\ everything\ worked\ as\ expected,\ so\ it\ seems\ like\ some\ window\ update\ issue...\n\nJust\ went\ back\ here\ to\ remove\ my\ last\ question\ and\ leave\ some\ remarks,\ but\ I\ was\ too\ slow\ (or,\ better:\ you\ were\ too\ fast!)...\;-)\ Thanks!\n\n----\n\n\[MHo\]\ 2012-03-14:\n\ \ \ *\ It\ seems\ that\ using\ '''-title'''\ '''''title'''''\ for\ a\ widget\ automatically\ forces\ the\ '''-relief'''\ value\ to\ '''theme'''?\n\ \ \ *\ Using\ '''-relief\ theme'''\ alone\ (without\ a\ title)\ \"interrupts\"\ the\ border\ where\ otherwise\ the\ title\ would\ be?\n\ \ \ *\ Keyboard\ Shortcuts\ in\ Buttons\ would\ be\ great\ (So\ one\ can\ press\ Alt+O\ for\ Ok,\ or\ Alt+C\ for\ cancel).\n\n\[adavis\]\ 2012-03-15:\n\n`*\ It\ seems\ that\ using\ '''-title'''\ '''''title'''''\ for\ a\ widget\ automatically\ forces\ the\ '''-relief'''\ value\ to\ '''theme'''?`\n\nYes\ that\ is\ the\ case.\ For\ frames\ with\ a\ label/title\ it\ seems\ best\ to\ leave\ it\ up\ to\ the\ theme\ to\ set\ the\ style\ for\ the\ border.\n\n\n`*\ Using\ '''-relief\ theme'''\ alone\ (without\ a\ title)\ \"interrupts\"\ the\ border\ where\ otherwise\ the\ title\ would\ be?`\n\nThis\ is\ the\ result\ of,\ what\ I\ believe\ to\ be,\ a\ long\ standing\ bug\ in\ '''ttk::labelframe'''.\ I\ have\ noticed\ that\ this\ also\ still\ seems\ to\ be\ the\ case\ in\ Tcl\ 8.6.\ I\ have\ developed\ a\ workaround\ which\ works\ on\ XP\ (Themes:\ winnative,\ clam,\ alt,\ default,\ classic,\ and\ xpnative).\ I\ may\ give\ up\ on\ waiting\ for\ the\ bug\ fix\ and\ implement\ the\ workaround...\n\n\n`*\ Keyboard\ Shortcuts\ in\ Buttons\ would\ be\ great\ (So\ one\ can\ press\ Alt+O\ for\ Ok,\ or\ Alt+C\ for\ cancel).`\n\nI'll\ consider\ this\ for\ a\ future\ release.\n\n\[MHo\]\ Another\ question:\n\ \ \ *\ Is\ it\ right,\ that\ the\ '''~command'''-option\ has\ no\ meaning\ with\ '''links'''...?\ That\ is,\ I\ cannot\ overwrite\ the\ autogenerated\ name\ of\ the\ proc\ that\ is\ called\ if\ the\ link\ is\ clicked?\n\n\[adavis\]\ 2012-03-17:\ I\ have\ just\ added\ this\ option\ (and\ the\ '''labelframe'''\ work-around)\ to\ GRIDPLUS\ 2.8\ -\ To\ be\ released\ shortly.\ If\ you\ would\ like\ a\ \"preview\"\ copy\ of\ 2.8\ please\ email\ me.\n\n\n----\n\n\[milarepa\]\ 2012-06-23\ 17:48:44:\n\nI\ am\ trying\ to\ migrate\ my\ software\ from\ version\ 2.6\ to\ 2.8,\ however\ is\ not\ displaying\ correctly\ the\ GUI\ on\ 2.8\ version\ of\ gridplus,\ just\ a\ small\ square\ on\ the\ top\ right\ hand\ corner\ of\ the\ screen.\n\nHere\ is\ my\ source\ code:\n\n\n***\ main.tcl:\ ***\n\n======\npackage\ require\ Tk\npackage\ require\ gridplus\ \nnamespace\ import\ gridplus::*\nset\ c\ 0\;set\ row\ 0\;\ set\ inTime\ 0\;\ set\ nearTime\ 0\;\ set\ pastTime\ 0\nset\ cmbName\ \"\"\;\ set\ cmbWard\ \"\"\noption\ add\ *Gridplus.linkColor\ /blue\noption\ add\ *Gridplus.icon\ right1wbw\ \noption\ add\ *Gridplus.linkStyle\ 10/10\noption\ add\ *Gridplus.labelStyle\ 10/10\nttk::setTheme\ clam\nttk::style\ configure\ title.TLabel\ -font\ \{\"Tahoma\"\ 16\}\ \;\ #\ -foreground\ white\ -background\ dodgerblue\nttk::style\ configure\ TLabel\ -font\ \{\"Tahoma\"\ 10\ bold\}\nttk::style\ configure\ TButton\ -font\ \{\"Tahoma\"\ 10\ bold\}\n#=======================================================================#\n#\ WINDOW\ SETTINGS\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\nwm\ title\ .\ \"TrakPil\"\nbind\ .\ <Escape>\ \{exit\}\nwm\ geometry\ .\ +0+0\n#=======================================================================#\n#\ INCLUDE\ SOURCES\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\nsource\ \"./Menu.tcl\"\nsource\ \"./FormRegistration.tcl\"\n#=======================================================================#\n#\ CONTAINERS\ CONFIGURATION\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\ngridplus\ container\ .ctrMenu\ -height\ 600\ -width\ 150\ -relief\ groove\ -sticky\ new\ngridplus\ container\ .ctrForm\ -height\ 600\ -width\ 700\ -relief\ groove\ -sticky\ new\ngridplus\ container\ .ctrTop\ \ \ -height\ 50\ -width\ 860\ -relief\ ridge\ \ -sticky\ new\ngridplus\ container\ .ctrBtm\ \ \ -height\ 65\ -width\ 860\ -relief\ raised\ -sticky\ new\n#=======================================================================#\n#\ TOP\ BAR\ (TITLE)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\nif\ \{!\ \[gridplus\ window\ .top\ -in\ .ctrTop\]\}\ \{return\}\nttk::label\ .top.lblTitle\ -text\ \"TRAKPIL\ v0.4\ -\ PRESCRIPTION\ TRACKER\ SYSTEM\"\ -style\ title.TLabel\n\ \ \ \ gridplus\ layout\ .top.display\ \{\n\ \ \ \ \ .top.lblTitle:c\ \ \n\ \ \ \ \}\n\ \ \ \ pack\ .top.display\ -expand\ 1\ -fill\ both\n#=======================================================================#\n#\ SET\ LAYOUT\ AND\ DISPLAY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n#=======================================================================#\ngridplus\ layout\ .mainDisplay\ -wtitle\ \"TrakPil\ 0.4\"\ \{\n\ \ \ \ .ctrTop\ \ \ \ \ -\n\ \ \ \ .ctrMenu\ \ \ .ctrForm\n\ \ \ \ .ctrBtm\ \ \ \ \ -\n\}\n\npack\ .mainDisplay\nfocus\ -force\ .mainDisplay\nproc\ formInit\ \{\}\ \{\nif\ \{!\ \[gridplus\ window\ .form\ -in\ .ctrForm\]\}\ \{return\}\n\ \ \ \ foreach\ tag\ \{.\ .form\}\ \{\n\ \ \ \ \ \ \ \ bind\ \$tag\ <F1>\ \{tkcon\ show\}\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Escape>\ \{exit\}\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-1>\ menu:main,registration\ \n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-2>\ menu:main,tracking\ \n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-3>\ menu:main,queue\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-4>\ menu:main,complete\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-5>\ menu:main,logout\n\ \ \ \ \ \ \ \ bind\ \$tag\ <Alt-Key-6>\ menu:main,mainmenu\ \n\ \ \ \ \}\nif\ \{\[winfo\ exists\ .gpValidateError\]\}\ \{wm\ withdraw\ .gpValidateError\}\n\}\nMenu\n======\n\n***\ Menu.tcl:\ ***\n\n======\nproc\ Menu\ \{\}\ \{\n\ \ \ \ formInit\n\ \ \ \ if\ \{!\ \[gridplus\ window\ .menu\ -in\ .ctrMenu\]\}\ \{return\}\n\ \ \ \ gridplus\ link\ .menu.main\ -iconfile\ tkIcons.sat\ \{\n\ \ \ \ \ \ \ \{:\ \"1.\ Registration\"\ .registration\}\n\ \ \ \ \ \ \ \{:\ \"2.\ Tracking\"\ \ \ \ \ .tracking\}\n\ \ \ \ \ \ \ \{:\ \"3.\ Work\ Queue\"\ \ \ .queue\}\n\ \ \ \ \ \ \ \{:\ \"4.\ Scan\ Barcode\"\ .scan\}\n\ \ \ \ \ \ \ \{:\ \"5.\ Complete\"\ \ \ \ \ .complete\}\n\ \ \ \ \ \ \ \{:\ \"6.\ Logout\"\ \ \ \ \ \ \ .logout\}\n\ \ \ \ \}\n\n\ \ \ \ ttk::label\ .form.lblTitle\ -text\ \"\\n\\n\\n\\nPLEASE\ CLICK\ ON\ MENU\ ITEM\\n\\n\\n\\n\\\n\ \ \ \ OR\ PRESS\ ALT\ +\ MENU\ NUMBER\"\ -style\ title.TLabel\ -justify\ center\ \n\ \ \ \ gridplus\ layout\ .form.display\ \{\n\ \ \ \ \ .form.lblTitle:c\n\ \ \ \ \}\n\ \ \ \ pack\ .form.display\ -expand\ 1\ -fill\ both\n\n\ \ \ \ gridplus\ layout\ .menu.display\ \{\n\ \ \ \ \ \ \ \ .menu.main\n\ \ \ \ \}\n\ \ \ \ pack\ .menu.display\ -expand\ 1\ -fill\ both\n\}\nproc\ menu:main,registration\ \{\}\ \{\n\ \ \ \ FormRegistration\n\}\nproc\ menu:main,tracking\ \{\}\ \{\n\ \ \ \ FormTracking\n\}\nproc\ menu:main,queue\ \{\}\ \{\n\ \ \ \ FormQueue\n\}\n======\n\n***\ FormRegistration.tcl:\ ***\n\n======\nproc\ FormRegistration\ \{\}\ \{\n\ \ \ \ formInit\n\ \ \ \ #=======================================================================#\n\ \ \ \ #\ TITLE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n\ \ \ \ #=======================================================================#\n\ \ \ \ ttk::label\ .form.lblTitle\ -text\ \"REGISTRATION\ OF\ PRESCRIPTION\"\ -style\ title.TLabel\n\ \ \ \ #=======================================================================#\n\ \ \ \ #\ REGISTRATION\ FORM\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\n\ \ \ \ #=======================================================================#\n\ \ \ \ gridplus\ entry\ .form.registration\ -validatepopup\ 1\ \{\n\ \ \ \ \ \ \ \{\ \"PATIENT\ DETAILS:\"\}\n\ \ \ \ \ \ \ \{\ \ \ \"Hospital\ Number:\ \"\ \ .txtHospNum\ 20\ \"!int?Please\ enter\ correct\ Hospital\ Number\"\ \}\n\ \ \ \ \ \ \ \{\ \ \ \"Surname:\ \"\ \ \ \ \ \ \ \ \ \ .txtSurname\ 20\ \}\n\ \ \ \ \ \ \ \{\ \ \ \"Forename:\ \"\ \ \ \ \ \ \ \ \ .txtForename\ 20\}\n\ \ \ \ \ \ \ \{&d\ \"Ward:\ \"\ \ \ \ \ \ \ \ \ \ \ \ \ .cmbWard\ 17\}\n\ \ \ \ \ \ \ =\n\ \ \ \ \ \ \ \{\"PRESCRIPTION\ DETAILS:\"\}\ ^\n\ \ \ \ \ \ \ \{&d\ \"Prescription\ Type:\ \"\ .cmbType\ 17\ \}\n\ \ \ \ \ \ \ \{\ \ \ \"Number\ of\ Items:\ \"\ \ \ .txtItem\ 5\ \"!int?Must\ be\ a\ valid\ number\"\ \}\n\ \ \ \ \ \ \ \{&d\ \"Initial\ Comments:\ \"\ \ .cmbComment\ 40\}\n\ \ \ \ \ \ \ \{&c\ \"Fast\ Track\ \"\ \ \ \ \ \ \ \ \ .chkFast\ \ \}\n\ \ \ \ \ \ \ \{&b\ .register\ :actcheck16\ \"Register\"\ !\ |:\ &b\ .clear\ :actstop16\ \"Clear\ Form\"\ \}\n\ \ \ \ \}\n\ \ \ \ .form.registration,cmbComment\ configure\ -state\ normal\n\ \ \ \ #\ click\ to\ open\ comment\ combobox\ because\ is\ editable\ \n\ \ \ \ bind\ .form.registration,cmbComment\ <ButtonPress>\ \{event\ generate\ %W\ <Down>\}\n\ \ \ \ focus\ .form.registration,txtHospNum\n\n\ \ \ \ gpset\ .form.registration,cmbType\ \ \ \ \ \[db\ eval\ \{SELECT\ typename\ FROM\ type\}\]\n\ \ \ \ gpset\ .form.registration,cmbWard\ \ \ \ \ \[db\ eval\ \{SELECT\ wardName\ FROM\ ward\}\]\n\ \ \ \ gpset\ .form.registration,cmbComment\ \ \[db\ eval\ \{SELECT\ comText\ FROM\ comment\}\]\n\ \ \ \ .form.registration,cmbType\ current\ 0\n\n\ \ \ \ gridplus\ layout\ .form.display\ \{\n\ \ \ \ \ .form.lblTitle\n\ \ \ \ \ .form.registration\n\}\n\ \ \ \ pack\ .form.display\ -expand\ 1\ -fill\ both\n\}\n======\n\n\[adavis\]\ 2012-06-27:\ Sorry\ about\ the\ delay\ -\ I've\ been\ away\ for\ a\ few\ days.\ Just\ to\ let\ you\ know\ I'm\ investigating.\ I\ can\ reproduce\ the\ problem,\ which\ seems\ to\ have\ occurred\ between\ 2.7\ and\ 2.8\ -\ Odd\ ,\ as\ there\ were\ no\ major\ changes\ here...\n\n\[adavis\]\ 2012-06-27:\ I\ think\ I\ now\ have\ a\ fix\ for\ this.\ If\ you\ would\ like\ me\ to\ send\ you\ a\ copy\ for\ testing\ please\ email\ me.\n\nEE\ 2012-06-28:\ There's\ an\ error\ on\ your\ website,\ in\ the\ installation\ instructions\ there's\ still\ a\ reference\ to\ version\ 2.7.\n\n\[adavis\]\ 2012-06-29:\ Thanks\ for\ letting\ me\ know\ -\ I'll\ update\ soon.\n\n----\n\n\[MHo\]\ 2012-10-24:\ I've\ buttons\ with\ mixed\ text\ and\ icons,\ here\ are\ some\ examples:\n======\n\{\ &b\ \"Nach\ oben\"\ \ \ \ \ \ \ \ .upList\ \ \ \ \ \ ~m_dlgKS_CB_moveUpInList\ \ \ 15\ <\ %rightGrp2\ :nav1uparrow16\ \ \ \ \}\n\{\ &b\ \"Nach\ unten\"\ \ \ \ \ \ \ .downList\ \ \ \ ~m_dlgKS_CB_moveDownInList\ 15\ <\ %rightGrp2\ :nav1downarrow16\ \ \}\n\{\ &b\ \"Pause\ einfügen\"\ \ \ .pauseList\ \ \ ~m_dlgKS_CB_insPauseInList\ 15\ \ \ \ \ \ \ \ \ \ \ \ \ \ :appclock16\ \ \ \ \ \ \ \}\n======\n\n\ \ \ *\ Is\ it\ possible\ to\ align\ the\ text\ left\ and\ the\ icons\ right\ within\ the\ button?\ In\ the\ example\ above,\ the\ icons\ are\ on\ the\ left\ side,\ and\ everything\ is\ centered.\ I\ Tried\ \"Nach\ oben:e\",\ but\ it\ has\ no\ effect\ (The\ \":e\"\ becomes\ visible\ part\ of\ the\ button\ text\ instead....).\n\ \ \ *\ Another\ question:\ I\ have\ a\ dialogue\ with\ mixed\ buttons\ and\ two\ tablelists.\ The\ tablelists\ do\ not\ gain\ focus\ during\ keyboard\ traversal,\ even\ with\ -takefocus\ 1.\ What\ could\ be\ wrong?\n\n\[adavis\]\ 2012-11-09:\ Sorry\ about\ the\ delay\ -\ I\ missed\ this\ Wiki\ update...\n\nTo\ have\ the\ button\ images\ on\ the\ right\ you\ can\ specify\ the\ '''-compound\ right'''\ option.\ To\ force\ the\ text\ to\ be\ left\ justified\ pad\ out\ the\ shorter\ text(s)\ with\ trailing\ spaces:-\n\n======\ngridplus\ widget\ .mygrid\ -compound\ right\ \{\n\ \ \ \ \{&b\ \"Nach\ oben\ \ \ \ \ \ \ \ \"\ .upList\ \ \ \ ~m_dlgKS_CB_moveUpInList\ \ \ 15\ <\ %rightGrp2\ :nav1uparrow16\ \ \}\n\ \ \ \ \{&b\ \"Nach\ unten\ \ \ \ \ \ \ \"\ .downList\ \ ~m_dlgKS_CB_moveDownInList\ 15\ <\ %rightGrp2\ :nav1downarrow16\}\n\ \ \ \ \{&b\ \"Pause\ einfügen\"\ \ \ \ .pauseList\ ~m_dlgKS_CB_insPauseInList\ 15\ \ \ \ \ \ \ \ \ \ \ \ \ \ :appclock16\ \ \ \ \ \}\n\}\n======\n\nCan\ you\ give\ me\ sample\ code\ to\ demonstrate\ the\ Tablelist\ focus\ issue?\n\n\[MHo\]:\ Thanks\ for\ response.\ I'll\ have\ to\ put\ some\ demo\ together,\ as\ I\ cannot\ post\ or\ mail\ the\ actual\ code,\ as\ it's\ part\ of\ my\ shell\ around\ gridplus2\ and\ therefore\ not\ executable\ by\ itself\ but\ my\ interpretring\ \[Simple\ Program\ Menu\].\n\n----\n\n\[MHo\]:\ How\ to\ alter\ the\ title\ of\ a\ labelframe\ around\ a\ textbox\ dynamically?\n\n\[adavis\]\ 2013-01-28:\ If\ you\ created\ this\ textbox...\n\n======\ngridplus\ text\ .mytext\ -width\ 25\ -height\ 8\ -scroll\ y\ -title\ \"Text\ Box\"\n======\n\n...You\ could\ change\ the\ title\ like\ this...\n\n======\n.mytext\ configure\ -text\ \"New\ Title\"\n======\ \n\n----\n\n\[MHo\]:\ Is\ there\ an\ essential\ difference\ between\ inserting\ text\ into\ a\ text\ widget\ via\n\n======\ngpinsert\ name\ index\ text\n======\n\nand\n\n======\nname.text\ insert\ index\ text\n======\n\n?\ I\ want\ to\ use\ ''tags'',\ which\ is\ as\ far\ as\ I\ know\ not\ possible\ with\ ''gpinsert''.\n\n\[adavis\]\ 2013-01-30:\ Yes\ there\ is\ a\ difference.\ For\ editable\ text\ widgets\ it\ ensures\ that\ value\ for\ the\ widget\ and\ the\ modfied\ flag\ are\ updated.\ For\ tags\ enabled\ text\ widgets\ it\ ensures\ that\ the\ tags\ are\ processed.\n\nI'm\ not\ sure\ what\ you\ are\ planning\ to\ do\ with\ the\ tags,\ but\ the\ GRIDPLUS\ text\ widget\ does\ support\ some\ HTML\ style\ tag\ definitions\ -\ See\ http://www.satisoft.com/tcltk/gridplus2/text.html#text-example4%|%This\ Example%|%.\n\nThe\ GRIDPLUS\ tags\ reference\ can\ be\ found\ http://www.satisoft.com/tcltk/gridplus2/tags.html%|%Here%|%.\n\nThe\ GRIDPLUS\ tags\ can\ be\ used\ with\ '''gpinsert'''\ -\ If\ you\ created\ this\ textbox...\n\n======\ngridplus\ text\ .mytext\ -menu\ .mymenu\ -tags\ 1\n\ \ngridplus\ layout\ .main\ -wtitle\ \"Text\ Example\"\ \{\n\ \ \ \ .mytext\n\}\n\ \npack\ .main\n\ngpset\ .mytext\ \{\n<b>This\ Text\ is\ Bold</b>\nThis\ text\ is\ not\ bold\n\}\n======\n\n...You\ can\ use\ the\ '''gpinsert'''\ command\ like\ this...\n\n======\ngpinsert\ .mytext\ end\ \"Here\ is\ some\ <color\ red>red</color>\ text\"\ngpinsert\ .mytext\ end\ \"Here\ is\ some\ <color\ blue>blue</color>\ text\"\ngpinsert\ .mytext\ end\ \"<u>This\ text</u>\ is\ underlined\"\n======\n\n----\n\n\[sai\]\ 2013-06-07:\n\nHow\ can\ I\ use\ tcl's\ built-in\ commands?\ e.g.\"text\ .t\ \;\ .t\ see\ end\"\nIt\ is\ autoscrolling\ in\ textbox.\ I\ am\ not\ sure\ whether\ \ the\ gridplus2\ also\ can\ likes\ it's\ effect\ or\ not.\nThanks.\n\n\[adavis\]\ 2013-06-07:\ If\ you\ have\ created\ a\ GRIDPLUS\ text\ widget\ called\ \".mywidget\"...\n======\n.mywidget.text\ see\ end\n======\n...should\ do\ what\ you\ require.\n\n'''NOTE:'''\ The\ naming\ convention\ used\ for\ GRIDPLUS\ widgets\ can\ be\ found\ http://www.satisoft.com/tcltk/gridplus2/reference.html#names%|%Here%|%.\n\n\[sai\]\ 2013-06-10:\ This\ can\ be\ seen\ in\ the\ following\ example.\n\n======\ngridplus\ text\ .mywidget\ -state\ disabled\ -font\ \{courier\ 8\}\ -scroll\ xy\ -wrap\ none\n.mywidget.text\ see\ end\n======\n\n\[adavis\]\ 2013-06-10:\ I'm\ sorry\ \[sai\]\;\ I\ obviously\ don't\ understand\ your\ issue\ correctly.\ Can\ you\ provide\ more\ detail?\ What\ are\ you\ expecting\ to\ see?\n\n\[sai\]\ 2013-06-10:\ The\ following\ example\ don't\ have\ effect\ of\ auto\ scrolling.\ \n\n======\npackage\ require\ gridplus\ \nnamespace\ import\ gridplus::*\n\ngridplus\ text\ .mywidget\ \ -scroll\ xy\ \ -wrap\ none\ \ngridplus\ layout\ .main\ -wtitle\ \"Test\"\ \{\n\ \ \ \ \ \ .mywidget\n\}\npack\ .main\n\nfor\ \{set\ i\ 1\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\nafter\ 300\ngpinsert\ .mywidget\ \$i\ \$i\ \;update\n\}\n======\n\nBut\ I\ think\ the\ information\ in\ text\ that\ can\ presented\ immediately\ \;\ in\ other\ words,\ the\ scroll\ bar\ was\ scrolled\ with\ text\ together.\n\n======\npackage\ require\ gridplus\ \nnamespace\ import\ gridplus::*\n\ngridplus\ text\ .mywidget\ \ -scroll\ xy\ \ -wrap\ none\ \ngridplus\ layout\ .main\ -wtitle\ \"Test\"\ \{\n\ \ \ \ \ \ .mywidget\n\}\npack\ .main\n\nfor\ \{set\ i\ 1\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\nafter\ 300\ngpinsert\ .mywidget\ \$i\ \$i\ \;update\n#effect\ of\ auto\ scrolling\ ?\n.mywidget.text\ see\ end\n\}\n======\n\n\[adavis\]\ 2013-06-10:\ I\ would\ recommend\ something\ like\ your\ second\ example\ -\ Though\ I\ think\ \"`'''update\ idletasks'''`\"\ \ would\ be\ preferred.\ You\ can\ also\ insert\ at\ the\ \"`'''end'''`\"...\n\n======\nfor\ \{set\ i\ 1\}\ \{\$i\ <\ 30\}\ \{incr\ i\}\ \{\n\ \ \ \ after\ 300\n\ \ \ \ gpinsert\ .mywidget\ end\ \$i\n\ \ \ \ update\ idletasks\n\ \ \ \ .mywidget.text\ see\ end\n\}\n======\n\nI\ will\ be\ adding\ a\ '''-seeinsert'''\ option\ to\ the\ text\ widget\ in\ the\ next\ release\ of\ GRIDPLUS.\ If\ you\ would\ like\ a\ pre-release\ copy\ of\ GRIDPLUS\ 2.10\ please\ send\ me\ an\ email.\n\n\[sai\]\ 2013-06-10:\ Cool,this\ is\ great\ grid\ manager.I\ very\ like\ your\ gridplus2.\ I\ have\ \ emailed\ to\ you.\n\n\[sai\]\ 2013-06-14:\ Hello,\ \[adavis\].\ I\ try\ tablelist\ of\ gridplus2,\ it\ present\ the\ error\ messages\ in\ the\ following\ example:\n\n======\ngridplus\ tablelist\ .mytable\ \{\n\ \ \ \ 4\ \"Column1\"\n\ \ \ \ 4\ \"Column2\"\n\ \ \ \ 0\ \"Column3\"\n\}\n\ngridplus\ layout\ .main\ -wtitle\ \"Tablelist\ Example\"\ \{\n\ \ \ .mytable\n\}\n\npack\ .main\n======\n\nerror\ message\n\n======none\ncan't\ access\ \"::tablelist::ns.::data\":\ parent\ namespace\ doesn't\ exist\ncan't\ access\ \"::tablelist::ns.::data\":\ parent\ namespace\ doesn't\ exist\n\ \ \ \ while\ executing\n\"upvar\ ::tablelist::ns\$\{win\}::data\ data\"\n\ \ \ \ (procedure\ \"tablelist::addActiveTag\"\ line\ 2)\n\ \ \ \ invoked\ from\ within\n\"tablelist::addActiveTag\ .\"\n\ \ \ \ (command\ bound\ to\ event)\n======\n\nMy\ tcl\ is\ Active\ 8.15.13\ ,tablelist\ is\ 5.9.\n\n\[adavis\]\ 2013-06-14:\ I\ have\ tried\ this\ example\ with\ Tcl/Tk\ 8.5.11\ and\ 8.6.0,\ each\ of\ these\ with\ Tablelist\ 5.8\ and\ 5.9\ -\ I\ cannot\ reproduce\ this\ error.\ The\ above\ error\ messages\ come\ from\ the\ Tablelist\ package\ -\ Maybe\ Csaba\ will\ be\ able\ to\ help?\n\n\[Csaba\ Nemethi\]\ 2013-06-17:\ The\ reported\ error\ message\ was\ due\ to\ the\ fact\ that\ the\ name\ of\ the\ Tcl\ script\ was\ \"tablelist.tcl\",\ thus\ the\ main\ window\ \".\"\ had\ the\ class\ name\ \"Tablelist\".\ This\ is\ no\ Tablelist-specific\ problem:\ A\ script\ named\ \"entry.tcl\"\ or\ \"listbox.tcl\",\ etc.\ will\ equally\ throw\ error\ messages\ on\ Windows,\ for\ the\ same\ reason.\n\n\[sai\]:\ Yes,thank\ reply\ of\ \[Csaba\ Nemethi\].\n\n----\n\n\[milarepa\]\ 2013-08-29\ 09:50:52:\n\nI\ need\ to\ position\ a\ scrollbar\ on\ the\ left\ side\ of\ a\ text\ widget.\ On\ plain\ Tcl/Tk\ a\ scrollbar\ is\ like\ another\ widget,\ so\ it\ is\ possibe\ to\ position\ it\ where\ we\ want.\ How\ can\ I\ achieve\ this\ in\ gridplus?\n\n\[adavis\]\ 2013-08-29:\ I'm\ sorry,\ GRIDPLUS\ doesn't\ currently\ have\ that\ option.\ I\ may\ add\ this\ in\ GRIDPLUS\ 2.11.\ In\ the\ meantime,\ you\ could\ try\ something\ like...\n\n======\ngrid\ .mytext.ybar\ -row\ 0\ -column\ 0\ -sticky\ ns\ngrid\ .mytext.text\ -row\ 0\ -column\ 1\ -sticky\ nsew\n======\n\n...to\ swap\ the\ positions\ (assuming\ the\ GRIDPLUS\ '''text'''\ is\ called\ \".mytext\").\n\n\[milarepa\]\ 2013-08-29\ 12:56:43:\ Thank\ you\ \[adavis\].\ It\ works!\n\n----\n\n\[MHo\]\ 2013-08-30:\ Can't\ figure\ out\ how\ to\ dynamically\ enable\ or\ disable\ a\ menu\ entry\ (within\ a\ popup\ menu).\ I\ can\ create\ in\ disabled\ state\ with\ <,\ ok,\ but\ then\ how\ to\ switch\ state\ later?\n\n\[adavis\]\ 2013-08-30:\ GRIDPLUS\ widget\ and\ menu\ option\ states\ can\ be\ set\ dynamically\ using\ \"'''Groups'''\"\ -\ See\ http://www.satisoft.com/tcltk/gridplus2/groups.html\n\n\[MHo\]\ Yes\ I\ know,\ but\ I\ thought\ there\ was\ a\ way\ to\ enable/disable\ individual\ objects\ by\ their\ name,\ not\ only\ via\ groups...\n\n\[adavis\]\ 2013-08-30:\ I'm\ sorry,\ \"'''Groups'''\"\ is\ the\ supported\ GRIDPLUS\ way\ to\ do\ this.\n\n----\n\[kap\]\ 2014-07-03:\ Is\ there\ a\ way\ to\ add\ icons\ so\ they\ are\ not\ buttons,\ and\ do\ not\ have\ a\ proc\ associated\ with\ them\ (like\ if\ I\ could\ set\ an\ icon\ to\ a\ label)?\ Currently\ I\ set\ the\ icon\ as\ a\ link\ and\ create\ a\ dummy\ proc\ so\ it\ doesn't\ try\ and\ execute\ a\ command\ when\ clicking\ as\ so:\n\n======\ngridplus\ widget\ .statusbar\ -relief\ groove\ -stretch\ 0\ \{\n\ \ \ \ \{\"^Connection\ Status:\ \"\ .status\}\ \{&l\ .connect\ :disconnect\}\n\}\nproc\ statusbar,connect\ \{\}\ \{\}\n======\n\n\[kap\]\ 2014-07-03:\ Also\ is\ there\ a\ way\ to\ dynamically\ change\ the\ icon\ set\ to\ a\ gridplus\ widget?\ In\ the\ code\ above\ I'd\ like\ to\ be\ able\ to\ dynamically\ change\ the\ .statusbar,connect\ icon\ from\ \"disconnect\"\ to\ \"connect\"\ later\ in\ my\ code.\n\n\[adavis\]\ 2014-07-06:\ Assuming\ you\ have\ already\ created\ two\ images\ called\ \"connect\"\ and\ \"disconnect\",\ I\ would\ suggest...\n\n======\ngridplus\ widget\ .statusbar\ -relief\ groove\ -stretch\ 0\ \{\n\ \ \ \ \{\"^Connection\ Status:\ \"\ .status\}\ \{.connect\}\n\}\n\n.statusbar,connect\ configure\ -image\ disconnect\n======\n\n...you\ can\ then\ change\ the\ icon\ using...\n\n======\n.statusbar,connect\ configure\ -image\ connect\n======\n\nIf\ what\ you\ are\ actually\ trying\ to\ do\ is\ have\ the\ text\ \"Connection\ Status:\"\ with\ the\ icon\ immediately\ to\ the\ right,\ it\ can\ be\ simplified\ to\ something\ like...\n\n======\ngridplus\ widget\ .statusbar\ -relief\ groove\ -stretch\ 0\ \{\n\ \ \ \ \{\"^Connection\ Status:\ \"\ .connection\}\n\}\n\n.statusbar,connection\ configure\ -image\ disconnect\n======\n\n----\n\n\[kap\]\ 2014-08-04:\ Is\ there\ a\ way\ to\ configure\ a\ gridplus\ entry\ box\ to\ dynamically\ resize\ as\ the\ window\ size\ changes?\n\n\[adavis\]\ 2014-08-08:\ Yes.\ You\ need\ to\ use\ the\ \"-stretch\"\ option\ on\ the\ widget/entry\ grid\ and\ the\ \":ew\"\ anchor\ suffix\ on\ the\ entry\ widgets\ that\ are\ to\ be\ resized.\n\nFor\ example:\ If\ your\ window\ only\ contains\ and\ a\ widget/entry\ grid...\n\n======\ngridplus\ entry\ .myentry\ -stretch\ 0\ -width\ 30\ -title\ \"Entry\ Grid\"\ \{\n\ \ \ \{\"Entry\ One\"\ \ \ .entry1:ew\}\n\ \ \ \{\"Entry\ Two\"\ \ \ .entry2:ew\}\n\ \ \ \{\"Entry\ Three\"\ .entry3:ew\}\n\}\n\ngridplus\ pack\ .myentry\ -resize\ xy\n======\n\nIf\ the\ widget/entry\ grid\ is\ in\ a\ layout\ then\ the\ `:ew`\ anchor\ suffix\ must\ also\ be\ specified\ for\ the\ grid\ in\ the\ layout...\n\n======\ngridplus\ entry\ .myentry\ -stretch\ 0\ -width\ 30\ -title\ \"Entry\ Grid\"\ \{\n\ \ \ \{\"Entry\ One\"\ \ \ .entry1:ew\}\n\ \ \ \{\"Entry\ Two\"\ \ \ .entry2:ew\}\n\ \ \ \{\"Entry\ Three\"\ .entry3:ew\}\n\}\n\ngridplus\ layout\ .mylayout\ -wtitle\ \"Resize\ Example\"\ \{\n\ \ \ .myentry:ew\n\}\n\ngridplus\ pack\ .mylayout\ -resize\ xy\n======\n\n----\n\n\[kap\]\ 2014-10-17:\ Is\ it\ possible\ to\ configure\ a\ grid\ such\ that\ the\ widgets\ will\ stretch\ to\ fill\ the\ rest\ of\ the\ grid,\ right\ up\ to\ the\ next\ widget?\ For\ example,\ the\ entry\ box\ in\ the\ following\ entry\ grid,\ when\ stretched,\ resizes\ only\ to\ the\ midpoint\ of\ the\ window.\ This\ is\ the\ expected\ behavior\ since\ it\ is\ filling\ its\ half\ of\ the\ grid,\ though\ I'd\ like\ it\ to\ instead\ stretch\ all\ the\ way\ to\ the\ button\ as\ it's\ resizing.\n\n======\ngridplus\ entry\ .entry\ -stretch\ 0\ \{\n\ \ \ \ .entry:ew\ \{&b\ .button\ Foo\}\n\}\n\ngridplus\ layout\ .main\ \{\n\ \ \ \ .entry:ew\n\}\n\ngridplus\ pack\ .main\ -resize\ x\n======\n\n\[LAM\]\ 2014-10-18:\ What\ about\ this\ ?\n\n======\ngridplus\ entry\ .entry\ -stretch\ 0\ \{\n\ \ \ \ \{entry\ .entry:ew\ \}\n\}\n\ngridplus\ button\ .button\ \ \{\n\ \ \ \ \{Foo\ .button\ \}\ \n\}\n\ngridplus\ layout\ .main\ \{\n\ \ \ \ .entry:ew\n\ \ \ \ ^\ .button+\n\}\n\ngridplus\ pack\ .main\ -resize\ x\n======\n\n\[adavis\]\ 2014-10-20:\ You\ can\ use\ \"-spacestretch\"...\n\n======\ngridplus\ entry\ .entry\ -stretch\ 0\ -spacestretch\ \{000\}\ \{\n\ \ \ \ .entry:ew\ \{&b\ .button\ Foo\}\n\}\n\ngridplus\ layout\ .main\ \{\n\ \ \ \ .entry:ew\n\}\n\ngridplus\ pack\ .main\ -resize\ x\n======\n\n----\n\n\[kap\]\ 2014-11-03:\ Is\ there\ a\ way\ to\ tie\ an\ ensemble\ command\ to\ a\ widget\ specified\ in\ a\ grid?\ For\ example,\ let's\ say\ there\ exists\ ensemble\ commands\ \[foo\ bar\]\ and\ \[foo\ baz\]\ that\ should\ be\ fired\ when\ certain\ buttons\ in\ a\ \[gridplus\ button\]\ grid\ are\ pushed.\n\n\[adavis\]\ 2014-11-10:\ I've\ not\ tried\ ensemble\ commands\ -\ In\ what\ way\ would\ calling\ them\ be\ different\ to\ \"normal\"\ commands?\n\n\[kap\]\ 2014-11-11:\ I\ ended\ up\ using\ the\ configure\ method\ of\ the\ widget\ object\ to\ add\ the\ ensemble\ command\ explicitly.\ I\ was\ curious\ if\ it\ were\ possible\ to\ do\ this\ via\ the\ gridplus\ syntax\ similar\ to\ the\ following\ where\ I'd\ like\ \[foo\ bar\]\ to\ fire\ when\ .b,b1\ is\ pressed\ (this\ fails,\ shown\ to\ supplement\ the\ question).\n\n======\ngridplus\ button\ .b\ \{\n\ \ \ \{Foo\ .b1\ ~\{foo\ bar\}\}\ \{Bar\ .b2\}\n\}\n======\n\n\[adavis\]\ 2014-11-14:\ Have\ you\ tried\ the\ following?:-\n\n======\ngridplus\ button\ .b\ \{\n\ \ \ \{Foo\ .b1\ \"~foo\ bar\"\}\ \{Bar\ .b2\}\n\}\n======\n\n\[kap\]\ 2014-11-16:\ Works\ great,\ thanks.\n\n----\n\n\[kap\]\ 2014-11-16:\ Bug\ report,\ with\ gridplus\ 2.10,\ the\ gridplus\ text\ find\ dialog\ throws\ errors\ whenever\ a\ string\ beginning\ with\ \"-\"\ (ambiguous\ switch\ error)\ is\ provided.\n\n\[adavis\]\ 2014-11-22:\ That's\ odd.\ I\ thought\ I'd\ fixed\ that\ in\ 2.10\ -and-\ it\ does\ seem\ to\ work\ OK\ with\ my\ 2.10\ installation.\ Are\ you\ sure\ you\ are\ actually\ using\ 2.10?\ ('''package\ version\ gridplus''')\ -\ If\ so,\ can\ you\ give\ me\ some\ sample\ code\ which\ has\ this\ problem?\n\n\[kap\]\ 2014-11-22:\ Just\ did\ a\ fresh\ install\ of\ 2.10\ (and\ verified\ with\ \[package\ version\ gridplus\]).\ After\ requiring\ /\ importing\ the\ package\ this\ snippets\ generates\ the\ problem:\n\n======\ngridplus\ text\ .t\n\ngridplus\ pack\ .t\n======\n\nUpon\ right-clicking\ the\ text\ box\ and\ selecting\ 'Find',\ I\ select\ the\ 'Find\ What'\ box\ and\ input\ a\ hyphen\ '-'\ and\ click\ the\ 'Find\ Next'\ button.\ This\ yields\ an\ error\ dialog\ \"Error:\ ambiguous\ switch\ \"-\":\ must\ be\ --,\ -all...\".\n\n\[adavis\]\ 2014-11-24:\ Thanks\ for\ pointing\ this\ out\ -\ It\ seems\ I'd\ only\ fixed\ one\ of\ the\ text\ find\ procedures.\ I\ have\ fixed\ this\ in\ version\ 2.11.\n\n----\n\n\[MHo\]\ 2016-03-29:\ How\ to\ delete\ all\ data\ rows\ from\ a\ tablelist\ (like\ a\ reset\ to\ initial\ state\ -\ i\ mean\ something\ .x\ delete\ 0\ end)?\n\n\[adavis\]\ 2016-04-11:\ The\ following\ should\ do\ what\ you\ require:-\n\n======\ngpset\ .mytable\ \{\}\n======\n\n----\n\n\[beware\]\ 2016-04-11:\ What's\ the\ best\ way\ of\ doing\ scrolled\ frames?\ If\ it\ matters\ I\ have\ a\ notebook\ within\ a\ notebook\ and\ for\ each\ of\ the\ slave\ notebook\ tabs\ I\ would\ like\ to\ put\ a\ scrolled\ frame.\ \ BWidgets\ Scrollable\ Frame\ doesn't\ seem\ to\ work\ for\ me.\n\n\[adavis\]\ 2016-04-21:\ I'm\ afraid\ GRIDPLUS2\ does\ not\ have\ a\ scrolled\ frame.\n----\n\[MHo\]\ 2016-05-02:\ I\ noticed\ that\ popping\ up\ a\ -menu\ (with\ right\ click)\ from\ a\ tablelist\ clears\ the\ selected\ rows\ (in\ modes\ multiple\ or\ extended)...\n\n\[MHo\]\ 2016-05-02:\ I\ missed\ the\ -underline\ option\ here\ and\ there.\ How\ to\ specify\ accelerator\ keys\ for\ buttons,\ e.g.?\n\n\[MHo\]\ 2016-11-13:\ The\ '''spinbox'''\ should\ support\ a\ -command\ so\ that\ things\ could\ be\ triggered\ when\ the\ value\ changes.\ Workaround\ is\ to\ use\ a\ trace.\n\n\[adavis\]\ 2016-11-16:\ Thanks\ for\ the\ suggestion\ -\ I'll\ add\ it\ to\ the\ list.\n\n\[MHo\]\ 2016-11-18:\ Thanks!\ Is\ there\ a\ way\ to\ centrally\ manage\ ''tooltips''?\ Something\ like\ this\ would\ be\ very\ helpfull:\n======\ngpset\ tooltips\ \{\n\ \ \ widget\ \{text...\}\n\ \ \ widget\ \{text...\}\n\ \ \ :\n\}\n\n<<categories>>\ Dev.\ Tools\ |\ GUI\ |\ Package} CALL {my revision GRIDPLUS2} CALL {::oo::Obj46465 process revision/GRIDPLUS2} CALL {::oo::Obj46463 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4