Pave, sort of geometry manager

Difference between version 9 and 10 - Previous - Next
The '''pave''' software provides a sort of geometry management for Tcl/Tk.

The '''pave''' isn't designed to replace the existing Tk geometry managers (Tk GMs). Rather it tries to simplify the window layout by using their best.

The Tk GMs have the following drawbacks:

   * The '''place''' is good when you need e.g. the overlapping popup messages. Still it is rarely used because of its complexity esp. when you need a resizable window of multiple widgets.

   * The '''pack''' is very good for simple layouts. But if your layout is growing in contents and complexity, its packs start being more and more tricky, sometimes even mystic.

   * The '''grid''' is best of all. However it is tiresome and tricky at the modifications of existing layouts. The inserting/removing a cell can become a real torment with those recalculations of cells/rows and sticky/weight attributes. The usage of relative (- x ^) grid is restricted with simple layouts of table type.

All of the Tk GMs have the common drawback consisting in that the widgets' creation, configuration and layout are separated in space and time. In practice it means that to modify the layout you need look at the 2-3-4.. places of your code, namely the widgets creation / configuration / geometry management. You are happy if those separated places are spanned by your editor's screen.

The proposed '''pave''' allows you to get rid of these drawbacks by means of:

   * uniting the creation of widgets (and mostly their configuration) with their layout
   * minimizing a coder's efforts at inserting/removing and naming/accessing widgets
   * using a batch of 'mega-widgets'
   * joining the power of grid and pack

The '''pave''' is implemented as ''PaveMe oo::class'', so that you can enhance it with your own inherited class.

Also, you can employ ''PaveDialog oo::class'' and ''PaveInput oo::class'' that allow you:

   * to call the standard dialogs with a checkbox of "Don't show again" type
   * to call the standard dialogs with tagged text
   * to call the input dialog using entry, combobox, text, spinbox, checkbutton, radiobutton, file / directory / color / font / date pickers
   * to use menubar, toolbar, statusbar and the mentioned pickers as 'mega-widgets'
   * to resize windows neatly (however strange, not done in Tk standard dialogs)
The theming facility of pave is enabled by ''ObjectTheming oo::class'' which embraces ''ttk'' as well as ''non-ttk'' widgets. This is seen on [https://aplsimple.bitbucozket.ru/dioc/pave_files/test2pave.mp4%|%the demo video%|%].

** **

'''Further details:'''
https://aplsimple.bitbucozket.ru/dio/en/tcl/pave.html

** **

'''Download link:'''
https://aplsimple.bitbucozket.ruio/mbiscn/pave.rar

** **

'''Demo video (6.3 Mb) link:'''
https://aplsimple.bitbucozket.ru/dioc/pave_files/test2pave.mp4

** **

Below are some few PaveMe, PaveDialog, PaveInput and ObjectTheming demo screenshots, just to give a glance at this stuff.

** **
[https://aplsimple.bitbucozket.ru/dio/en/tcl/pave_/files/findreplace.jpg%|%PaveMe example%|%]
''Figure 1. PaveMe example described line by line in https://aplsimple.bitbucozket.ru/dio/en/tcl/pave/index.html#example_Pave. ''

** **
[https://aplsimple.bitbucozket.ru/dio/en/tcl/pave_/files/dialog2.png%|%Common PaveDialog instance%|%]

''Figure 2. Common PaveDialog instance.''

** **
[https://aplsimple.bitbucozket.ru/dio/en/tcl/pave_/files/dialog5.png%|%Tagged text instance of PaveDialog%|%]

''Figure 3. Tagged text PaveDialog instance.''

** **
[https://aplsimple.bitbucozket.ru/dio/en/tcl/pave_/files/dialog8.png%|%Input instance of PaveDialog%|%]

''Figure 4. PaveInput instance.''

** **
[https://aplsimple.bitbucozket.ru/dio/en/tcl/pave_/files/test2.png%|%test2_pave.tcl demo%|%]

''Figure 5. Screenshot of test2_pave.tcl''.

** **
[https://aplsimple.bitbucozket.ru/dio/en/tcl/pave_/files/test2t.png%|%test2_pave.tcl demo themed%|%]

''Figure 6. The same as above, just themed''.

** **