From: Krister L. <kr...@km...> - 2002-08-20 06:17:53
|
Thomas Malt wrote: > Krister Lagerstrom <kr...@km...> writes: > > | > All modules importing skin needs to > | > add a 'skin.get_singleton()' line where they initialize the other > | > objects. > | > | I still like the "import skin ; skin.DrawMP3()" version better. I also > | think "osd" is a better name than "skin", I see the OSD as the whole > | functionality, not just the graphics routines. > > But how do you then see the different skins integrate into the OSD > class? Where should the default implementation be? How do you plan to > design the architecture? As I explained a minute ago in my other email there are two sides to this. From the UI/skin implementation side we want it to be all OO of course. But from the core Freevo side that is just a hassle, especially if we want to move away from the current method of doing a "osd = osd.get_singleton()" at the top of each module. That causes problems with circular references etc. So there it'd be nice to have just the regular python module import instead. But I guess the main point is to avoid code being executed at the module level which will lead to circular references etc. > A simple 'exec('from ' + modname + ' import *')' will import the users > skin into the skin.py namespace, but the user would still have to > instance the object. > > Calling skin = skin.Skin() or skin = skin.get_singleton() seem pretty > similar to me. But it is not good to do that at the module level since it will execute the skin code, which could do its own get_singleton() in turn... > Should osd.drawMP3() just forward the call to skinimpl.drawMP3()? > Should osd import all functions from skinimpl into its namespace > overriding what is already there? I think it can be easily done this way by playing around with the ui module dictionary. / Krister |