SF.net SVN: fclient:[939] trunk/fclient/fclient/impl/config.py
Status: Pre-Alpha
Brought to you by:
jurner
From: <jU...@us...> - 2008-08-17 12:59:27
|
Revision: 939 http://fclient.svn.sourceforge.net/fclient/?rev=939&view=rev Author: jUrner Date: 2008-08-17 12:59:35 +0000 (Sun, 17 Aug 2008) Log Message: ----------- need fixed order for object registry Modified Paths: -------------- trunk/fclient/fclient/impl/config.py Modified: trunk/fclient/fclient/impl/config.py =================================================================== --- trunk/fclient/fclient/impl/config.py 2008-08-17 12:58:43 UTC (rev 938) +++ trunk/fclient/fclient/impl/config.py 2008-08-17 12:59:35 UTC (rev 939) @@ -6,7 +6,6 @@ import posixpath import os -import weakref from PyQt4 import QtCore from .lib import fcp2 @@ -47,26 +46,45 @@ IdDlgPrefs = 'DlgPrefs' #TODO: turn into view object? -class ObjectRegistry(weakref.WeakValueDictionary): +class ObjectRegistry(object): """global object registry - use the registry to register and retrieve ui objects previously registerd by their object ids (Id*). - ObjectRegistry is actually a WeakValueDictionary. so use as a dict + use the registry to register and retrieve view objects. order of the view objects is guaranteed to + be stable in order of the objects registering """ + def __init__(self): + self._names = [] + self._viewObjects = [] + + def __iter__(self): + return iter(self._viewObjects) + + def __getitem__(self, viewObjectName): + return self._viewObjects[self._names.index(viewObjectName)] + + + def get(self, viewObjectName, default=None): + try: + return self[viewObjectName] + except ValueError: + return default + def register(self, viewObject): """regisdters an object in the registry @param viewObject: view object to register @note: QObject.objectName() is taken as id. ids have to be unique throughout the runtime of the gui """ - ido = viewObject.name() - if ido in self: - raise ValueError('view object already registered: %s' % ido) - self[ido] = viewObject - + viewObjectName = viewObject.name() + if viewObjectName in self._names: + raise ValueError('view object already registered: %s' % viewObjectName) + self._names.append(viewObjectName) + self._viewObjects.append(viewObject) + def unregister(self, viewObject): - del self[str(viewObject.name())] - + viewObjectName = viewObject.name() + self._names.remove(viewObjectName) + self._viewObjects.remove(viewObject) ObjectRegistry = ObjectRegistry() #********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |