Hi Again Chipp!

I just thought of something else. Apart from using ISM as a message broadcast system, it can also be used as a central place to hold system wide (or inter-stack) data.

On 28 Mar 2006, at 11:01, Chipp Walters wrote:
David,

Also, I see where you're using custom props to hold non-permanent data. While this is OK, I prefer to use library stack locals, as these zero out when the app quits. That way you don't have to explicitly reset them. I like customProps for data which may have to be saved between sessions...just my 2 cents.

ISM has a concept of persistent data which remains across application launches (in a standalone) or across launches of the IDE.

As an example of this, take a Preferences Stack (a separate Prefs.rev file).

The user launches the standalone which takes them to the main application stack (call it AppMain.rev), this in turn allows them to select the preference stack. The user some system-wide preference (say the language is changed from English to Spanish). The preference stack sends a message ("LanguageChanged", "LanguageKindDefault", "Spanish") and all listening objects get the message and change themselves so that they now set their text to the new language). However since only AppMain.rev is "listening" it is the only stack to change.

The user now closes the Preferences Stack and Quits the App (or a developer quits the IDE).

The App is relaunched, the current stack (AppMain.rev) is set to Spanish. The user now does something that calls up another stack like double clicking on a thumbnail of an image so as it see it in an ImageViewer/Editor (call this stack ImageEdit.rev). The language is still English in the (mageEdit.rev stack (or more accurately it's the language that was last chosen from the Preferences Stack when ImageEdit.rev was last open).

Normally you'd have to do something like call up the Preferences Stack (maybe making it invisible) so that it can re-send it's data) or have the Stack with the new data somehow send it to the new stack . However, in ISM if you make the data persistent, as soon as an Object(s) starts "listening" they get sent the data from the last time it was set, in this case "Spanish". The Preferences Stack doesn't have to be re-opened and there is no extra initialization code needed anywhere. The same path that handles a change also handles the initialization!

So, in order to do this, I need to store persistent data in a custom property. I intend hold this information in locals while the App is running and copy it into Custom Properties in the ISM stack when the last stack de-registers itself. That way I get the best of both worlds!

All the Best
Dave

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to