48 | | def __init__(self, xocolor=None): |
49 | | EventIcon.__init__(self) |
50 | | self.icon.props.xo_color = xocolor |
51 | | self.icon.props.icon_name = 'computer-xo' |
52 | | self.icon.props.pixel_size = style.XLARGE_ICON_SIZE |
| 43 | |
| 44 | def __init__(self, direction): |
| 45 | gtk.EventBox.__init__(self) |
| 46 | |
| 47 | self._direction = direction |
| 48 | self._icon = Icon(icon_name='computer-xo') |
| 49 | |
| 50 | if direction == _DIRECTION_CENTER: |
| 51 | self._icon.props.pixel_size = style.XLARGE_ICON_SIZE |
| 52 | else: |
| 53 | self._icon.props.pixel_size = style.STANDARD_ICON_SIZE |
| 54 | |
| 55 | self.set_visible_window(False) |
| 56 | self.set_app_paintable(True) |
| 57 | self.set_events(gtk.gdk.BUTTON_PRESS_MASK) |
| 58 | |
| 59 | self.add(self._icon) |
| 60 | self._icon.show() |
| 61 | |
| 64 | def update(self, stroke, fill): |
| 65 | if self._direction == _DIRECTION_CENTER: |
| 66 | arrow_stroke = stroke.value |
| 67 | arrow_fill = fill.value |
| 68 | elif self._direction == _DIRECTION_TOP: |
| 69 | arrow_stroke = stroke.get_prev() |
| 70 | arrow_fill = style.COLOR_WHITE.get_html() |
| 71 | elif self._direction == _DIRECTION_BOTTOM: |
| 72 | arrow_stroke = stroke.get_next() |
| 73 | arrow_fill = style.COLOR_WHITE.get_html() |
| 74 | elif self._direction == _DIRECTION_LEFT: |
| 75 | arrow_stroke = style.COLOR_WHITE.get_html() |
| 76 | arrow_fill = fill.get_prev() |
| 77 | elif self._direction == _DIRECTION_RIGHT: |
| 78 | arrow_stroke = style.COLOR_WHITE.get_html() |
| 79 | arrow_fill = fill.get_next() |
| 80 | self._icon.props.stroke_color = arrow_stroke |
| 81 | self._icon.props.fill_color = arrow_fill |
| 82 | |
56 | | self._set_random_colors() |
| 84 | if self._direction == _DIRECTION_CENTER: |
| 85 | self.emit('color-changed', 0, 0) |
| 86 | elif self._direction == _DIRECTION_TOP: |
| 87 | self.emit('color-changed', -1, 0) |
| 88 | elif self._direction == _DIRECTION_BOTTOM: |
| 89 | self.emit('color-changed', +1, 0) |
| 90 | elif self._direction == _DIRECTION_LEFT: |
| 91 | self.emit('color-changed', 0, -1) |
| 92 | elif self._direction == _DIRECTION_RIGHT: |
| 93 | self.emit('color-changed', 0, +1) |
| 121 | initial_color = xocolor.XoColor(self._model.get_color_xo()) |
| 122 | self._stroke_range = xocolor.StrokeColor(initial_color.stroke) |
| 123 | self._fill_range = xocolor.FillColor(initial_color.fill) |
| 124 | |
| 125 | self._pickers = { |
| 126 | _DIRECTION_CENTER: ColorPicker(_DIRECTION_CENTER), |
| 127 | _DIRECTION_TOP: ColorPicker(_DIRECTION_TOP), |
| 128 | _DIRECTION_BOTTOM: ColorPicker(_DIRECTION_BOTTOM), |
| 129 | _DIRECTION_LEFT: ColorPicker(_DIRECTION_LEFT), |
| 130 | _DIRECTION_RIGHT: ColorPicker(_DIRECTION_RIGHT)} |
| 131 | |
| 132 | self._setup_color() |
| 133 | self._update_colors() |
133 | | label_color.show() |
134 | | |
135 | | self._color_picker = ColorPicker() |
136 | | self._color_box.pack_start(self._color_picker, expand=False) |
137 | | self._color_picker.show() |
| 176 | |
| 177 | table = gtk.Table(3, 3, False) |
| 178 | self._color_box.pack_start(table, expand=False) |
| 179 | table.attach(self._pickers[_DIRECTION_LEFT], |
| 180 | 0, 1, 1, 2, gtk.SHRINK, gtk.SHRINK, 0, 0) |
| 181 | table.attach(self._pickers[_DIRECTION_RIGHT], |
| 182 | 2, 3, 1, 2, gtk.SHRINK, gtk.SHRINK, 0, 0) |
| 183 | table.attach(self._pickers[_DIRECTION_TOP], |
| 184 | 1, 2, 0, 1, gtk.SHRINK, gtk.SHRINK, 0, 0) |
| 185 | table.attach(self._pickers[_DIRECTION_BOTTOM], |
| 186 | 1, 2, 2, 3, gtk.SHRINK, gtk.SHRINK, 0, 0) |
| 187 | table.attach(self._pickers[_DIRECTION_CENTER], |
| 188 | 1, 2, 1, 2, gtk.SHRINK, gtk.SHRINK, 0, style.DEFAULT_SPACING) |
163 | | self._nick_change_handler = self._nick_entry.connect( \ |
164 | | 'changed', self.__nick_changed_cb) |
165 | | self._color_change_handler = self._color_picker.connect( \ |
166 | | 'color-changed', self.__color_changed_cb) |
| 211 | |
| 212 | def connect(widget, signal, cb): |
| 213 | self._handlers.append((widget, widget.connect(signal, cb))) |
| 214 | |
| 215 | connect(self._nick_entry, 'changed', self.__nick_changed_cb) |
| 216 | for picker in self._pickers.values(): |
| 217 | connect(picker, 'color-changed', self.__color_changed_cb) |
206 | | def __color_changed_cb(self, colorpicker, xocolor): |
207 | | self._model.set_color_xo(xocolor) |
| 261 | def __color_changed_cb(self, colorpicker, stroke_delta, fill_delta): |
| 262 | |
| 263 | def next(): |
| 264 | if stroke_delta: |
| 265 | self._stroke_range.next(stroke_delta) |
| 266 | elif fill_delta: |
| 267 | self._fill_range.next(fill_delta) |
| 268 | else: |
| 269 | self._stroke_range.value, self._fill_range.value = \ |
| 270 | self._fill_range.value, self._stroke_range.value |
| 271 | |
| 272 | next() |
| 273 | while self._stroke_range.value == self._fill_range.value: |
| 274 | next() |
| 275 | self._update_colors() |
| 276 | |
| 277 | color = xocolor.XoColor() |
| 278 | color.stroke = self._stroke_range.value |
| 279 | color.fill = self._fill_range.value |
| 280 | |
| 281 | self._model.set_color_xo(color.to_string()) |