Features/Enhanced color selector/Patch-view
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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