#1289 is a precondition for pyzo in Leo. There was big progress yesterday.
Status
The code creates an Outlines dock, containing one tab for each Leo outline. Each of these tabs contains what might loosely be called an outline window, containing Leo's familiar Outline, Body and Tabs panes/docks. Each of tab (outline window) works exactly as before.
Refactoring is largely complete. Leo's legacy DynamicWindow class remains exactly as it always has been. This is why each tab in the Outlines dock works as before. It's a very welcome development.
Global vs local docks
I struggled with refactoring until the distinction between global and local docks arose:
Global docks are singletons shared by all of Leo's code. All of pyzo's docks must be global, with the possible exception of the File Browser dock.
Each outline window creates (and has always created) its own local docks. There are good reasons to retain local docks. Users can arrange docks in each outline as they like, independently of other outlines.
Remaining work
The present code lacks some important code from the legacy LeoTabbedTopLevel and TabbedFrameFactory classes. The relevant code will likely migrate to a new, singleton, OutlinesTabs class.
While investigating startup issues, I saw the need for
#1291. This issue isn't essential for singleton docks, but I'll probably do it soon, in yet another git branch.
Summary
After a period of confusion, yesterday saw rapid progress. The distinction between global and local docks ended lots of confusion.
Considerable work remains, but the remaining work should be straightforward.
Edward