Files
@ 7aab6dba2515
Branch filter:
Location: volker/graph_components/src/graph_ZCA/components.py
7aab6dba2515
2.3 KiB
text/x-python
Added ZCA Version of the code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | from zope.interface import implementsOnly, implements, Interface
from zope.component import adapts, getGlobalSiteManager
gsm = getGlobalSiteManager()
from graph_ZCA.base import BaseAdapter, BaseComponent, BaseFactory
from graph_ZCA.interfaces import ITickLabelAdapter, IAxis, IViewBox, IImage
class TickLabelAdapter(BaseAdapter):
"""
Generates Ticklabels for an axis
"""
implementsOnly(ITickLabelAdapter)
adapts(IAxis)
def __init__(self, axis):
"""
Gets an Object to be adapted
"""
self.axis = axis
def render(self):
return map(str, range(self.axis.start, self.axis.end))
gsm.registerAdapter(TickLabelAdapter)
class AxisComponent(BaseComponent):
"""
Represents an axis
"""
implements(IAxis)
adapts(Interface)
def __init__(self, parent, orientation=None, start=None, end=None):
super(AxisComponent, self).__init__(parent)
self.orientation = orientation
self.start = start
self.end = end
def get_tick_labels(self):
return ITickLabelAdapter(self).render()
def render(self):
return '%s: ' % self.__class__.__name__ + self.orientation + ':' + ' '.join(self.get_tick_labels())
gsm.registerAdapter(AxisComponent)
class Axis(BaseFactory):
target_interface = IAxis
class ViewBoxComponent(BaseComponent):
"""
Drawing area of a plot. THe drawing ares may have an unlimited number of axis
"""
implements(IViewBox)
adapts(Interface)
def __init__(self, parent):
super(ViewBoxComponent, self).__init__(parent)
def render(self):
result = []
for item in self.items:
result.append(item.render())
return '\n'.join(result)
gsm.registerAdapter(ViewBoxComponent)
class ViewBox(BaseFactory):
target_interface = IViewBox
class ImageComponent(BaseComponent):
"""
A image representing f(x,y) values
"""
implements(IImage)
adapts(Interface)
def __init__(self, parent):
super(ImageComponent, self).__init__(parent)
def render(self):
return '%s:' % self.__class__.__name__ + str(self.data)
def setup(self, data, **kwargs):
self.data = data
gsm.registerAdapter(ImageComponent)
class Image(BaseFactory):
target_interface = IImage
|