Difference between revisions of "Features/Enhanced color selector/Patch-view"
Jump to navigation
Jump to search
(Created page with '<pre> --- extensions/cpsection/aboutme/view.py 2009-11-10 12:15:50.000000000 -0500 +++ extensions/cpsection/aboutme/view.py 2009-11-19 15:07:55.000000000 -0500 @@ -20,11 +20,13 @…') |
|||
Line 1: | Line 1: | ||
<pre> | <pre> | ||
− | -- | + | diff --git a/extensions/cpsection/aboutme/view.py b/extensions/cpsection/aboutme/view.py |
− | +++ extensions/cpsection/aboutme/view.py | + | index d92de87..6183f78 100644 |
− | @@ - | + | --- a/extensions/cpsection/aboutme/view.py |
− | + | +++ b/extensions/cpsection/aboutme/view.py | |
+ | @@ -21,11 +21,14 @@ from gettext import gettext as _ | ||
from sugar.graphics.icon import Icon | from sugar.graphics.icon import Icon | ||
from sugar.graphics import style | from sugar.graphics import style | ||
− | + | from sugar.graphics.toolbutton import ToolButton | |
− | + | -from sugar.graphics.xocolor import XoColor | |
+ | +from sugar.graphics.xocolor import XoColor, get_random_color | ||
from jarabe.controlpanel.sectionview import SectionView | from jarabe.controlpanel.sectionview import SectionView | ||
from jarabe.controlpanel.inlinealert import InlineAlert | from jarabe.controlpanel.inlinealert import InlineAlert | ||
− | + | + | +_DIRECTION_CENTER = 0 |
+ | +_DIRECTION_LEFT = 1 | ||
+ | +_DIRECTION_RIGHT = 2 | ||
+ | |||
class EventIcon(gtk.EventBox): | class EventIcon(gtk.EventBox): | ||
__gtype_name__ = "SugarEventIcon" | __gtype_name__ = "SugarEventIcon" | ||
− | + | @@ -40,121 +43,56 @@ class EventIcon(gtk.EventBox): | |
− | + | ||
+ | self.add(self.icon) | ||
+ | self.icon.show() | ||
+ | -""" | ||
+ | -class StopButton(ToolButton): | ||
+ | - | ||
+ | - def __init__(self, **kwargs): | ||
+ | - ToolButton.__init__(self, 'activity-stop', **kwargs) | ||
+ | - self.props.tooltip = _('Stop') | ||
+ | - self.props.accelerator = '<Ctrl>Q' | ||
+ | - self.connect('clicked', self.__stop_button_clicked_cb) | ||
+ | - | ||
+ | - def __stop_button_clicked_cb(self, button): | ||
+ | - print "out damn spot" | ||
+ | -""" | ||
+ | -class ColorPicker(EventIcon): | ||
+ | - __gsignals__ = { | ||
+ | - 'color-changed': (gobject.SIGNAL_RUN_FIRST, | ||
+ | - gobject.TYPE_NONE, | ||
+ | - ([str])) | ||
+ | - } | ||
+ | - def __init__(self, me, xo_color=None): | ||
+ | - EventIcon.__init__(self) | ||
+ | - self.icon.props.xo_color = xo_color | ||
+ | - self.icon.props.icon_name = 'computer-xo' | ||
+ | - self.icon.props.pixel_size = style.XLARGE_ICON_SIZE | ||
+ | - self.connect('button_press_event', self.__pressed_cb, me) | ||
+ | - | ||
+ | - def __pressed_cb(self, button, event, me): | ||
+ | - me.set_random_colors() | ||
+ | |||
+ | -class ColorPrev(EventIcon): | ||
+ | - __gsignals__ = { | ||
+ | - 'color-changed': (gobject.SIGNAL_RUN_FIRST, | ||
+ | - gobject.TYPE_NONE, | ||
+ | - ([str])) | ||
+ | - } | ||
+ | - def __init__(self, me, xo_next_color=None): | ||
+ | - EventIcon.__init__(self) | ||
+ | - self.icon.props.xo_color = xo_next_color | ||
+ | - self.icon.props.icon_name = 'computer-xo' | ||
+ | - self.icon.props.pixel_size = style.STANDARD_ICON_SIZE | ||
+ | - self.connect('button_press_event', self.__pressed_cb, me) | ||
+ | - | ||
+ | - def __pressed_cb(self, button, event, me): | ||
+ | - me.set_prev_colors() | ||
+ | - | ||
+ | -class ColorNext(EventIcon): | ||
+ | +class ColorPicker(EventIcon): | ||
+ | __gsignals__ = { | ||
+ | 'color-changed': (gobject.SIGNAL_RUN_FIRST, | ||
gobject.TYPE_NONE, | gobject.TYPE_NONE, | ||
([str])) | ([str])) | ||
} | } | ||
− | - def __init__(self, | + | - def __init__(self, me, xo_next_color=None): |
− | + def __init__(self, me, xo_color=None): | + | + def __init__(self, me, xo_color=None, direction=_DIRECTION_CENTER): |
EventIcon.__init__(self) | EventIcon.__init__(self) | ||
+ | - self.icon.props.xo_color = xo_next_color | ||
+ | self.icon.props.icon_name = 'computer-xo' | ||
+ | - self.icon.props.pixel_size = style.STANDARD_ICON_SIZE | ||
+ | - self.connect('button_press_event', self.__pressed_cb, me) | ||
+ | - | ||
+ | - def __pressed_cb(self, button, event, me): | ||
+ | - me.set_next_colors() | ||
+ | - | ||
+ | -class ColorUndo(EventIcon): | ||
+ | - __gsignals__ = { | ||
+ | - 'color-changed': (gobject.SIGNAL_RUN_FIRST, | ||
+ | - gobject.TYPE_NONE, | ||
+ | - ([str])) | ||
+ | - } | ||
+ | - def __init__(self, me): | ||
+ | - EventIcon.__init__(self) | ||
+ | - self.icon.props.icon_name = 'edit-undo' | ||
+ | - # self.icon.props.icon_name = 'view-refresh' | ||
+ | - # self.icon.props.accelerator = '<Ctrl>z' | ||
+ | - xocolor = XoColor() | ||
+ | - xocolor.set_color("#FFFFFF,#FFFFFF") | ||
- self.icon.props.xo_color = xocolor | - self.icon.props.xo_color = xocolor | ||
− | + | - self.icon.props.pixel_size = style.MEDIUM_ICON_SIZE | |
− | + | - self.connect('button_press_event', self.__pressed_cb, me) | |
− | + | - | |
− | - | + | - def __pressed_cb(self, button, event, me): |
− | + | - me.undo_colors() | |
− | + | - | |
− | + | -class Prev(EventIcon): | |
− | + | - __gsignals__ = { | |
− | + | - 'color-changed': (gobject.SIGNAL_RUN_FIRST, | |
− | + | - gobject.TYPE_NONE, | |
− | + | - ([str])) | |
− | + | - } | |
− | + | - def __init__(self, me): | |
− | + | - EventIcon.__init__(self) | |
− | + | - self.icon.props.icon_name = 'go-left' | |
− | + | - xocolor = XoColor() | |
− | + | - xocolor.set_color("#FFFFFF,#808080") | |
− | + | - self.icon.props.xo_color = xocolor | |
− | + | - self.icon.props.pixel_size = style.STANDARD_ICON_SIZE | |
− | + | - self.connect('button_press_event', self.__pressed_cb, me) | |
− | + | - | |
− | + | - def __pressed_cb(self, button, event, me): | |
− | + | - me.set_prev_colors() | |
− | + | + if direction == _DIRECTION_CENTER: | |
+ | + self.icon.props.pixel_size = style.XLARGE_ICON_SIZE | ||
+ | + self.icon.props.xo_color = xo_color | ||
+ | + else: | ||
+ | + self.icon.props.pixel_size = style.STANDARD_ICON_SIZE | ||
+ | + if direction == _DIRECTION_LEFT: | ||
+ | + self.icon.props.xo_color = XoColor(xo_color.get_prev_color()) | ||
+ | + else: | ||
+ | + self.icon.props.xo_color = XoColor(xo_color.get_next_color()) | ||
+ | + self.connect('button_press_event', self.__pressed_cb, me, direction) | ||
+ | + | ||
− | + | + def __pressed_cb(self, button, event, me, direction): | |
− | + | + | + if direction == _DIRECTION_LEFT: |
− | + | + me.set_prev_colors() | |
− | + | + elif direction == _DIRECTION_RIGHT: | |
− | + | + me.set_next_colors() | |
− | + | + else: | |
− | + | + me.set_random_colors() | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | - def | + | -class Next(EventIcon): |
− | - self. | + | +class DirectionButton(EventIcon): |
− | + | + | __gsignals__ = { |
− | + | + | 'color-changed': (gobject.SIGNAL_RUN_FIRST, |
+ | gobject.TYPE_NONE, | ||
+ | ([str])) | ||
+ | } | ||
+ | - def __init__(self, me): | ||
+ | + def __init__(self, me, direction): | ||
+ | EventIcon.__init__(self) | ||
+ | - self.icon.props.icon_name = 'go-right' | ||
+ | - xocolor = XoColor() | ||
+ | - xocolor.set_color("#FFFFFF,#808080") | ||
+ | - self.icon.props.xo_color = xocolor | ||
+ | + if direction == _DIRECTION_LEFT: | ||
+ | + self.icon.props.icon_name = 'go-left' | ||
+ | + else: | ||
+ | + self.icon.props.icon_name = 'go-right' | ||
+ | + self.icon.props.xo_color = XoColor("#FFFFFF,#808080") | ||
+ | self.icon.props.pixel_size = style.STANDARD_ICON_SIZE | ||
+ | - self.connect('button_press_event', self.__pressed_cb, me) | ||
+ | + self.connect('button_press_event', self.__pressed_cb, me, direction) | ||
− | - def | + | - def __pressed_cb(self, button, event, me): |
− | + | - me.set_next_colors() | |
− | + | + def __pressed_cb(self, button, event, me, direction): | |
− | + | + if direction == _DIRECTION_LEFT: | |
− | + | + me.set_prev_colors() | |
− | + | + else: | |
− | + | + me.set_next_colors() | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + def __pressed_cb(self, button, event, me | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ||
− | |||
− | |||
− | |||
− | + | ||
− | |||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
class AboutMe(SectionView): | class AboutMe(SectionView): | ||
def __init__(self, model, alerts): | def __init__(self, model, alerts): | ||
− | + | @@ -162,9 +100,6 @@ class AboutMe(SectionView): | |
self._model = model | self._model = model | ||
− | + | self._xo_color = XoColor(self._model.get_color_xo()) | |
− | + | - self._undo_colors = self._xo_color.to_string() | |
− | + | - self._xo_next_color = XoColor(self._xo_color.get_next_color()) | |
− | + | - self._xo_prev_color = XoColor(self._xo_color.get_prev_color()) | |
self.restart_alerts = alerts | self.restart_alerts = alerts | ||
self._nick_sid = 0 | self._nick_sid = 0 | ||
self._color_valid = True | self._color_valid = True | ||
− | @@ - | + | @@ -184,7 +119,7 @@ class AboutMe(SectionView): |
− | self. | + | |
+ | self._color_box = gtk.HBox(spacing=style.DEFAULT_SPACING) | ||
+ | self._color_alert_box = gtk.HBox(spacing=style.DEFAULT_SPACING) | ||
+ | - self._color_picker = None | ||
+ | + self._current_color = None | ||
+ | self._color_alert = None | ||
+ | self._setup_color() | ||
+ | |||
+ | @@ -232,36 +167,28 @@ class AboutMe(SectionView): | ||
self._color_box.pack_start(label_color, expand=False) | self._color_box.pack_start(label_color, expand=False) | ||
label_color.show() | label_color.show() | ||
− | + | ||
− | + | - self._color_prev = ColorPrev(self,self._xo_prev_color) | |
− | + self._color_box.pack_start(self. | + | - self._color_box.pack_start(self._color_prev, expand=False) |
− | + self. | + | - self._color_prev.show() |
+ | + self._color_previous = ColorPicker(self, self._xo_color, | ||
+ | + _DIRECTION_LEFT) | ||
+ | + self._color_box.pack_start(self._color_previous, expand=False) | ||
+ | + self._color_previous.show() | ||
− | - self._color_picker = ColorPicker() | + | - self._prev = Prev(self) |
− | + self. | + | + self._prev = DirectionButton(self, _DIRECTION_LEFT) |
− | + self._color_box.pack_start(self. | + | self._color_box.pack_start(self._prev, expand=False) |
− | + self. | + | self._prev.show() |
− | + | + | |
− | + self. | + | - self._color_picker = ColorPicker(self,self._xo_color) |
− | self._color_box.pack_start(self. | + | - self._color_box.pack_start(self._color_picker, expand=False) |
− | self. | + | - self._color_picker.show() |
+ | + self._current_color = ColorPicker(self, self._xo_color, | ||
+ | + _DIRECTION_CENTER) | ||
+ | + self._color_box.pack_start(self._current_color, expand=False) | ||
+ | + self._current_color.show() | ||
+ | |||
+ | - self._next = Next(self) | ||
+ | + self._next = DirectionButton(self, _DIRECTION_RIGHT) | ||
+ | self._color_box.pack_start(self._next, expand=False) | ||
+ | self._next.show() | ||
+ | |||
+ | - self._color_next = ColorNext(self,self._xo_next_color) | ||
+ | + self._color_next = ColorPicker(self, self._xo_color, _DIRECTION_RIGHT) | ||
+ | self._color_box.pack_start(self._color_next, expand=False) | ||
+ | self._color_next.show() | ||
− | + | - self._color_undo = ColorUndo(self) | |
− | + | - self._color_box.pack_start(self._color_undo, expand=False) | |
− | + | - self._color_undo.show() | |
− | + | - | |
− | + | - """ | |
− | + | - self._stop = StopButton() | |
− | + | - self._color_box.pack_start(self._stop, expand=False) | |
− | + | - self._stop.show() | |
− | + | - """ | |
− | + | - | |
− | |||
− | |||
label_color_error = gtk.Label() | label_color_error = gtk.Label() | ||
self._group.add_widget(label_color_error) | self._group.add_widget(label_color_error) | ||
self._color_alert_box.pack_start(label_color_error, expand=False) | self._color_alert_box.pack_start(label_color_error, expand=False) | ||
− | @@ - | + | @@ -279,83 +206,51 @@ class AboutMe(SectionView): |
− | |||
self._color_alert_box.show() | self._color_alert_box.show() | ||
− | + | def set_prev_colors(self): | |
− | + | - # update next color to the current color | |
− | + | - self._xo_next_color.set_color(self._xo_color.to_string()) | |
− | + | - self._color_next.icon.props.xo_color = self._xo_next_color | |
− | + | - self._color_next.emit('color-changed', self._xo_next_color.to_string()) | |
− | + | - # update color picker to the prev color | |
− | + | - self._undo_colors = self._xo_color.to_string() | |
− | + | - self._xo_color.set_color(self._xo_prev_color.to_string()) | |
− | + | - self._color_picker.icon.props.xo_color = self._xo_color | |
− | + | - self._color_picker.emit('color-changed', self._xo_color.to_string()) | |
− | + | - # update prev color to its prev color | |
− | + | - self._xo_prev_color.set_color(self._xo_prev_color.get_prev_color()) | |
− | + | - self._color_prev.icon.props.xo_color = self._xo_prev_color | |
− | + | - self._color_prev.emit('color-changed', self._xo_prev_color.to_string()) | |
− | + | + | + # update the next color to the current color |
− | + | + | + self._color_next.icon.props.xo_color = self._xo_color |
− | + | + # update the current color to the previous color | |
− | + | + self._xo_color.set_color(self._xo_color.get_prev_color()) | |
− | + | + self._current_color.emit('color-changed', self._xo_color.to_string()) | |
− | + | + self._current_color.icon.props.xo_color = self._xo_color | |
− | + | + # update the previous color to its previos color | |
− | + | + prev_color = XoColor(self._xo_color.get_prev_color()) | |
− | + | + self._color_previous.icon.props.xo_color = prev_color | |
− | + | ||
− | + | def set_random_colors(self): | |
− | + | - # update this color to a random color | |
− | + | - self._undo_colors = self._xo_color.to_string() | |
− | + | - self._xo_color.set_color(self._xo_color.get_random_color()) | |
− | + | - self._color_picker.icon.props.xo_color = self._xo_color | |
− | + | + | - self._color_picker.emit('color-changed', self._xo_color.to_string()) |
− | + | + | - # update prev color from the current color |
− | + | - self._xo_prev_color.set_color(self._xo_color.get_prev_color()) | |
− | + | - self._color_prev.icon.props.xo_color = self._xo_prev_color | |
− | + | - self._color_prev.emit('color-changed', self._xo_prev_color.to_string()) | |
− | + | - # update next color from the current color | |
− | + | - self._xo_next_color.set_color(self._xo_color.get_next_color()) | |
− | + | - self._color_next.icon.props.xo_color = self._xo_next_color | |
− | + | - self._color_next.emit('color-changed', self._xo_next_color.to_string()) | |
− | + | + # update the current color to a random color | |
− | + | + self._xo_color.set_color(get_random_color()) | |
− | + | + self._current_color.icon.props.xo_color = self._xo_color | |
− | + | + self._current_color.emit('color-changed', self._xo_color.to_string()) | |
− | + | + # update the previous color from the current color | |
− | + | + prev_color = XoColor(self._xo_color.get_prev_color()) | |
+ | + self._color_previous.icon.props.xo_color = prev_color | ||
+ | + # update the next color from the current color | ||
+ | + next_color = XoColor(self._xo_color.get_next_color()) | ||
+ | + self._color_next.icon.props.xo_color = next_color | ||
+ | |||
+ | def set_next_colors(self): | ||
+ | - # update prev color to the current color | ||
+ | - self._xo_prev_color.set_color(self._xo_color.to_string()) | ||
+ | - self._color_prev.icon.props.xo_color = self._xo_prev_color | ||
+ | - self._color_prev.emit('color-changed', self._xo_prev_color.to_string()) | ||
+ | - # update color picker to the next color | ||
+ | - self._undo_colors = self._xo_color.to_string() | ||
+ | - self._xo_color.set_color(self._xo_next_color.to_string()) | ||
+ | - self._color_picker.icon.props.xo_color = self._xo_color | ||
+ | - self._color_picker.emit('color-changed', self._xo_color.to_string()) | ||
+ | - # update next color to its next color | ||
+ | - self._xo_next_color.set_color(self._xo_next_color.get_next_color()) | ||
+ | - self._color_next.icon.props.xo_color = self._xo_next_color | ||
+ | - self._color_next.emit('color-changed', self._xo_next_color.to_string()) | ||
+ | - | ||
+ | - def undo_colors(self): | ||
+ | - # undo last change | ||
+ | - tmp = self._xo_color.to_string() | ||
+ | - self._xo_color.set_color(self._undo_colors) | ||
+ | - self._undo_colors = tmp | ||
+ | - self._color_picker.icon.props.xo_color = self._xo_color | ||
+ | - self._color_picker.emit('color-changed', self._xo_color.to_string()) | ||
+ | - # update prev color from the current color | ||
+ | - self._xo_prev_color.set_color(self._xo_color.get_prev_color()) | ||
+ | - self._color_prev.icon.props.xo_color = self._xo_prev_color | ||
+ | - self._color_prev.emit('color-changed', self._xo_prev_color.to_string()) | ||
+ | - # update next color from the current color | ||
+ | - self._xo_next_color.set_color(self._xo_color.get_next_color()) | ||
+ | - self._color_next.icon.props.xo_color = self._xo_next_color | ||
+ | - self._color_next.emit('color-changed', self._xo_next_color.to_string()) | ||
+ | - | ||
+ | + # update the previous color to the current color | ||
+ | + self._color_previous.icon.props.xo_color = self._xo_color | ||
+ | + # update the current color to the next color | ||
+ | + self._xo_color.set_color(self._xo_color.get_next_color()) | ||
+ | + self._current_color.icon.props.xo_color = self._xo_color | ||
+ | + self._current_color.emit('color-changed', self._xo_color.to_string()) | ||
+ | + # update the next color to its next color | ||
+ | + next_color = XoColor(self._xo_color.get_next_color()) | ||
+ | + self._color_next.icon.props.xo_color = next_color | ||
+ | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
def setup(self): | def setup(self): | ||
self._nick_entry.set_text(self._model.get_nick()) | self._nick_entry.set_text(self._model.get_nick()) | ||
− | - | + | - # mycolor = self._model.get_color_xo() |
− | - self._color_picker.icon.props.xo_color | + | - self._color_picker.icon.props.xo_color = self._xo_color |
− | + | - self._color_next.icon.props.xo_color = self._xo_next_color | |
− | + | - self._color_prev.icon.props.xo_color = self._xo_prev_color | |
− | + | - | |
− | + self. | + | self._color_valid = True |
+ | self._nick_valid = True | ||
+ | self.needs_restart = False | ||
+ | - self._nick_change_handler = self._nick_entry.connect( \ | ||
+ | + self._nick_change_handler = self._nick_entry.connect( | ||
+ | 'changed', self.__nick_changed_cb) | ||
+ | - self._color_change_handler = self._color_picker.connect( \ | ||
+ | + self._color_change_handler = self._current_color.connect( | ||
+ | 'color-changed', self.__color_changed_cb) | ||
+ | def undo(self): | ||
+ | - self._color_picker.disconnect(self._color_change_handler) | ||
+ | + self._current_color.disconnect(self._color_change_handler) | ||
+ | self._nick_entry.disconnect(self._nick_change_handler) | ||
+ | self._model.undo() | ||
+ | self._nick_alert.hide() | ||
+ | @@ -392,8 +287,8 @@ class AboutMe(SectionView): | ||
+ | self._nick_alert.show() | ||
+ | return False | ||
+ | |||
+ | - def __color_changed_cb(self, colorpicker, xocolor): | ||
+ | - self._model.set_color_xo(xocolor) | ||
+ | + def __color_changed_cb(self, colorpicker, xo_color): | ||
+ | + self._model.set_color_xo(xo_color) | ||
+ | self.needs_restart = True | ||
+ | self._color_alert.props.msg = self.restart_msg | ||
self._color_valid = True | self._color_valid = True | ||
− | |||
</pre> | </pre> |
Latest revision as of 17:47, 21 December 2009
diff --git a/extensions/cpsection/aboutme/view.py b/extensions/cpsection/aboutme/view.py index d92de87..6183f78 100644 --- a/extensions/cpsection/aboutme/view.py +++ b/extensions/cpsection/aboutme/view.py @@ -21,11 +21,14 @@ from gettext import gettext as _ from sugar.graphics.icon import Icon from sugar.graphics import style from sugar.graphics.toolbutton import ToolButton -from sugar.graphics.xocolor import XoColor +from sugar.graphics.xocolor import XoColor, get_random_color from jarabe.controlpanel.sectionview import SectionView from jarabe.controlpanel.inlinealert import InlineAlert +_DIRECTION_CENTER = 0 +_DIRECTION_LEFT = 1 +_DIRECTION_RIGHT = 2 class EventIcon(gtk.EventBox): __gtype_name__ = "SugarEventIcon" @@ -40,121 +43,56 @@ class EventIcon(gtk.EventBox): self.add(self.icon) self.icon.show() -""" -class StopButton(ToolButton): - - def __init__(self, **kwargs): - ToolButton.__init__(self, 'activity-stop', **kwargs) - self.props.tooltip = _('Stop') - self.props.accelerator = '<Ctrl>Q' - self.connect('clicked', self.__stop_button_clicked_cb) - - def __stop_button_clicked_cb(self, button): - print "out damn spot" -""" -class ColorPicker(EventIcon): - __gsignals__ = { - 'color-changed': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ([str])) - } - def __init__(self, me, xo_color=None): - EventIcon.__init__(self) - self.icon.props.xo_color = xo_color - self.icon.props.icon_name = 'computer-xo' - self.icon.props.pixel_size = style.XLARGE_ICON_SIZE - self.connect('button_press_event', self.__pressed_cb, me) - - def __pressed_cb(self, button, event, me): - me.set_random_colors() -class ColorPrev(EventIcon): - __gsignals__ = { - 'color-changed': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ([str])) - } - def __init__(self, me, xo_next_color=None): - EventIcon.__init__(self) - self.icon.props.xo_color = xo_next_color - self.icon.props.icon_name = 'computer-xo' - self.icon.props.pixel_size = style.STANDARD_ICON_SIZE - self.connect('button_press_event', self.__pressed_cb, me) - - def __pressed_cb(self, button, event, me): - me.set_prev_colors() - -class ColorNext(EventIcon): +class ColorPicker(EventIcon): __gsignals__ = { 'color-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([str])) } - def __init__(self, me, xo_next_color=None): + def __init__(self, me, xo_color=None, direction=_DIRECTION_CENTER): EventIcon.__init__(self) - self.icon.props.xo_color = xo_next_color self.icon.props.icon_name = 'computer-xo' - self.icon.props.pixel_size = style.STANDARD_ICON_SIZE - self.connect('button_press_event', self.__pressed_cb, me) - - def __pressed_cb(self, button, event, me): - me.set_next_colors() - -class ColorUndo(EventIcon): - __gsignals__ = { - 'color-changed': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ([str])) - } - def __init__(self, me): - EventIcon.__init__(self) - self.icon.props.icon_name = 'edit-undo' - # self.icon.props.icon_name = 'view-refresh' - # self.icon.props.accelerator = '<Ctrl>z' - xocolor = XoColor() - xocolor.set_color("#FFFFFF,#FFFFFF") - self.icon.props.xo_color = xocolor - self.icon.props.pixel_size = style.MEDIUM_ICON_SIZE - self.connect('button_press_event', self.__pressed_cb, me) - - def __pressed_cb(self, button, event, me): - me.undo_colors() - -class Prev(EventIcon): - __gsignals__ = { - 'color-changed': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ([str])) - } - def __init__(self, me): - EventIcon.__init__(self) - self.icon.props.icon_name = 'go-left' - xocolor = XoColor() - xocolor.set_color("#FFFFFF,#808080") - self.icon.props.xo_color = xocolor - self.icon.props.pixel_size = style.STANDARD_ICON_SIZE - self.connect('button_press_event', self.__pressed_cb, me) - - def __pressed_cb(self, button, event, me): - me.set_prev_colors() + if direction == _DIRECTION_CENTER: + self.icon.props.pixel_size = style.XLARGE_ICON_SIZE + self.icon.props.xo_color = xo_color + else: + self.icon.props.pixel_size = style.STANDARD_ICON_SIZE + if direction == _DIRECTION_LEFT: + self.icon.props.xo_color = XoColor(xo_color.get_prev_color()) + else: + self.icon.props.xo_color = XoColor(xo_color.get_next_color()) + self.connect('button_press_event', self.__pressed_cb, me, direction) + + def __pressed_cb(self, button, event, me, direction): + if direction == _DIRECTION_LEFT: + me.set_prev_colors() + elif direction == _DIRECTION_RIGHT: + me.set_next_colors() + else: + me.set_random_colors() -class Next(EventIcon): +class DirectionButton(EventIcon): __gsignals__ = { 'color-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([str])) } - def __init__(self, me): + def __init__(self, me, direction): EventIcon.__init__(self) - self.icon.props.icon_name = 'go-right' - xocolor = XoColor() - xocolor.set_color("#FFFFFF,#808080") - self.icon.props.xo_color = xocolor + if direction == _DIRECTION_LEFT: + self.icon.props.icon_name = 'go-left' + else: + self.icon.props.icon_name = 'go-right' + self.icon.props.xo_color = XoColor("#FFFFFF,#808080") self.icon.props.pixel_size = style.STANDARD_ICON_SIZE - self.connect('button_press_event', self.__pressed_cb, me) + self.connect('button_press_event', self.__pressed_cb, me, direction) - def __pressed_cb(self, button, event, me): - me.set_next_colors() + def __pressed_cb(self, button, event, me, direction): + if direction == _DIRECTION_LEFT: + me.set_prev_colors() + else: + me.set_next_colors() class AboutMe(SectionView): def __init__(self, model, alerts): @@ -162,9 +100,6 @@ class AboutMe(SectionView): self._model = model self._xo_color = XoColor(self._model.get_color_xo()) - self._undo_colors = self._xo_color.to_string() - self._xo_next_color = XoColor(self._xo_color.get_next_color()) - self._xo_prev_color = XoColor(self._xo_color.get_prev_color()) self.restart_alerts = alerts self._nick_sid = 0 self._color_valid = True @@ -184,7 +119,7 @@ class AboutMe(SectionView): self._color_box = gtk.HBox(spacing=style.DEFAULT_SPACING) self._color_alert_box = gtk.HBox(spacing=style.DEFAULT_SPACING) - self._color_picker = None + self._current_color = None self._color_alert = None self._setup_color() @@ -232,36 +167,28 @@ class AboutMe(SectionView): self._color_box.pack_start(label_color, expand=False) label_color.show() - self._color_prev = ColorPrev(self,self._xo_prev_color) - self._color_box.pack_start(self._color_prev, expand=False) - self._color_prev.show() + self._color_previous = ColorPicker(self, self._xo_color, + _DIRECTION_LEFT) + self._color_box.pack_start(self._color_previous, expand=False) + self._color_previous.show() - self._prev = Prev(self) + self._prev = DirectionButton(self, _DIRECTION_LEFT) self._color_box.pack_start(self._prev, expand=False) self._prev.show() - self._color_picker = ColorPicker(self,self._xo_color) - self._color_box.pack_start(self._color_picker, expand=False) - self._color_picker.show() + self._current_color = ColorPicker(self, self._xo_color, + _DIRECTION_CENTER) + self._color_box.pack_start(self._current_color, expand=False) + self._current_color.show() - self._next = Next(self) + self._next = DirectionButton(self, _DIRECTION_RIGHT) self._color_box.pack_start(self._next, expand=False) self._next.show() - self._color_next = ColorNext(self,self._xo_next_color) + self._color_next = ColorPicker(self, self._xo_color, _DIRECTION_RIGHT) self._color_box.pack_start(self._color_next, expand=False) self._color_next.show() - self._color_undo = ColorUndo(self) - self._color_box.pack_start(self._color_undo, expand=False) - self._color_undo.show() - - """ - self._stop = StopButton() - self._color_box.pack_start(self._stop, expand=False) - self._stop.show() - """ - label_color_error = gtk.Label() self._group.add_widget(label_color_error) self._color_alert_box.pack_start(label_color_error, expand=False) @@ -279,83 +206,51 @@ class AboutMe(SectionView): self._color_alert_box.show() def set_prev_colors(self): - # update next color to the current color - self._xo_next_color.set_color(self._xo_color.to_string()) - self._color_next.icon.props.xo_color = self._xo_next_color - self._color_next.emit('color-changed', self._xo_next_color.to_string()) - # update color picker to the prev color - self._undo_colors = self._xo_color.to_string() - self._xo_color.set_color(self._xo_prev_color.to_string()) - self._color_picker.icon.props.xo_color = self._xo_color - self._color_picker.emit('color-changed', self._xo_color.to_string()) - # update prev color to its prev color - self._xo_prev_color.set_color(self._xo_prev_color.get_prev_color()) - self._color_prev.icon.props.xo_color = self._xo_prev_color - self._color_prev.emit('color-changed', self._xo_prev_color.to_string()) + # update the next color to the current color + self._color_next.icon.props.xo_color = self._xo_color + # update the current color to the previous color + self._xo_color.set_color(self._xo_color.get_prev_color()) + self._current_color.emit('color-changed', self._xo_color.to_string()) + self._current_color.icon.props.xo_color = self._xo_color + # update the previous color to its previos color + prev_color = XoColor(self._xo_color.get_prev_color()) + self._color_previous.icon.props.xo_color = prev_color def set_random_colors(self): - # update this color to a random color - self._undo_colors = self._xo_color.to_string() - self._xo_color.set_color(self._xo_color.get_random_color()) - self._color_picker.icon.props.xo_color = self._xo_color - self._color_picker.emit('color-changed', self._xo_color.to_string()) - # update prev color from the current color - self._xo_prev_color.set_color(self._xo_color.get_prev_color()) - self._color_prev.icon.props.xo_color = self._xo_prev_color - self._color_prev.emit('color-changed', self._xo_prev_color.to_string()) - # update next color from the current color - self._xo_next_color.set_color(self._xo_color.get_next_color()) - self._color_next.icon.props.xo_color = self._xo_next_color - self._color_next.emit('color-changed', self._xo_next_color.to_string()) + # update the current color to a random color + self._xo_color.set_color(get_random_color()) + self._current_color.icon.props.xo_color = self._xo_color + self._current_color.emit('color-changed', self._xo_color.to_string()) + # update the previous color from the current color + prev_color = XoColor(self._xo_color.get_prev_color()) + self._color_previous.icon.props.xo_color = prev_color + # update the next color from the current color + next_color = XoColor(self._xo_color.get_next_color()) + self._color_next.icon.props.xo_color = next_color def set_next_colors(self): - # update prev color to the current color - self._xo_prev_color.set_color(self._xo_color.to_string()) - self._color_prev.icon.props.xo_color = self._xo_prev_color - self._color_prev.emit('color-changed', self._xo_prev_color.to_string()) - # update color picker to the next color - self._undo_colors = self._xo_color.to_string() - self._xo_color.set_color(self._xo_next_color.to_string()) - self._color_picker.icon.props.xo_color = self._xo_color - self._color_picker.emit('color-changed', self._xo_color.to_string()) - # update next color to its next color - self._xo_next_color.set_color(self._xo_next_color.get_next_color()) - self._color_next.icon.props.xo_color = self._xo_next_color - self._color_next.emit('color-changed', self._xo_next_color.to_string()) - - def undo_colors(self): - # undo last change - tmp = self._xo_color.to_string() - self._xo_color.set_color(self._undo_colors) - self._undo_colors = tmp - self._color_picker.icon.props.xo_color = self._xo_color - self._color_picker.emit('color-changed', self._xo_color.to_string()) - # update prev color from the current color - self._xo_prev_color.set_color(self._xo_color.get_prev_color()) - self._color_prev.icon.props.xo_color = self._xo_prev_color - self._color_prev.emit('color-changed', self._xo_prev_color.to_string()) - # update next color from the current color - self._xo_next_color.set_color(self._xo_color.get_next_color()) - self._color_next.icon.props.xo_color = self._xo_next_color - self._color_next.emit('color-changed', self._xo_next_color.to_string()) - + # update the previous color to the current color + self._color_previous.icon.props.xo_color = self._xo_color + # update the current color to the next color + self._xo_color.set_color(self._xo_color.get_next_color()) + self._current_color.icon.props.xo_color = self._xo_color + self._current_color.emit('color-changed', self._xo_color.to_string()) + # update the next color to its next color + next_color = XoColor(self._xo_color.get_next_color()) + self._color_next.icon.props.xo_color = next_color + def setup(self): self._nick_entry.set_text(self._model.get_nick()) - # mycolor = self._model.get_color_xo() - self._color_picker.icon.props.xo_color = self._xo_color - self._color_next.icon.props.xo_color = self._xo_next_color - self._color_prev.icon.props.xo_color = self._xo_prev_color - self._color_valid = True self._nick_valid = True self.needs_restart = False - self._nick_change_handler = self._nick_entry.connect( \ + self._nick_change_handler = self._nick_entry.connect( 'changed', self.__nick_changed_cb) - self._color_change_handler = self._color_picker.connect( \ + self._color_change_handler = self._current_color.connect( 'color-changed', self.__color_changed_cb) def undo(self): - self._color_picker.disconnect(self._color_change_handler) + self._current_color.disconnect(self._color_change_handler) self._nick_entry.disconnect(self._nick_change_handler) self._model.undo() self._nick_alert.hide() @@ -392,8 +287,8 @@ class AboutMe(SectionView): self._nick_alert.show() return False - def __color_changed_cb(self, colorpicker, xocolor): - self._model.set_color_xo(xocolor) + def __color_changed_cb(self, colorpicker, xo_color): + self._model.set_color_xo(xo_color) self.needs_restart = True self._color_alert.props.msg = self.restart_msg self._color_valid = True