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.
|