Talk:Options System
From PsiWiki
Moved the chatter out of the article and into the discussion page (and removed the bits that were no longer relevant ~~
Config-update notification
IceRAM: The backend should provide some signals to notify the UI when the options are changed. The signals could be emitted:
- per node: emit optionsChanged("appearance/roster/iconset")
- or per branch: emit optionsChanged("appearance/roster/")
Uses
I (IceRAM) have discussed with Hal about the extra advantages a tree-like structure for the options would bring for general usage.
Imagine first that options will reside in a tree, something like:
appearance/ appearance/roster/iconset (string - path to file)) appearance/roster/colors/ appearance/roster/colors/background (string - hexcolor) appearance/roster/colors/background_picture (string - path to file) appearance/roster/colors/... (string - hexcolor) ... notifications/ notifications/popups/ notifications/sounds/ events/ ...
I've have suggested that, with a tree-like structure like that, we could also
- make the configuration modular (separate files for different settings)
- we could export/import branches from/to the options-tree
This would provide:
- themes support (the themes would have to include, beside the options-tree-branch, the files needed for customization)
- imagine you export/import appearance - you'll have themes with all the visual settings
- color themes would be obtained by exporting appearance/roster/colors/
- sound themes would be obtained by exporting notifications/sounds/
- branding support (allows third-party users to customize Psi for mass deployment)
- you could overlap a set of nodes with fixed values over the main tree of options
- should be somehow similar to importing a branch, except for the fact that the imported branch should not necessarily be complete (only listed nodes should be locked)
GUI
The GUI could be represented:
- like a tree (TreeView) (There's now a Qt Solutions widget that could do this: Property Browser)
- like Mozilla Firefox does in the "about:config" page
- like what we currently have
If there will be many options, we would prefer having some sort of on-the-fly filtering, like Firefox has.
We'll still need to have something like our current options dialog. This would probably be to hard, but it would super cool if an options page could automatically be created and layed out from all the options under say "appereance".
IceRAM: Indeed. I was thinking that we might create some extended widgets (checkboxes, listboxes etc.) that automatically get/set their values from/to the options system.
LonelyPixel: Eclipse's options dialogue very much looks like a conventional options window with an individual layout but has an additional search/filter textbox that reduces the visible tree structure to those pages that contain an option that matches the search term, in a find-as-you-type way. I.e. type "colour" and see only the pages about chat window appearance and roster appearance.

