I came back to my initial idea to have two separate kind of windows: The spatial single document UI and the (also spatial) project interface. Similar to the way Nautilus works, directly opening a document would open the document interface, while opening the editor itself would create a project interface.
While creating the new window base class I decided to rewrite the entire window code, so it’s non-functional right now. The new project window is coming along nicely however.
Just like the document interface, I want to keep the project interface as simplistic as possible, while retaining a maximum of functionality. On the left side you see a tree view, which easily lets you add folder or document references (not yet) to the current project, similar to TextMate. Just selecting a document will load it in the textview and since Scratchpad does autosave, you never have to worry about unsaved changes.
The part on the lower left contains the ten most recently accessed documents, which allows you to quickly switch between them (for example by pressing CTRL+their number). All those ten “buffers” stay into memory, so they also help to speed up switching between documents. So in effect this is a kind of pseudo MDI interface which acts like an SDI interface. One advantage to traditional MDI text editors is, that you never have to bother closing documents (you can’t actually).
All state for each document is still being saved, so even if you switch to a document that isn’t in your recent buffer list anymore, it will still appear just like you left it.
Of course I have a lot more ideas to build around this interface, but this is the basic setup I’m shooting for. No extra tabs, docks or toolbars are planned (for now).
I’m not quite sure yet how to actually store the projects. One option would be to save them to regular files (I think that’s what TextMate does). Another option would be to keep them at a hidden place and only let the user choose between them on startup. I think I prefer the latter option, especially since it makes creating new projects easier (I can just ask the user to enter a project title on startup). Your comments are welcome!
In case you are puzzled, Scratchpad is a spatial text editor which I have started… quite a while ago actually. It is written in C# and based on gtksourceview. I will likely write a detailed description about it soon, for now let’s just say that it’s different in more than one way. 🙂 Since I have mainly written the editor to scratch my own itch, I have been very bad at getting releases out (and the last server I put a release on doesn’t even exist anymore…). Hopefully writing blog entries will motivate me to distribute it more actively.