The Docking framework v2.0 is a tool to create the paned GUI.
It is an enhanced version of Docking framework, the diamond in need of cutting.
The main cuttings of Docking framework v2.0 are
The last point should be detailed, as it might be interesting for those interested.
The main problem is the layouts with multiple ttk::notebook tabs in a ttk::panedwindow.
With such layouts, you should use a selected tab's sizes to save/restore the ttk::panedwindow's sizes. Otherwise, the latter would be distorted.
In a pseudo code, it might look as follows.
At saving:
for {set i 0} {$i<$number_of_tabs} {incr i} { set frame [path_to_tab's_frame $i] set notebook [container_of_the_frame $frame] if {$notebook ne {} && [$notebook select] eq $frame} { set width [winfo width $frame] set height [winfo height $frame] save_sizes_of_frame $frame $width $height } }
At restoring:
for {set i 0} {$i<$number_of_tabs} {incr i} { set frame [path_to_tab's_frame $i] lassign [frame_saved_sizes $frame] width height if {[string is digit -strict $width] && [string is digit -strict $height]} { $frame configure -width $width -height $height } }
The usage of Docking framework v2.0 is straightforward:
tclsh dockingFW.tcl
More details are in the framework's README.md .
As for visual effects, the usage is rather detailed in the demo video .