macgitver/libHeaven — pull request #11 by scunz (2013-02-22 13:31:57+00:00)
Title: Uncrappify the UI

I've been thinking for months about how to implement the remaining features, required for Heaven to be somewhat useful - and I think that a road has now manifested in front of my mental sight :-)

As of now, what this change does is:
- Actually use the concept of 'Modes' to switch between _Welcome_ and what we still call _Novice_.
- Read layout definitions into the `WindowStateBase` class and its derivats - instead of UserLevel-Configuration that used to dwell in libMacGitverCore.
- Removes all view creation from libMacGitverCore and teaches libHeaven to synchronize a WindowStateBase hierarchy with the current layout.

Consequential, now the user interface is not regenerated when switching the active repository, which in longer term is right - but currently makes the history view very defective.

Next steps would be:
- transform work tree, history and all branch views into a state where they can detach and reattach to a context.
- make libHeaven's ContextManager a cache for such contexts.
- on switching active repository, detach all contextual views from their contexts, switch and reattach to new or cached contexts.