Files
@ 528140423e49
Branch filter:
Location: volker/graph_components/src/graph_ZCA/base.py - annotation
528140423e49
2.1 KiB
text/x-python
ALso change of the tickmark component
7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 7aab6dba2515 | from zope.interface.interfaces import ComponentLookupError
from zope.interface import providedBy
from zope.component import getGlobalSiteManager, getMultiAdapter
from graph.interfaces import IBaseComponent
gsm = getGlobalSiteManager()
class BaseAdapter(object):
"""
Base for all Adapters
"""
# implements(IBaseAdapter)
def __init__(self, obj):
"""
Gets an Object to be adapted
"""
self.obj = obj
class BaseComponent(object):
"""
"""
def __init__(self, parent):
self.parent = parent
self.items = []
def addItem(self, item):
self.items.append(item)
def setup(self, *args, **kwargs):
pass
class BaseFactory(object):
def __init__(self, obj, *args, **kwargs):
"""
Gets an Object to be adapted
"""
self.obj = obj
self.args = args
self.kwargs = kwargs
def __call__(self, *args, **kwargs):
parent_vector = self.traverse_parents()
adapter = self.find_adapter(parent_vector)
adapter.setup(*args, **kwargs)
return adapter
def find_adapter(self, parent_vector):
for i in range(len(parent_vector)):
try:
adapter = getMultiAdapter(parent_vector[i:], self.target_interface)
except ComponentLookupError:
pass
else:
if adapter :
return adapter
def traverse_parents(self):
"""
Retrieve the vector of all component parents up to the top level component which has no parent
"""
parent_vector = [self.obj]
obj = self.obj
while obj.parent:
obj = obj.parent
parent_vector.append(obj)
parent_vector.reverse()
return parent_vector
def getComponentInterfaceOf(self, obj):
"""
Retrieve the interfacess a certain instance is providing.
Filter out the interface that belongs to our framework.
"""
for interface in providedBy(obj):
if isinstance(interface, IBaseComponent.__class__):
return interface
|