Implement GUI profiles
GUI profiles shall manage certain GUI settings we'd like to access globally. A profile may include, for example, buffer settings, visibility and state of (custom) buffer views, open queries, and so on. It should NOT include stuff that's really client specific, such as window sizes and positions, fonts, themes etc.
Profiles are stored globally, which means that a profile is always associated with a particular core connection.
In addition, we should store a list of available core connections (i.e. user, optionally password, and the GUI profile to load on default) in the client. That's, of course, a local setting. Which means, that we could associate client-specific stuff (window positions, sizes, you get the picture) with a certain core connection.
A third class of settings is stuff like font sizes, styles, etc, which should probably apply to the client regardless of the core we connect to.
This leads to the following classification:
- GUI Profile Settings
- Stored globally within the core
- Everything "session-like" that might apply to several clients. Buffer settings and visibility, views, buffer/query names, etc.
- Core Connection Profile Settings
- Everything that applys to the local client only, but might differ across different core connections.
- Core connection settings (host, user, pw)
- GUI-specific stuff - window sizes and positions
- General GUI Settings
- Fonts, styles...