I am thinking of possibly removing the top and bottom side panels.
I think Franz's suggestion of using tabs instead of arrays for the side panels would also be a good fix.
To go even further, there would be tabs for each document.
However the two side panels would remain, and need to be refreshed (Perhaps an OnDocumentChanged method for plugins to make use of?)
I am also thinking about the Prompt.
What if the Prompt is permanent (you can still hide it, have it hidden by default), and tabbed, so that:
Opening a new prompt will create a new tab,
ditto for running a program.
You could have more than one interpreter window open, and the current program, running all at once.
Also, a new prompt would only be created when used, and not automatically for each open document.
this could be an option: (it is a good idea, but i could imagine, that it costs some performance).
For prompt, i cannot say something (i almost never
Sounds like a nice idea. How about we close the tabs by a double click? Also I just wanted to add that I really like the right click, in the source browser. Very nice feature.
Close the tabs by double click could be another option. Definitely not default. Can you imagine accidently double clicking a tab, and having it mysteriously disappear?
So, Here is where the panel stuff is likely heading:
1. Removing the prompt, and all side panels, from each document. This should speed up changing documents!
(And, I imagine, is the main bottleneck here).
2. Adding the panels (left and right) back to the frame itself.
3. Ditto for the Prompt, although having the prompt act like the document notebook (always at least one open).
In terms of OnDocumentChanged, I think the performance cost will be minimal, and the added functionality necessary if side panels are not directly attached to each document.
I am actually considering creating a wx event, and calling it during setDocumentTo.
So plugin writers could bind EVT_DRPY_ON_DOCUMENT_CHANGED.
In fact, might this be a better approach than the OpenFile/SaveFile functions already there?
In any case, the idea would be that items in the side panel could optionally refresh OnDocumentChanged.
This would also make drpy behave better in regards to the prompt. You can launch a new interpereter window as many times as you like, and run the current file just as easily, without regard to what is already running.
RunLevelZero, the Double Click bit is in 3.9.9
This is moving along rather nicely.
Some notes so far:
Noticably faster creating new documents, and switching between them.
Looks much nicer.
Shortcuts work perfectly in side panels (view in panel!).
You can launch as many prompts as you want (there is always one by default).
There is an extra step when creating side panels.
(You need to use the returned TargetSashWindow's
method, "SetPanel", for sizing purposes).
This will mean more work in plugins (but then, I am already so behind in them anyway, I figure, what the heck?).
The speedup is especially noticable on windows.
This is also going much faster than planned.
(The first time I messe dwith sash windows, it was a rather long mess).
I am still hunting around for unresolved leftover code (there will be quite a bit), and tweaking the side panel behaviour.
I almost forgot: This allows for some requested preferences that were a logistical difficulty before, but will now be quite simple: Remembering Panel/Prompt sizes on close.
I am thinking of adding this, and then letting users choose:
Remember (DrFrame, All Dialogs, All Panels) (Automatically, Manually, Not At All).
Or maybe the shortcuts don't so much...
Point is, this will be nifty.