The apave package provides a sort of geometry manager for Tcl/Tk.
The apave isn't designed to replace the existing Tk geometry managers (place, pack, grid). Rather the apave tries to simplify the window layout by using their best, by means of:
- joining the power of grid and pack
- uniting a creation of widgets with their layout (and mostly their configuration)
- minimizing a coder's efforts at creating / modifying / removing widgets
- setting a natural tab order of widgets
- theming both ttk and non-ttk widgets
- centralizing things like icons or popup menus
- providing 'mega-attributes', right up to the user-defined ones
- providing 'mega-widgets'
The apave is implemented as APave oo::class, so that you can enhance it with your own inherited / mixin-ed class.
While APave oo::class allows to layout highly sophisticated windows, you can also employ its more 'earthy' descendants:
APaveDialog oo::class and APaveInput oo::class that allow you: to call a variety of dialogs, optionally using a "Don't show again" checkbox and a tagged text to use a variety of widgets in dialogs, with entry, text (incl. readonly and stand-alone), combobox (incl. file content), spinbox, listbox, file listbox, tablelist, option cascade, checkbutton, radiobutton and label (incl. title label). to resize windows neatly (however strange, not done in Tk standard dialogs)
The theming facility of apave is enabled by ObjectTheming oo::class which embraces both ttk and non-ttk widgets.
At last, a stand-alone dialog allows not only to ask "OK/Cancel" or "Yes/No" returning 1/0 but also to set environment variables to use in shell scripts.
Along with standard widgets, the mentioned apave classes provide a batch of following 'mega-widgets':
- file picker
- saved file picker
- directory picker
- font picker
- color picker (special for Linux)
- date picker
- file combobox
- file listbox
- file viewer/editor
- option cascade
- bar of tabs
- scrolled frame
Also, apave provides a bundle of nice little things like:
- button / label with a bound command to fire after a timeout
- progress form for a boot process presumably long
- blinking widgets to draw attention
- default context menus for entries and texts, incl. read-only ones
- configurable balloon messages and tooltips
- tagged texts
- changing images and links embedded into texts
- 25 light and 25 dark color schemes, optionally tinted
- 74 icons (small & large) for a good deal of occasions
- customized dimensions of Tcl/Tk Unix's file / directory choosers and enhanced color / date choosers
- integration with e_menu to expand an application's facilities
- opening dialogues as modal / non-modal, closed / not closed with Escape key
- simple [pobj Widget] instead of messy .win.fra1.fra2.and_so_on.widget for configurable widgets
- Hungarian notation for widget names consistently divided into ttk and non-ttk widgets
In fact, apave has been intended for those programmers who (like me) are too lazy in order to dig in the endless interference of grid and pack, the widget pathes and, most dreadful of all, the belated modifications of GUI.
Below is a screenshot of alited developed with heavy usage of apave package:
... and its localized and themed variant:
... and its themed variant on MS Windows 10:
For more details: