<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sugarlabs.org/index.php?action=history&amp;feed=atom&amp;title=Features%2FEnhanced_color_selector%2FPatch-view</id>
	<title>Features/Enhanced color selector/Patch-view - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sugarlabs.org/index.php?action=history&amp;feed=atom&amp;title=Features%2FEnhanced_color_selector%2FPatch-view"/>
	<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Features/Enhanced_color_selector/Patch-view&amp;action=history"/>
	<updated>2026-05-01T14:05:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Features/Enhanced_color_selector/Patch-view&amp;diff=42154&amp;oldid=prev</id>
		<title>Walter at 22:47, 21 December 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Features/Enhanced_color_selector/Patch-view&amp;diff=42154&amp;oldid=prev"/>
		<updated>2009-12-21T22:47:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.sugarlabs.org/index.php?title=Features/Enhanced_color_selector/Patch-view&amp;amp;diff=42154&amp;amp;oldid=40406&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Walter</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Features/Enhanced_color_selector/Patch-view&amp;diff=40406&amp;oldid=prev</id>
		<title>Walter: Created page with &#039;&lt;pre&gt; --- 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 @…&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Features/Enhanced_color_selector/Patch-view&amp;diff=40406&amp;oldid=prev"/>
		<updated>2009-11-19T20:52:55Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;&amp;lt;pre&amp;gt; --- 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 @…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
--- extensions/cpsection/aboutme/view.py	2009-11-10 12:15:50.000000000 -0500&lt;br /&gt;
+++ extensions/cpsection/aboutme/view.py	2009-11-19 15:07:55.000000000 -0500&lt;br /&gt;
@@ -20,11 +20,13 @@ from gettext import gettext as _&lt;br /&gt;
 &lt;br /&gt;
 from sugar.graphics.icon import Icon&lt;br /&gt;
 from sugar.graphics import style&lt;br /&gt;
+# from sugar.graphics.toolbutton import ToolButton&lt;br /&gt;
 from sugar.graphics.xocolor import XoColor&lt;br /&gt;
 &lt;br /&gt;
 from jarabe.controlpanel.sectionview import SectionView&lt;br /&gt;
 from jarabe.controlpanel.inlinealert import InlineAlert&lt;br /&gt;
 &lt;br /&gt;
+&lt;br /&gt;
 class EventIcon(gtk.EventBox):&lt;br /&gt;
     __gtype_name__ = &amp;quot;SugarEventIcon&amp;quot;    &lt;br /&gt;
     def __init__(self, **kwargs):         &lt;br /&gt;
@@ -45,26 +47,113 @@ class ColorPicker(EventIcon):&lt;br /&gt;
                           gobject.TYPE_NONE,&lt;br /&gt;
                           ([str]))&lt;br /&gt;
     }&lt;br /&gt;
-    def __init__(self, xocolor=None):&lt;br /&gt;
+    def __init__(self, me, xo_color=None):&lt;br /&gt;
         EventIcon.__init__(self)&lt;br /&gt;
-        self.icon.props.xo_color = xocolor&lt;br /&gt;
+        self.icon.props.xo_color = xo_color&lt;br /&gt;
         self.icon.props.icon_name = &amp;#039;computer-xo&amp;#039;&lt;br /&gt;
         self.icon.props.pixel_size = style.XLARGE_ICON_SIZE&lt;br /&gt;
-        self.connect(&amp;#039;button_press_event&amp;#039;, self.__pressed_cb)&lt;br /&gt;
+        self.connect(&amp;#039;button_press_event&amp;#039;, self.__pressed_cb, me)&lt;br /&gt;
+&lt;br /&gt;
+    def __pressed_cb(self, button, event, me):&lt;br /&gt;
+        me.set_random_colors()&lt;br /&gt;
+&lt;br /&gt;
+class ColorPrev(EventIcon):&lt;br /&gt;
+    __gsignals__ = {&lt;br /&gt;
+        &amp;#039;color-changed&amp;#039;: (gobject.SIGNAL_RUN_FIRST,&lt;br /&gt;
+                          gobject.TYPE_NONE,&lt;br /&gt;
+                          ([str]))&lt;br /&gt;
+    }&lt;br /&gt;
+    def __init__(self, me, xo_next_color=None):&lt;br /&gt;
+        EventIcon.__init__(self)&lt;br /&gt;
+        self.icon.props.xo_color = xo_next_color&lt;br /&gt;
+        self.icon.props.icon_name = &amp;#039;computer-xo&amp;#039;&lt;br /&gt;
+        self.icon.props.pixel_size = style.STANDARD_ICON_SIZE&lt;br /&gt;
+        self.connect(&amp;#039;button_press_event&amp;#039;, self.__pressed_cb, me)&lt;br /&gt;
+&lt;br /&gt;
+    def __pressed_cb(self, button, event, me):&lt;br /&gt;
+        me.set_prev_colors()&lt;br /&gt;
+&lt;br /&gt;
+class ColorNext(EventIcon):&lt;br /&gt;
+    __gsignals__ = {&lt;br /&gt;
+        &amp;#039;color-changed&amp;#039;: (gobject.SIGNAL_RUN_FIRST,&lt;br /&gt;
+                          gobject.TYPE_NONE,&lt;br /&gt;
+                          ([str]))&lt;br /&gt;
+    }&lt;br /&gt;
+    def __init__(self, me, xo_next_color=None):&lt;br /&gt;
+        EventIcon.__init__(self)&lt;br /&gt;
+        self.icon.props.xo_color = xo_next_color&lt;br /&gt;
+        self.icon.props.icon_name = &amp;#039;computer-xo&amp;#039;&lt;br /&gt;
+        self.icon.props.pixel_size = style.STANDARD_ICON_SIZE&lt;br /&gt;
+        self.connect(&amp;#039;button_press_event&amp;#039;, self.__pressed_cb, me)&lt;br /&gt;
 &lt;br /&gt;
-    def __pressed_cb(self, button, event):&lt;br /&gt;
-        self._set_random_colors()&lt;br /&gt;
+    def __pressed_cb(self, button, event, me):&lt;br /&gt;
+        me.set_next_colors()&lt;br /&gt;
 &lt;br /&gt;
-    def _set_random_colors(self):&lt;br /&gt;
+class ColorUndo(EventIcon):&lt;br /&gt;
+    __gsignals__ = {&lt;br /&gt;
+        &amp;#039;color-changed&amp;#039;: (gobject.SIGNAL_RUN_FIRST,&lt;br /&gt;
+                          gobject.TYPE_NONE,&lt;br /&gt;
+                          ([str]))&lt;br /&gt;
+    }&lt;br /&gt;
+    def __init__(self, me):&lt;br /&gt;
+        EventIcon.__init__(self)&lt;br /&gt;
+        self.icon.props.icon_name = &amp;#039;edit-undo&amp;#039;&lt;br /&gt;
+        # self.icon.props.icon_name = &amp;#039;view-refresh&amp;#039;&lt;br /&gt;
+        # self.icon.props.accelerator = &amp;#039;&amp;lt;Ctrl&amp;gt;z&amp;#039;&lt;br /&gt;
         xocolor = XoColor()&lt;br /&gt;
+        xocolor.set_color(&amp;quot;#FFFFFF,#FFFFFF&amp;quot;)&lt;br /&gt;
         self.icon.props.xo_color = xocolor&lt;br /&gt;
-        self.emit(&amp;#039;color-changed&amp;#039;, xocolor.to_string())&lt;br /&gt;
+        self.icon.props.pixel_size = style.MEDIUM_ICON_SIZE&lt;br /&gt;
+        self.connect(&amp;#039;button_press_event&amp;#039;, self.__pressed_cb, me)&lt;br /&gt;
+&lt;br /&gt;
+    def __pressed_cb(self, button, event, me):&lt;br /&gt;
+        me.undo_colors()&lt;br /&gt;
+&lt;br /&gt;
+class Prev(EventIcon):&lt;br /&gt;
+    __gsignals__ = {&lt;br /&gt;
+        &amp;#039;color-changed&amp;#039;: (gobject.SIGNAL_RUN_FIRST,&lt;br /&gt;
+                          gobject.TYPE_NONE,&lt;br /&gt;
+                          ([str]))&lt;br /&gt;
+    }&lt;br /&gt;
+    def __init__(self, me):&lt;br /&gt;
+        EventIcon.__init__(self)&lt;br /&gt;
+        self.icon.props.icon_name = &amp;#039;go-left&amp;#039;&lt;br /&gt;
+        xocolor = XoColor()&lt;br /&gt;
+        xocolor.set_color(&amp;quot;#FFFFFF,#808080&amp;quot;)&lt;br /&gt;
+        self.icon.props.xo_color = xocolor&lt;br /&gt;
+        self.icon.props.pixel_size = style.STANDARD_ICON_SIZE&lt;br /&gt;
+        self.connect(&amp;#039;button_press_event&amp;#039;, self.__pressed_cb, me)&lt;br /&gt;
+&lt;br /&gt;
+    def __pressed_cb(self, button, event, me):&lt;br /&gt;
+        me.set_prev_colors()&lt;br /&gt;
+&lt;br /&gt;
+class Next(EventIcon):&lt;br /&gt;
+    __gsignals__ = {&lt;br /&gt;
+        &amp;#039;color-changed&amp;#039;: (gobject.SIGNAL_RUN_FIRST,&lt;br /&gt;
+                          gobject.TYPE_NONE,&lt;br /&gt;
+                          ([str]))&lt;br /&gt;
+    }&lt;br /&gt;
+    def __init__(self, me):&lt;br /&gt;
+        EventIcon.__init__(self)&lt;br /&gt;
+        self.icon.props.icon_name = &amp;#039;go-right&amp;#039;&lt;br /&gt;
+        xocolor = XoColor()&lt;br /&gt;
+        xocolor.set_color(&amp;quot;#FFFFFF,#808080&amp;quot;)&lt;br /&gt;
+        self.icon.props.xo_color = xocolor&lt;br /&gt;
+        self.icon.props.pixel_size = style.STANDARD_ICON_SIZE&lt;br /&gt;
+        self.connect(&amp;#039;button_press_event&amp;#039;, self.__pressed_cb, me)&lt;br /&gt;
+&lt;br /&gt;
+    def __pressed_cb(self, button, event, me):&lt;br /&gt;
+        me.set_next_colors()&lt;br /&gt;
 &lt;br /&gt;
 class AboutMe(SectionView):&lt;br /&gt;
     def __init__(self, model, alerts):&lt;br /&gt;
         SectionView.__init__(self)&lt;br /&gt;
 &lt;br /&gt;
         self._model = model&lt;br /&gt;
+        self._xo_color = XoColor(self._model.get_color_xo())&lt;br /&gt;
+        self._undo_colors = self._xo_color.to_string()&lt;br /&gt;
+        self._xo_next_color = XoColor(self._xo_color.get_next_color())&lt;br /&gt;
+        self._xo_prev_color = XoColor(self._xo_color.get_prev_color())&lt;br /&gt;
         self.restart_alerts = alerts&lt;br /&gt;
         self._nick_sid = 0&lt;br /&gt;
         self._color_valid = True&lt;br /&gt;
@@ -131,11 +220,31 @@ class AboutMe(SectionView):&lt;br /&gt;
         self._group.add_widget(label_color)&lt;br /&gt;
         self._color_box.pack_start(label_color, expand=False)&lt;br /&gt;
         label_color.show()&lt;br /&gt;
+&lt;br /&gt;
+        self._color_prev = ColorPrev(self,self._xo_prev_color)&lt;br /&gt;
+        self._color_box.pack_start(self._color_prev, expand=False)&lt;br /&gt;
+        self._color_prev.show()&lt;br /&gt;
         &lt;br /&gt;
-        self._color_picker = ColorPicker()&lt;br /&gt;
+        self._prev = Prev(self)&lt;br /&gt;
+        self._color_box.pack_start(self._prev, expand=False)&lt;br /&gt;
+        self._prev.show()&lt;br /&gt;
+&lt;br /&gt;
+        self._color_picker = ColorPicker(self,self._xo_color)&lt;br /&gt;
         self._color_box.pack_start(self._color_picker, expand=False)&lt;br /&gt;
         self._color_picker.show()&lt;br /&gt;
 &lt;br /&gt;
+        self._next = Next(self)&lt;br /&gt;
+        self._color_box.pack_start(self._next, expand=False)&lt;br /&gt;
+        self._next.show()&lt;br /&gt;
+&lt;br /&gt;
+        self._color_next = ColorNext(self,self._xo_next_color)&lt;br /&gt;
+        self._color_box.pack_start(self._color_next, expand=False)&lt;br /&gt;
+        self._color_next.show()&lt;br /&gt;
+&lt;br /&gt;
+        self._color_undo = ColorUndo(self)&lt;br /&gt;
+        self._color_box.pack_start(self._color_undo, expand=False)&lt;br /&gt;
+        self._color_undo.show()&lt;br /&gt;
+&lt;br /&gt;
         label_color_error = gtk.Label()&lt;br /&gt;
         self._group.add_widget(label_color_error)&lt;br /&gt;
         self._color_alert_box.pack_start(label_color_error, expand=False)&lt;br /&gt;
@@ -152,10 +261,73 @@ class AboutMe(SectionView):&lt;br /&gt;
         self._color_box.show()&lt;br /&gt;
         self._color_alert_box.show()&lt;br /&gt;
     &lt;br /&gt;
+    def set_prev_colors(self):&lt;br /&gt;
+        # update next color to the current color&lt;br /&gt;
+        self._xo_next_color.set_color(self._xo_color.to_string())&lt;br /&gt;
+        self._color_next.icon.props.xo_color = self._xo_next_color&lt;br /&gt;
+        self._color_next.emit(&amp;#039;color-changed&amp;#039;, self._xo_next_color.to_string())&lt;br /&gt;
+        # update color picker to the prev color&lt;br /&gt;
+        self._undo_colors = self._xo_color.to_string()&lt;br /&gt;
+        self._xo_color.set_color(self._xo_prev_color.to_string())&lt;br /&gt;
+        self._color_picker.icon.props.xo_color = self._xo_color&lt;br /&gt;
+        self._color_picker.emit(&amp;#039;color-changed&amp;#039;, self._xo_color.to_string())&lt;br /&gt;
+        # update prev color to its prev color&lt;br /&gt;
+        self._xo_prev_color.set_color(self._xo_prev_color.get_prev_color())&lt;br /&gt;
+        self._color_prev.icon.props.xo_color = self._xo_prev_color&lt;br /&gt;
+        self._color_prev.emit(&amp;#039;color-changed&amp;#039;, self._xo_prev_color.to_string())&lt;br /&gt;
+&lt;br /&gt;
+    def set_random_colors(self):&lt;br /&gt;
+        # update this color to a random color&lt;br /&gt;
+        self._undo_colors = self._xo_color.to_string()&lt;br /&gt;
+        self._xo_color.set_color(self._xo_color.get_random_color())&lt;br /&gt;
+        self._color_picker.icon.props.xo_color = self._xo_color&lt;br /&gt;
+        self._color_picker.emit(&amp;#039;color-changed&amp;#039;, self._xo_color.to_string())&lt;br /&gt;
+        # update prev color from the current color&lt;br /&gt;
+        self._xo_prev_color.set_color(self._xo_color.get_prev_color())&lt;br /&gt;
+        self._color_prev.icon.props.xo_color = self._xo_prev_color&lt;br /&gt;
+        self._color_prev.emit(&amp;#039;color-changed&amp;#039;, self._xo_prev_color.to_string())&lt;br /&gt;
+        # update next color from the current color&lt;br /&gt;
+        self._xo_next_color.set_color(self._xo_color.get_next_color())&lt;br /&gt;
+        self._color_next.icon.props.xo_color = self._xo_next_color&lt;br /&gt;
+        self._color_next.emit(&amp;#039;color-changed&amp;#039;, self._xo_next_color.to_string())&lt;br /&gt;
+&lt;br /&gt;
+    def set_next_colors(self):&lt;br /&gt;
+        # update prev color to the current color&lt;br /&gt;
+        self._xo_prev_color.set_color(self._xo_color.to_string())&lt;br /&gt;
+        self._color_prev.icon.props.xo_color = self._xo_prev_color&lt;br /&gt;
+        self._color_prev.emit(&amp;#039;color-changed&amp;#039;, self._xo_prev_color.to_string())&lt;br /&gt;
+        # update color picker to the next color&lt;br /&gt;
+        self._undo_colors = self._xo_color.to_string()&lt;br /&gt;
+        self._xo_color.set_color(self._xo_next_color.to_string())&lt;br /&gt;
+        self._color_picker.icon.props.xo_color = self._xo_color&lt;br /&gt;
+        self._color_picker.emit(&amp;#039;color-changed&amp;#039;, self._xo_color.to_string())&lt;br /&gt;
+        # update next color to its next color&lt;br /&gt;
+        self._xo_next_color.set_color(self._xo_next_color.get_next_color())&lt;br /&gt;
+        self._color_next.icon.props.xo_color = self._xo_next_color&lt;br /&gt;
+        self._color_next.emit(&amp;#039;color-changed&amp;#039;, self._xo_next_color.to_string())&lt;br /&gt;
+&lt;br /&gt;
+    def undo_colors(self):&lt;br /&gt;
+        # undo last change&lt;br /&gt;
+        tmp = self._xo_color.to_string()&lt;br /&gt;
+        self._xo_color.set_color(self._undo_colors)&lt;br /&gt;
+        self._undo_colors = tmp&lt;br /&gt;
+        self._color_picker.icon.props.xo_color = self._xo_color&lt;br /&gt;
+        self._color_picker.emit(&amp;#039;color-changed&amp;#039;, self._xo_color.to_string())&lt;br /&gt;
+        # update prev color from the current color&lt;br /&gt;
+        self._xo_prev_color.set_color(self._xo_color.get_prev_color())&lt;br /&gt;
+        self._color_prev.icon.props.xo_color = self._xo_prev_color&lt;br /&gt;
+        self._color_prev.emit(&amp;#039;color-changed&amp;#039;, self._xo_prev_color.to_string())&lt;br /&gt;
+        # update next color from the current color&lt;br /&gt;
+        self._xo_next_color.set_color(self._xo_color.get_next_color())&lt;br /&gt;
+        self._color_next.icon.props.xo_color = self._xo_next_color&lt;br /&gt;
+        self._color_next.emit(&amp;#039;color-changed&amp;#039;, self._xo_next_color.to_string())&lt;br /&gt;
+    &lt;br /&gt;
     def setup(self):&lt;br /&gt;
         self._nick_entry.set_text(self._model.get_nick())&lt;br /&gt;
-        color = XoColor(self._model.get_color_xo())&lt;br /&gt;
-        self._color_picker.icon.props.xo_color = color&lt;br /&gt;
+        # mycolor = self._model.get_color_xo()&lt;br /&gt;
+        self._color_picker.icon.props.xo_color = self._xo_color&lt;br /&gt;
+        self._color_next.icon.props.xo_color = self._xo_next_color&lt;br /&gt;
+        self._color_prev.icon.props.xo_color = self._xo_prev_color&lt;br /&gt;
 &lt;br /&gt;
         self._color_valid = True&lt;br /&gt;
         self._nick_valid = True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
	</entry>
</feed>