[Dev] persisting a preference
Bryan Stearns
stearns at osafoundation.org
Fri Nov 11 10:17:18 PST 2005
+1 I think this looks good too.
John Anderson wrote:
> +1 This is along the lines of what I thinking too.
>
> Alec Flett wrote:
>
>> John Anderson wrote:
>>
>>> Chandler's repository already provides a great way to persist user
>>> data, state between sessions and a host of other stuff in the system
>>> (e.g. the order of items in tables), which we already use everywhere
>>> and it works great. I think calling all of this persistent data
>>> "preferences" would be confusing. I like Philippe's suggestion (see
>>> below) that we call user settings (e.g. style information) preferences.
>>
>> Yeah, I think there is really no technical difference between
>> preferences and any other data in the repository.. however there is a
>> /semantic/ difference, and that's what I think is worth trying to
>> capture. There are plenty of persisted values in the repository that,
>> if tweaked by the user, would probably just wreak havoc on chandler.
>>
>> Preferences, on the other hand, are safe to muck with a bit, and
>> provide some 'back door' hacks to allow us to try out experimental
>> behavior or features in the application by letting users turn them on
>> manually. For instance, here's a page of FireFox "hidden preferences"
>> - prefs which have no UI:
>> http://www.geocities.com/pratiksolanki/
>>
>> So Philippe, you asked for a few things to be clarified. Here's what
>> I'd suggest:
>>
>> somewhere, say osaf.app, we have:
>>
>> class Preferences(Item):
>> pass
>>
>> Then, in an individual parcel's .py file, lets say this is for john's
>> MP3-organizer, somewhere:
>>
>> class MP3Prefs(Preferences):
>> favoriteGenre = schema.One(schema.String)
>>
>> and in their __init__.py's installParcel():
>>
>> MP3Prefs.update(parcel, 'preferences', favoriteGenre='Rock')
>>
>> Then, to access that particular preference:
>> mp3prefs = schema.ns('mp3player', view).preferences
>> genre = mp3prefs.favoriteGenre
>>
>> If a tool wanted to iterate all preferences in the system, and print
>> them to the screen:
>>
>> for parcelPrefs in osaf.app.Preferences.iterItems():
>> print "Preferences for: %s:" % parcelPrefs.__class__.__name__
>> for prefname, prefvalue, preftype in
>> parcelPrefs.iterAttributes(inherited=False):
>> print " %s = %s" % (prefname, prefvalue)
>>
>> This would (hopefully) print:
>>
>> Preferences for: MP3Prefs:
>> favoriteGenre = Rock
>>
>> you could even imagine a UI like about:config that uses
>> AttributeEditors to edit the prefs and make sure they have the right
>> sort of UI for each type of attribute.
>>
>> Alec
>>
>>------------------------------------------------------------------------
>>
>>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>>
>>Open Source Applications Foundation "Dev" mailing list
>>http://lists.osafoundation.org/mailman/listinfo/dev
>>
>>
>------------------------------------------------------------------------
>
>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
>Open Source Applications Foundation "Dev" mailing list
>http://lists.osafoundation.org/mailman/listinfo/dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osafoundation.org/pipermail/chandler-dev/attachments/20051111/cbf50d64/attachment.html
More information about the Dev
mailing list