Package muntjac :: Package addon :: Package colorpicker :: Module color_picker_history
[hide private]
[frames] | no frames]

Source Code for Module muntjac.addon.colorpicker.color_picker_history

  1  # Copyright (C) 2012 Vaadin Ltd.  
  2  # Copyright (C) 2012 Richard Lincoln 
  3  #  
  4  # Licensed under the Apache License, Version 2.0 (the "License");  
  5  # you may not use this file except in compliance with the License.  
  6  # You may obtain a copy of the License at  
  7  #  
  8  #     http://www.apache.org/licenses/LICENSE-2.0  
  9  #  
 10  # Unless required by applicable law or agreed to in writing, software  
 11  # distributed under the License is distributed on an "AS IS" BASIS,  
 12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
 13  # See the License for the specific language governing permissions and  
 14  # limitations under the License. 
 15   
 16  from collections import deque 
 17   
 18  from muntjac.addon.colorpicker.color import Color 
 19   
 20  from muntjac.ui.custom_component import CustomComponent 
 21   
 22  from muntjac.addon.colorpicker.color_picker_grid import ColorPickerGrid 
 23  from muntjac.addon.colorpicker.color_change_event import ColorChangeEvent 
 24  from muntjac.addon.colorpicker.color_picker import IColorChangeListener 
 25  from muntjac.addon.colorpicker.color_selector import IColorSelector 
 26   
 27   
 28  _COLOR_CHANGE_METHOD = getattr(IColorChangeListener, 'colorChanged') 
 29   
 30   
31 -class ColorPickerHistory(CustomComponent, IColorSelector, 32 IColorChangeListener):
33 """The Class ColorPickerHistory. 34 35 @author: John Ahlroos 36 @author: Richard lincoln 37 """ 38 39 _STYLENAME = 'v-colorpicker-history' 40 41 #: The rows. 42 _rows = 4 43 44 #: The columns. 45 _columns = 15 46 47 #: The colorHistory. This is common for all colorpickers 48 _colorHistory = deque() 49 50 #: The grid. 51 _grid = None 52 53
54 - def __init__(self):
55 """Instantiates a new color picker history.""" 56 super(ColorPickerHistory, self).__init__() 57 58 self.removeStyleName('v-customcomponent') 59 self.setStyleName(self._STYLENAME) 60 61 self._grid = ColorPickerGrid(self._rows, self._columns) 62 self._grid.setWidth('100%') 63 self._grid.setPosition(0, 0) 64 self._grid.addListener(self, IColorChangeListener) 65 66 self.setCompositionRoot(self._grid)
67 68
69 - def setHeight(self, height, unit=None):
70 super(ColorPickerHistory, self).setHeight(height, unit) 71 self._grid.setHeight(height, unit)
72 73
74 - def setColor(self, color):
75 # Check that the color does not already exist 76 exists = False 77 for c in self._colorHistory: 78 if color == c: 79 exists = True 80 break 81 82 # If the color does not exist then add it 83 if not exists: 84 self._colorHistory.append(color) 85 86 colorList = list(self._colorHistory) 87 88 # Invert order of colors 89 colorList.reverse() 90 91 # Move the selected color to the front of the list 92 colorList.insert(0, colorList.pop( colorList.index(color) )) 93 94 # Create 2d color map 95 colors = [([None] * self._columns) for _ in range(self._rows)] 96 iterator = iter(colorList) 97 98 for row in range(self._rows): 99 for col in range(self._columns): 100 try: 101 colors[row][col] = iterator.next() 102 except StopIteration: 103 colors[row][col] = Color.WHITE 104 105 self._grid.setColorGrid(colors) 106 self._grid.requestRepaint()
107 108
109 - def getColor(self):
110 return self._colorHistory[0]
111 112
113 - def getHistory(self):
114 """Gets the history. 115 116 @return: the history 117 """ 118 array = list(self._colorHistory) 119 return array
120 121
122 - def hasColor(self, c):
123 """Checks for color. 124 125 @param c: 126 the c 127 @return: true, if successful 128 """ 129 return c in self._colorHistory
130 131
132 - def addListener(self, listener, iface=None):
133 """Adds a color change listener 134 135 @param listener: 136 The color change listener 137 """ 138 if (isinstance(listener, IColorChangeListener) and 139 (iface is None or issubclass(iface, IColorChangeListener))): 140 self.registerListener(ColorChangeEvent, listener, 141 _COLOR_CHANGE_METHOD) 142 143 super(ColorPickerHistory, self).addListener(listener, iface)
144 145
146 - def addCallback(self, callback, eventType=None, *args):
147 if eventType is None: 148 eventType = callback._eventType # set by decorator 149 150 if issubclass(eventType, ColorChangeEvent): 151 self.registerCallback(ColorChangeEvent, callback, None, *args) 152 else: 153 super(ColorPickerHistory, self).addCallback(callback, eventType, 154 *args)
155 156
157 - def removeListener(self, listener, iface=None):
158 """Removes a color change listener 159 160 @param listener: 161 The listener 162 """ 163 if (isinstance(listener, IColorChangeListener) and 164 (iface is None or issubclass(iface, IColorChangeListener))): 165 self.withdrawListener(ColorChangeEvent, listener) 166 167 super(ColorPickerHistory, self).removeListener(listener, iface)
168 169
170 - def removeCallback(self, callback, eventType=None):
171 if eventType is None: 172 eventType = callback._eventType 173 174 if issubclass(eventType, ColorChangeEvent): 175 self.withdrawCallback(ColorChangeEvent, callback) 176 177 else: 178 super(ColorPickerHistory, self).removeCallback(callback, eventType)
179 180
181 - def colorChanged(self, event):
183