pep8'd sugar3.graphics

This commit is contained in:
William Orr 2013-05-17 22:27:04 -04:00 committed by Daniel Narvaez
parent 51f07bba81
commit edbc8f53b3
18 changed files with 321 additions and 298 deletions

View File

@ -56,7 +56,7 @@ class Animator(GObject.GObject):
self._start_time = time.time() self._start_time = time.time()
self._timeout_sid = GLib.timeout_add( self._timeout_sid = GLib.timeout_add(
int(self._interval * 1000), self._next_frame_cb) int(self._interval * 1000), self._next_frame_cb)
def stop(self): def stop(self):
if self._timeout_sid: if self._timeout_sid:

View File

@ -48,7 +48,7 @@ class _ColorButton(Gtk.Button):
__gtype_name__ = 'SugarColorButton' __gtype_name__ = 'SugarColorButton'
__gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None, __gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None,
tuple())} tuple())}
def __init__(self, **kwargs): def __init__(self, **kwargs):
self._title = _('Choose a color') self._title = _('Choose a color')
@ -66,13 +66,16 @@ class _ColorButton(Gtk.Button):
# FIXME Drag and drop is not working, SL #3796 # FIXME Drag and drop is not working, SL #3796
if self._accept_drag: if self._accept_drag:
self.drag_dest_set(Gtk.DestDefaults.MOTION | self.drag_dest_set(Gtk.DestDefaults.MOTION |
Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, Gtk.DestDefaults.HIGHLIGHT |
[Gtk.TargetEntry.new('application/x-color', 0, 0)], Gtk.DestDefaults.DROP,
Gdk.DragAction.COPY) [Gtk.TargetEntry.new(
'application/x-color', 0, 0)],
Gdk.DragAction.COPY)
self.drag_source_set(Gdk.ModifierType.BUTTON1_MASK | self.drag_source_set(Gdk.ModifierType.BUTTON1_MASK |
Gdk.ModifierType.BUTTON3_MASK, Gdk.ModifierType.BUTTON3_MASK,
[Gtk.TargetEntry.new('application/x-color', 0, 0)], [Gtk.TargetEntry.new(
Gdk.DragAction.COPY) 'application/x-color', 0, 0)],
Gdk.DragAction.COPY)
self.connect('drag_data_received', self.__drag_data_received_cb) self.connect('drag_data_received', self.__drag_data_received_cb)
self.connect('drag_data_get', self.__drag_data_get_cb) self.connect('drag_data_get', self.__drag_data_get_cb)
@ -92,7 +95,7 @@ class _ColorButton(Gtk.Button):
primary_text=self._title) primary_text=self._title)
self._palette.connect('color-set', self.__palette_color_set_cb) self._palette.connect('color-set', self.__palette_color_set_cb)
self._palette.connect('notify::color', self. self._palette.connect('notify::color', self.
__palette_color_changed) __palette_color_changed)
return self._palette return self._palette
@ -110,7 +113,7 @@ class _ColorButton(Gtk.Button):
fg_color = context.get_color(Gtk.StateType.NORMAL) fg_color = context.get_color(Gtk.StateType.NORMAL)
# the color components are stored as float values between 0.0 and 1.0 # the color components are stored as float values between 0.0 and 1.0
return '#%.2X%.2X%.2X' % (fg_color.red * 255, fg_color.green * 255, return '#%.2X%.2X%.2X' % (fg_color.red * 255, fg_color.green * 255,
fg_color.blue * 255) fg_color.blue * 255)
def set_color(self, color): def set_color(self, color):
assert isinstance(color, Gdk.Color) assert isinstance(color, Gdk.Color)
@ -167,7 +170,7 @@ class _ColorButton(Gtk.Button):
has_invoker = GObject.property(type=bool, default=True, has_invoker = GObject.property(type=bool, default=True,
flags=GObject.PARAM_READWRITE | flags=GObject.PARAM_READWRITE |
GObject.PARAM_CONSTRUCT_ONLY, GObject.PARAM_CONSTRUCT_ONLY,
getter=_get_has_invoker, getter=_get_has_invoker,
setter=_set_has_invoker) setter=_set_has_invoker)
@ -179,7 +182,7 @@ class _ColorButton(Gtk.Button):
has_palette = GObject.property(type=bool, default=True, has_palette = GObject.property(type=bool, default=True,
flags=GObject.PARAM_READWRITE | flags=GObject.PARAM_READWRITE |
GObject.PARAM_CONSTRUCT_ONLY, GObject.PARAM_CONSTRUCT_ONLY,
getter=_get_has_palette, getter=_get_has_palette,
setter=_set_has_palette) setter=_set_has_palette)
@ -191,15 +194,15 @@ class _ColorButton(Gtk.Button):
accept_drag = GObject.property(type=bool, default=True, accept_drag = GObject.property(type=bool, default=True,
flags=GObject.PARAM_READWRITE | flags=GObject.PARAM_READWRITE |
GObject.PARAM_CONSTRUCT_ONLY, GObject.PARAM_CONSTRUCT_ONLY,
getter=_get_accept_drag, getter=_get_accept_drag,
setter=_set_accept_drag) setter=_set_accept_drag)
def __drag_begin_cb(self, widget, context): def __drag_begin_cb(self, widget, context):
# Drag and Drop # Drag and Drop
pixbuf = GdkPixbuf.Pixbuf(GdkPixbuf.Colorspace.RGB, True, 8, pixbuf = GdkPixbuf.Pixbuf(GdkPixbuf.Colorspace.RGB, True, 8,
style.SMALL_ICON_SIZE, style.SMALL_ICON_SIZE,
style.SMALL_ICON_SIZE) style.SMALL_ICON_SIZE)
red = self._color.red / 257 red = self._color.red / 257
green = self._color.green / 257 green = self._color.green / 257
@ -211,11 +214,11 @@ class _ColorButton(Gtk.Button):
def __drag_data_get_cb(self, widget, context, selection_data, info, time): def __drag_data_get_cb(self, widget, context, selection_data, info, time):
data = struct.pack('=HHHH', self._color.red, self._color.green, data = struct.pack('=HHHH', self._color.red, self._color.green,
self._color.blue, 65535) self._color.blue, 65535)
selection_data.set(selection_data.target, 16, data) selection_data.set(selection_data.target, 16, data)
def __drag_data_received_cb(self, widget, context, x, y, selection_data, \ def __drag_data_received_cb(self, widget, context, x, y, selection_data,
info, time): info, time):
if len(selection_data.data) != 8: if len(selection_data.data) != 8:
return return
@ -242,7 +245,7 @@ class _ColorPalette(Palette):
# The color-set signal is emitted when the user is finished selecting # The color-set signal is emitted when the user is finished selecting
# a color. # a color.
__gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None, __gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None,
tuple())} tuple())}
def __init__(self, **kwargs): def __init__(self, **kwargs):
self._color = Gdk.Color(0, 0, 0) self._color = Gdk.Color(0, 0, 0)
@ -406,8 +409,9 @@ def _add_accelerator(tool_button):
keyval, mask = Gtk.accelerator_parse(tool_button.props.accelerator) keyval, mask = Gtk.accelerator_parse(tool_button.props.accelerator)
# the accelerator needs to be set at the child, so the Gtk.AccelLabel # the accelerator needs to be set at the child, so the Gtk.AccelLabel
# in the palette can pick it up. # in the palette can pick it up.
tool_button.get_child().add_accelerator('clicked', accel_group, keyval, mask, tool_button.get_child(
Gtk.AccelFlags.LOCKED | Gtk.AccelFlags.VISIBLE) ).add_accelerator('clicked', accel_group, keyval, mask,
Gtk.AccelFlags.LOCKED | Gtk.AccelFlags.VISIBLE)
def _hierarchy_changed_cb(tool_button, previous_toplevel): def _hierarchy_changed_cb(tool_button, previous_toplevel):
@ -426,7 +430,7 @@ class ColorToolButton(Gtk.ToolItem):
__gtype_name__ = 'SugarColorToolButton' __gtype_name__ = 'SugarColorToolButton'
__gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None, __gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None,
tuple())} tuple())}
def __init__(self, icon_name='color-preview', **kwargs): def __init__(self, icon_name='color-preview', **kwargs):
self._accelerator = None self._accelerator = None
@ -471,7 +475,7 @@ class ColorToolButton(Gtk.ToolItem):
return self._accelerator return self._accelerator
accelerator = GObject.property(type=str, setter=set_accelerator, accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator) getter=get_accelerator)
def create_palette(self): def create_palette(self):
self._palette = self.get_child().create_palette() self._palette = self.get_child().create_palette()

View File

@ -89,7 +89,7 @@ class ComboBox(Gtk.ComboBox):
file_name = self._get_real_name_from_theme(icon_name, size) file_name = self._get_real_name_from_theme(icon_name, size)
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size( pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
file_name, width, height) file_name, width, height)
else: else:
pixbuf = None pixbuf = None

View File

@ -139,7 +139,7 @@ class _IconBuffer(object):
theme = Gtk.IconTheme.get_default() theme = Gtk.IconTheme.get_default()
size = 50 size = 50
if self.width != None: if self.width is not None:
size = self.width size = self.width
info = theme.lookup_icon(self.icon_name, int(size), 0) info = theme.lookup_icon(self.icon_name, int(size), 0)
@ -153,7 +153,7 @@ class _IconBuffer(object):
del info del info
else: else:
logging.warning('No icon with the name %s was found in the ' logging.warning('No icon with the name %s was found in the '
'theme.', self.icon_name) 'theme.', self.icon_name)
return icon_info return icon_info
@ -205,7 +205,7 @@ class _IconBuffer(object):
if info.attach_x < 0 or info.attach_y < 0: if info.attach_x < 0 or info.attach_y < 0:
info.icon_padding = max(-info.attach_x, -info.attach_y) info.icon_padding = max(-info.attach_x, -info.attach_y)
elif info.attach_x + info.size > icon_width or \ elif info.attach_x + info.size > icon_width or \
info.attach_y + info.size > icon_height: info.attach_y + info.size > icon_height:
x_padding = info.attach_x + info.size - icon_width x_padding = info.attach_x + info.size - icon_width
y_padding = info.attach_y + info.size - icon_height y_padding = info.attach_y + info.size - icon_height
info.icon_padding = max(x_padding, y_padding) info.icon_padding = max(x_padding, y_padding)
@ -397,9 +397,9 @@ class Icon(Gtk.Image):
allocation = self.get_allocation() allocation = self.get_allocation()
x = math.floor(xpad + x = math.floor(xpad +
(allocation.width - requisition.width) * xalign) (allocation.width - requisition.width) * xalign)
y = math.floor(ypad + y = math.floor(ypad +
(allocation.height - requisition.height) * yalign) (allocation.height - requisition.height) * yalign)
if self._scale != 1.0: if self._scale != 1.0:
cr.scale(self._scale, self._scale) cr.scale(self._scale, self._scale)
@ -727,8 +727,9 @@ class CanvasIcon(EventIcon):
def __button_press_event_cb(self, icon, event): def __button_press_event_cb(self, icon, event):
if self.palette and not self.palette.is_up(): if self.palette and not self.palette.is_up():
self.set_state_flags(self.get_state_flags() | Gtk.StateFlags.ACTIVE, self.set_state_flags(
clear=True) self.get_state_flags() | Gtk.StateFlags.ACTIVE,
clear=True)
def __button_release_event_cb(self, icon, event): def __button_release_event_cb(self, icon, event):
self.unset_state_flags(Gtk.StateFlags.ACTIVE) self.unset_state_flags(Gtk.StateFlags.ACTIVE)
@ -807,7 +808,7 @@ class CellRendererIcon(Gtk.CellRenderer):
self._xo_color = value self._xo_color = value
xo_color = GObject.property(type=object, xo_color = GObject.property(type=object,
getter=get_xo_color, setter=set_xo_color) getter=get_xo_color, setter=set_xo_color)
def set_fill_color(self, value): def set_fill_color(self, value):
if self._fill_color != value: if self._fill_color != value:
@ -918,9 +919,9 @@ class CellRendererIcon(Gtk.CellRenderer):
else: else:
context.set_state(Gtk.StateFlags.NORMAL) context.set_state(Gtk.StateFlags.NORMAL)
Gtk.render_background(
Gtk.render_background(context, cr, background_area.x, background_area.y, context, cr, background_area.x, background_area.y,
background_area.width, background_area.height) background_area.width, background_area.height)
Gtk.render_frame(context, cr, background_area.x, background_area.y, Gtk.render_frame(context, cr, background_area.x, background_area.y,
background_area.width, background_area.height) background_area.width, background_area.height)

View File

@ -92,4 +92,4 @@ class MenuItem(Gtk.ImageMenuItem):
return self._accelerator return self._accelerator
accelerator = GObject.property(type=str, setter=set_accelerator, accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator) getter=get_accelerator)

View File

@ -34,7 +34,8 @@ class Notebook(Gtk.Notebook):
__gproperties__ = { __gproperties__ = {
'can-close-tabs': (bool, None, None, False, 'can-close-tabs': (bool, None, None, False,
GObject.PARAM_READWRITE | GObject.PARAM_CONSTRUCT_ONLY), GObject.PARAM_READWRITE |
GObject.PARAM_CONSTRUCT_ONLY),
} }
def __init__(self, **kwargs): def __init__(self, **kwargs):

View File

@ -60,10 +60,10 @@ class ObjectChooser(object):
self._bus = dbus.SessionBus(mainloop=self._main_loop) self._bus = dbus.SessionBus(mainloop=self._main_loop)
self._bus.add_signal_receiver( self._bus.add_signal_receiver(
self.__name_owner_changed_cb, self.__name_owner_changed_cb,
signal_name='NameOwnerChanged', signal_name='NameOwnerChanged',
dbus_interface='org.freedesktop.DBus', dbus_interface='org.freedesktop.DBus',
arg0=J_DBUS_SERVICE) arg0=J_DBUS_SERVICE)
obj = self._bus.get_object(J_DBUS_SERVICE, J_DBUS_PATH) obj = self._bus.get_object(J_DBUS_SERVICE, J_DBUS_PATH)
journal = dbus.Interface(obj, J_DBUS_INTERFACE) journal = dbus.Interface(obj, J_DBUS_INTERFACE)

View File

@ -35,7 +35,7 @@ from sugar3.graphics.palettewindow import PaletteWindow, \
from sugar3.graphics.palettemenu import PaletteMenuItem from sugar3.graphics.palettemenu import PaletteMenuItem
from sugar3.graphics.palettewindow import MouseSpeedDetector, Invoker, \ from sugar3.graphics.palettewindow import MouseSpeedDetector, Invoker, \
WidgetInvoker, CursorInvoker, ToolInvoker, CellRendererInvoker WidgetInvoker, CursorInvoker, ToolInvoker, CellRendererInvoker
assert MouseSpeedDetector assert MouseSpeedDetector
assert Invoker assert Invoker
assert WidgetInvoker assert WidgetInvoker
@ -43,6 +43,7 @@ assert CursorInvoker
assert ToolInvoker assert ToolInvoker
assert CellRendererInvoker assert CellRendererInvoker
class _HeaderItem(Gtk.MenuItem): class _HeaderItem(Gtk.MenuItem):
"""A MenuItem with a custom child widget that gets all the """A MenuItem with a custom child widget that gets all the
available space. available space.
@ -269,7 +270,7 @@ class Palette(PaletteWindow):
return self._secondary_text return self._secondary_text
secondary_text = GObject.property(type=str, getter=get_secondary_text, secondary_text = GObject.property(type=str, getter=get_secondary_text,
setter=set_secondary_text) setter=set_secondary_text)
def _show_icon(self): def _show_icon(self):
self._label_alignment.set_padding(0, 0, 0, style.DEFAULT_SPACING) self._label_alignment.set_padding(0, 0, 0, style.DEFAULT_SPACING)
@ -326,7 +327,7 @@ class Palette(PaletteWindow):
def set_content(self, widget): def set_content(self, widget):
assert self._widget is None \ assert self._widget is None \
or isinstance(self._widget, _PaletteWindowWidget) or isinstance(self._widget, _PaletteWindowWidget)
if self._widget is None: if self._widget is None:
self._widget = _PaletteWindowWidget(self) self._widget = _PaletteWindowWidget(self)
@ -366,7 +367,7 @@ class Palette(PaletteWindow):
def get_label_width(self): def get_label_width(self):
# Gtk.AccelLabel request doesn't include the accelerator. # Gtk.AccelLabel request doesn't include the accelerator.
label_width = self._label_alignment.get_preferred_width()[1] + \ label_width = self._label_alignment.get_preferred_width()[1] + \
self._label.get_accel_width() self._label.get_accel_width()
return label_width return label_width
def _update_separators(self): def _update_separators(self):

View File

@ -30,7 +30,7 @@ class PaletteMenuBox(Gtk.VBox):
vertical_padding=None): vertical_padding=None):
item = None item = None
if (isinstance(item_or_widget, PaletteMenuItem) or if (isinstance(item_or_widget, PaletteMenuItem) or
isinstance(item_or_widget, PaletteMenuItemSeparator)): isinstance(item_or_widget, PaletteMenuItemSeparator)):
item = item_or_widget item = item_or_widget
else: else:
item = self._wrap_widget(item_or_widget, horizontal_padding, item = self._wrap_widget(item_or_widget, horizontal_padding,
@ -98,7 +98,7 @@ class PaletteMenuItem(Gtk.EventBox):
if icon_name is not None: if icon_name is not None:
self.icon = Icon(icon_name=icon_name, self.icon = Icon(icon_name=icon_name,
icon_size=Gtk.IconSize.SMALL_TOOLBAR) icon_size=Gtk.IconSize.SMALL_TOOLBAR)
if xo_color is not None: if xo_color is not None:
self.icon.props.xo_color = xo_color self.icon.props.xo_color = xo_color
self._hbox.pack_start(self.icon, expand=False, fill=False, self._hbox.pack_start(self.icon, expand=False, fill=False,
@ -118,10 +118,10 @@ class PaletteMenuItem(Gtk.EventBox):
self.label.set_ellipsize(Pango.EllipsizeMode.MIDDLE) self.label.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
align.add(self.label) align.add(self.label)
self._hbox.pack_start(align, expand=True, fill=True, self._hbox.pack_start(align, expand=True, fill=True,
padding=style.DEFAULT_PADDING) padding=style.DEFAULT_PADDING)
self.id_bt_release_cb = self.connect('button-release-event', self.id_bt_release_cb = self.connect('button-release-event',
self.__button_release_cb) self.__button_release_cb)
self.id_enter_notify_cb = self.connect('enter-notify-event', self.id_enter_notify_cb = self.connect('enter-notify-event',
self.__enter_notify_cb) self.__enter_notify_cb)
self.id_leave_notify_cb = self.connect('leave-notify-event', self.id_leave_notify_cb = self.connect('leave-notify-event',
@ -142,7 +142,7 @@ class PaletteMenuItem(Gtk.EventBox):
def set_label(self, text_label): def set_label(self, text_label):
text = '<span foreground="%s">' % style.COLOR_WHITE.get_html() + \ text = '<span foreground="%s">' % style.COLOR_WHITE.get_html() + \
text_label + '</span>' text_label + '</span>'
self.label.set_markup(text) self.label.set_markup(text)
def set_image(self, icon): def set_image(self, icon):
@ -151,8 +151,8 @@ class PaletteMenuItem(Gtk.EventBox):
self._hbox.reorder_child(icon, 0) self._hbox.reorder_child(icon, 0)
def set_sensitive(self, sensitive): def set_sensitive(self, sensitive):
is_sensitive = bool(not self.get_state_flags() & \ is_sensitive = bool(not self.get_state_flags() &
Gtk.StateFlags.INSENSITIVE) Gtk.StateFlags.INSENSITIVE)
if is_sensitive == sensitive: if is_sensitive == sensitive:
return return
@ -165,6 +165,6 @@ class PaletteMenuItem(Gtk.EventBox):
self.handler_block(self.id_bt_release_cb) self.handler_block(self.id_bt_release_cb)
self.handler_block(self.id_enter_notify_cb) self.handler_block(self.id_enter_notify_cb)
self.handler_block(self.id_leave_notify_cb) self.handler_block(self.id_leave_notify_cb)
self.set_state_flags(self.get_state_flags() | \ self.set_state_flags(self.get_state_flags() |
Gtk.StateFlags.INSENSITIVE, Gtk.StateFlags.INSENSITIVE,
clear=True) clear=True)

View File

@ -55,11 +55,13 @@ def _calculate_gap(a, b):
gap = False gap = False
if gap: if gap:
if gap_side == Gtk.PositionType.BOTTOM or gap_side == Gtk.PositionType.TOP: if gap_side == Gtk.PositionType.BOTTOM or \
gap_side == Gtk.PositionType.TOP:
gap_start = min(a.width, max(0, b.x - a.x)) gap_start = min(a.width, max(0, b.x - a.x))
gap_size = max(0, min(a.width, gap_size = max(0, min(a.width,
(b.x + b.width) - a.x) - gap_start) (b.x + b.width) - a.x) - gap_start)
elif gap_side == Gtk.PositionType.RIGHT or gap_side == Gtk.PositionType.LEFT: elif gap_side == Gtk.PositionType.RIGHT or \
gap_side == Gtk.PositionType.LEFT:
gap_start = min(a.height, max(0, b.y - a.y)) gap_start = min(a.height, max(0, b.y - a.y))
gap_size = max(0, min(a.height, gap_size = max(0, min(a.height,
(b.y + b.height) - a.y) - gap_start) (b.y + b.height) - a.y) - gap_start)
@ -295,7 +297,7 @@ class _PaletteWindowWidget(Gtk.Window):
def set_accept_focus(self, focus): def set_accept_focus(self, focus):
self._should_accept_focus = focus self._should_accept_focus = focus
if self.get_window() != None: if self.get_window() is not None:
self.get_window().set_accept_focus(focus) self.get_window().set_accept_focus(focus)
def get_origin(self): def get_origin(self):
@ -368,10 +370,12 @@ class _PaletteWindowWidget(Gtk.Window):
context = self.get_style_context() context = self.get_style_context()
context.add_class('toolitem') context.add_class('toolitem')
if gap: if gap:
Gtk.render_frame_gap(context, cr, 0, 0, allocation.width, allocation.height, Gtk.render_frame_gap(
gap[0], gap[1], gap[1] + gap[2]) context, cr, 0, 0, allocation.width, allocation.height,
gap[0], gap[1], gap[1] + gap[2])
else: else:
Gtk.render_frame(context, cr, 0, 0, allocation.width, allocation.height) Gtk.render_frame(
context, cr, 0, 0, allocation.width, allocation.height)
return False return False
def __enter_notify_event_cb(self, widget, event): def __enter_notify_event_cb(self, widget, event):
@ -847,9 +851,9 @@ class Invoker(GObject.GObject):
def _in_screen(self, rect): def _in_screen(self, rect):
return rect.x >= self._screen_area.x and \ return rect.x >= self._screen_area.x and \
rect.y >= self._screen_area.y and \ rect.y >= self._screen_area.y and \
rect.x + rect.width <= self._screen_area.width and \ rect.x + rect.width <= self._screen_area.width and \
rect.y + rect.height <= self._screen_area.height rect.y + rect.height <= self._screen_area.height
def _get_area_in_screen(self, rect): def _get_area_in_screen(self, rect):
"""Return area of rectangle visible in the screen""" """Return area of rectangle visible in the screen"""
@ -857,9 +861,9 @@ class Invoker(GObject.GObject):
x1 = max(rect.x, self._screen_area.x) x1 = max(rect.x, self._screen_area.x)
y1 = max(rect.y, self._screen_area.y) y1 = max(rect.y, self._screen_area.y)
x2 = min(rect.x + rect.width, x2 = min(rect.x + rect.width,
self._screen_area.x + self._screen_area.width) self._screen_area.x + self._screen_area.width)
y2 = min(rect.y + rect.height, y2 = min(rect.y + rect.height,
self._screen_area.y + self._screen_area.height) self._screen_area.y + self._screen_area.height)
return (x2 - x1) * (y2 - y1) return (x2 - x1) * (y2 - y1)
@ -931,7 +935,7 @@ class Invoker(GObject.GObject):
# Set palette_valign to align to screen on the bottom # Set palette_valign to align to screen on the bottom
else: else:
pv = -float(palette_dim.height - dbottom - rect.height) \ pv = -float(palette_dim.height - dbottom - rect.height) \
/ palette_dim.height / palette_dim.height
elif best_alignment in self.TOP or best_alignment in self.BOTTOM: elif best_alignment in self.TOP or best_alignment in self.BOTTOM:
dleft = rect.x - screen_area.x dleft = rect.x - screen_area.x
@ -946,7 +950,7 @@ class Invoker(GObject.GObject):
# Set palette_halign to align to screen on right # Set palette_halign to align to screen on right
else: else:
ph = -float(palette_dim.width - dright - rect.width) \ ph = -float(palette_dim.width - dright - rect.width) \
/ palette_dim.width / palette_dim.width
return (ph, pv, ih, iv) return (ph, pv, ih, iv)
@ -1039,7 +1043,7 @@ class Invoker(GObject.GObject):
self._lock_palette = lock_palette self._lock_palette = lock_palette
lock_palette = GObject.property(type=object, setter=set_lock_palette, lock_palette = GObject.property(type=object, setter=set_lock_palette,
getter=get_lock_palette) getter=get_lock_palette)
"""Whether the invoker will lock the Palette and """Whether the invoker will lock the Palette and
ignore mouse events. Defaults to False. ignore mouse events. Defaults to False.
""" """
@ -1078,21 +1082,23 @@ class WidgetInvoker(Invoker):
self.notify('widget') self.notify('widget')
self._enter_hid = self._widget.connect('enter-notify-event', self._enter_hid = self._widget.connect('enter-notify-event',
self.__enter_notify_event_cb) self.__enter_notify_event_cb)
self._leave_hid = self._widget.connect('leave-notify-event', self._leave_hid = self._widget.connect('leave-notify-event',
self.__leave_notify_event_cb) self.__leave_notify_event_cb)
if GObject.signal_lookup('clicked', self._widget) != 0: if GObject.signal_lookup('clicked', self._widget) != 0:
self._click_hid = self._widget.connect('clicked', self._click_hid = self._widget.connect('clicked',
self.__click_event_cb) self.__click_event_cb)
self._touch_hid = self._widget.connect('touch-event', self._touch_hid = self._widget.connect('touch-event',
self.__touch_event_cb) self.__touch_event_cb)
self._release_hid = self._widget.connect('button-release-event', self._release_hid = \
self.__button_release_event_cb) self._widget.connect('button-release-event',
self.__button_release_event_cb)
self._draw_hid = self._widget.connect_after('draw', self.__drawing_cb) self._draw_hid = self._widget.connect_after('draw', self.__drawing_cb)
self._long_pressed_hid = self._long_pressed_controller.connect( self._long_pressed_hid = self._long_pressed_controller.connect(
'pressed', self.__long_pressed_event_cb, self._widget) 'pressed', self.__long_pressed_event_cb, self._widget)
self._long_pressed_controller.attach(self._widget, self._long_pressed_controller.attach(
self._widget,
SugarGestures.EventControllerFlags.NONE) SugarGestures.EventControllerFlags.NONE)
self.attach(parent) self.attach(parent)
@ -1260,10 +1266,12 @@ class CursorInvoker(Invoker):
self.__leave_notify_event_cb) self.__leave_notify_event_cb)
self._release_hid = self._item.connect('button-release-event', self._release_hid = self._item.connect('button-release-event',
self.__button_release_event_cb) self.__button_release_event_cb)
self._long_pressed_hid = self._long_pressed_controller.connect('pressed', \ self._long_pressed_hid = self._long_pressed_controller.connect(
self.__long_pressed_event_cb, self._item) 'pressed',
self._long_pressed_controller.attach(self._item, \ self.__long_pressed_event_cb, self._item)
SugarGestures.EventControllerFlags.NONE) self._long_pressed_controller.attach(
self._item,
SugarGestures.EventControllerFlags.NONE)
def detach(self): def detach(self):
Invoker.detach(self) Invoker.detach(self)
@ -1364,10 +1372,11 @@ class CellRendererInvoker(Invoker):
self.__leave_notify_event_cb) self.__leave_notify_event_cb)
self._release_hid = tree_view.connect('button-release-event', self._release_hid = tree_view.connect('button-release-event',
self.__button_release_event_cb) self.__button_release_event_cb)
self._long_pressed_hid = self._long_pressed_controller.connect( \ self._long_pressed_hid = self._long_pressed_controller.connect(
'pressed', self.__long_pressed_event_cb, tree_view) 'pressed', self.__long_pressed_event_cb, tree_view)
self._long_pressed_controller.attach(tree_view, self._long_pressed_controller.attach(
SugarGestures.EventControllerFlags.NONE) tree_view,
SugarGestures.EventControllerFlags.NONE)
Invoker.attach(self, cell_renderer) Invoker.attach(self, cell_renderer)
def detach(self): def detach(self):
@ -1448,7 +1457,7 @@ class CellRendererInvoker(Invoker):
def __button_release_event_cb(self, widget, event): def __button_release_event_cb(self, widget, event):
if event.button == 1 and self.point_in_cell_renderer(event.x, if event.button == 1 and self.point_in_cell_renderer(event.x,
event.y): event.y):
tree_view = self._tree_view tree_view = self._tree_view
path, column_, x_, y_ = tree_view.get_path_at_pos(int(event.x), path, column_, x_, y_ = tree_view.get_path_at_pos(int(event.x),
int(event.y)) int(event.y))
@ -1456,7 +1465,7 @@ class CellRendererInvoker(Invoker):
# So the treeview receives it and knows a drag isn't going on # So the treeview receives it and knows a drag isn't going on
return False return False
if event.button == 3 and self.point_in_cell_renderer(event.x, if event.button == 3 and self.point_in_cell_renderer(event.x,
event.y): event.y):
self.notify_right_click() self.notify_right_click()
return True return True
else: else:

View File

@ -69,7 +69,7 @@ class RadioToolButton(Gtk.RadioToolButton):
return self._tooltip return self._tooltip
tooltip = GObject.property(type=str, setter=set_tooltip, tooltip = GObject.property(type=str, setter=set_tooltip,
getter=get_tooltip) getter=get_tooltip)
def set_accelerator(self, accelerator): def set_accelerator(self, accelerator):
self._accelerator = accelerator self._accelerator = accelerator
@ -79,7 +79,7 @@ class RadioToolButton(Gtk.RadioToolButton):
return self._accelerator return self._accelerator
accelerator = GObject.property(type=str, setter=set_accelerator, accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator) getter=get_accelerator)
def set_icon_name(self, icon_name): def set_icon_name(self, icon_name):
icon = Icon(icon_name=icon_name, icon = Icon(icon_name=icon_name,

View File

@ -67,11 +67,11 @@ class Color(object):
def get_int(self): def get_int(self):
return int(self._a * 255) + (int(self._b * 255) << 8) + \ return int(self._a * 255) + (int(self._b * 255) << 8) + \
(int(self._g * 255) << 16) + (int(self._r * 255) << 24) (int(self._g * 255) << 16) + (int(self._r * 255) << 24)
def get_gdk_color(self): def get_gdk_color(self):
return Gdk.Color(int(self._r * 65535), int(self._g * 65535), return Gdk.Color(int(self._r * 65535), int(self._g * 65535),
int(self._b * 65535)) int(self._b * 65535))
def get_html(self): def get_html(self):
return '#%02x%02x%02x' % (self._r * 255, self._g * 255, self._b * 255) return '#%02x%02x%02x' % (self._r * 255, self._g * 255, self._b * 255)

View File

@ -37,7 +37,7 @@ class ToolbarButton(ToolButton):
self.set_page(page) self.set_page(page)
self.connect('clicked', self.connect('clicked',
lambda widget: self.set_expanded(not self.is_expanded())) lambda widget: self.set_expanded(not self.is_expanded()))
self.connect_after('draw', self.__drawing_cb) self.connect_after('draw', self.__drawing_cb)
self.connect('hierarchy-changed', self.__hierarchy_changed_cb) self.connect('hierarchy-changed', self.__hierarchy_changed_cb)
@ -77,11 +77,11 @@ class ToolbarButton(ToolButton):
def is_in_palette(self): def is_in_palette(self):
return self.page is not None and \ return self.page is not None and \
self.page_widget.get_parent() == self.props.palette._widget self.page_widget.get_parent() == self.props.palette._widget
def is_expanded(self): def is_expanded(self):
return self.page is not None and \ return self.page is not None and \
not self.is_in_palette() not self.is_in_palette()
def popdown(self): def popdown(self):
if self.props.palette is not None: if self.props.palette is not None:
@ -153,12 +153,12 @@ class ToolbarBox(Gtk.VBox):
self._toolbar.connect('remove', self.__remove_cb) self._toolbar.connect('remove', self.__remove_cb)
self._toolbar_widget, self._toolbar_alignment = \ self._toolbar_widget, self._toolbar_alignment = \
_embed_page(Gtk.EventBox(), self._toolbar) _embed_page(Gtk.EventBox(), self._toolbar)
self.pack_start(self._toolbar_widget, True, True, 0) self.pack_start(self._toolbar_widget, True, True, 0)
self.props.padding = padding self.props.padding = padding
self.modify_bg(Gtk.StateType.NORMAL, self.modify_bg(Gtk.StateType.NORMAL,
style.COLOR_TOOLBAR_GREY.get_gdk_color()) style.COLOR_TOOLBAR_GREY.get_gdk_color())
def get_toolbar(self): def get_toolbar(self):
return self._toolbar return self._toolbar
@ -185,7 +185,7 @@ class ToolbarBox(Gtk.VBox):
self._toolbar_alignment.set_padding(0, 0, pad, pad) self._toolbar_alignment.set_padding(0, 0, pad, pad)
padding = GObject.property(type=object, padding = GObject.property(type=object,
getter=get_padding, setter=set_padding) getter=get_padding, setter=set_padding)
def modify_bg(self, state, color): def modify_bg(self, state, color):
if state == Gtk.StateType.NORMAL: if state == Gtk.StateType.NORMAL:
@ -257,7 +257,7 @@ class _ToolbarPalette(PaletteWindow):
return return
box = button.toolbar_box box = button.toolbar_box
_setup_page(button.page_widget, style.COLOR_BLACK.get_gdk_color(), _setup_page(button.page_widget, style.COLOR_BLACK.get_gdk_color(),
box.props.padding) box.props.padding)
PaletteWindow.popup(self, immediate) PaletteWindow.popup(self, immediate)
def __group_popdown_cb(self, group): def __group_popdown_cb(self, group):
@ -280,7 +280,8 @@ class _Box(Gtk.EventBox):
cr.set_source_rgba(*style.COLOR_BUTTON_GREY.get_rgba()) cr.set_source_rgba(*style.COLOR_BUTTON_GREY.get_rgba())
cr.move_to(0, 0) cr.move_to(0, 0)
cr.line_to(button_alloc.x + style.FOCUS_LINE_WIDTH, 0) cr.line_to(button_alloc.x + style.FOCUS_LINE_WIDTH, 0)
cr.move_to(button_alloc.x + button_alloc.width - style.FOCUS_LINE_WIDTH, 0) cr.move_to(
button_alloc.x + button_alloc.width - style.FOCUS_LINE_WIDTH, 0)
cr.line_to(self.get_allocation().width, 0) cr.line_to(self.get_allocation().width, 0)
cr.stroke() cr.stroke()
@ -306,7 +307,7 @@ def _embed_page(page_widget, page):
alignment.show() alignment.show()
page_widget.modify_bg(Gtk.StateType.ACTIVE, page_widget.modify_bg(Gtk.StateType.ACTIVE,
style.COLOR_BUTTON_GREY.get_gdk_color()) style.COLOR_BUTTON_GREY.get_gdk_color())
page_widget.add(alignment) page_widget.add(alignment)
page_widget.show() page_widget.show()

View File

@ -31,7 +31,7 @@ class Toolbox(Gtk.VBox):
__gsignals__ = { __gsignals__ = {
'current-toolbar-changed': (GObject.SignalFlags.RUN_FIRST, 'current-toolbar-changed': (GObject.SignalFlags.RUN_FIRST,
None, ([int])), None, ([int])),
} }
def __init__(self): def __init__(self):

View File

@ -43,8 +43,9 @@ def _add_accelerator(tool_button):
keyval, mask = Gtk.accelerator_parse(tool_button.props.accelerator) keyval, mask = Gtk.accelerator_parse(tool_button.props.accelerator)
# the accelerator needs to be set at the child, so the Gtk.AccelLabel # the accelerator needs to be set at the child, so the Gtk.AccelLabel
# in the palette can pick it up. # in the palette can pick it up.
tool_button.get_child().add_accelerator('clicked', accel_group, keyval, mask, tool_button.get_child(
Gtk.AccelFlags.LOCKED | Gtk.AccelFlags.VISIBLE) ).add_accelerator('clicked', accel_group, keyval, mask,
Gtk.AccelFlags.LOCKED | Gtk.AccelFlags.VISIBLE)
def _hierarchy_changed_cb(tool_button, previous_toplevel): def _hierarchy_changed_cb(tool_button, previous_toplevel):
@ -103,7 +104,7 @@ class ToolButton(Gtk.ToolButton):
return self._tooltip return self._tooltip
tooltip = GObject.property(type=str, setter=set_tooltip, tooltip = GObject.property(type=str, setter=set_tooltip,
getter=get_tooltip) getter=get_tooltip)
def get_hide_tooltip_on_click(self): def get_hide_tooltip_on_click(self):
return self._hide_tooltip_on_click return self._hide_tooltip_on_click
@ -124,7 +125,7 @@ class ToolButton(Gtk.ToolButton):
return self._accelerator return self._accelerator
accelerator = GObject.property(type=str, setter=set_accelerator, accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator) getter=get_accelerator)
def set_icon_name(self, icon_name): def set_icon_name(self, icon_name):
icon = Icon(icon_name=icon_name) icon = Icon(icon_name=icon_name)

View File

@ -239,7 +239,8 @@ class HTray(Gtk.EventBox):
__gproperties__ = { __gproperties__ = {
'align': (int, None, None, 0, 1, ALIGN_TO_START, 'align': (int, None, None, 0, 1, ALIGN_TO_START,
GObject.PARAM_READWRITE | GObject.PARAM_CONSTRUCT_ONLY), GObject.PARAM_READWRITE |
GObject.PARAM_CONSTRUCT_ONLY),
'drag-active': (bool, None, None, False, GObject.PARAM_READWRITE), 'drag-active': (bool, None, None, False, GObject.PARAM_READWRITE),
} }
@ -294,8 +295,9 @@ class HTray(Gtk.EventBox):
if self._drag_active != active: if self._drag_active != active:
self._drag_active = active self._drag_active = active
if self._drag_active: if self._drag_active:
self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL, self._viewport.traybar.modify_bg(
style.COLOR_BLACK.get_gdk_color()) Gtk.StateType.NORMAL,
style.COLOR_BLACK.get_gdk_color())
else: else:
self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL, None) self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL, None)
@ -329,7 +331,7 @@ class VTray(Gtk.EventBox):
__gproperties__ = { __gproperties__ = {
'align': (int, None, None, 0, 1, ALIGN_TO_START, 'align': (int, None, None, 0, 1, ALIGN_TO_START,
GObject.PARAM_READWRITE | GObject.PARAM_CONSTRUCT_ONLY), GObject.PARAM_READWRITE | GObject.PARAM_CONSTRUCT_ONLY),
'drag-active': (bool, None, None, False, GObject.PARAM_READWRITE), 'drag-active': (bool, None, None, False, GObject.PARAM_READWRITE),
} }
@ -384,8 +386,9 @@ class VTray(Gtk.EventBox):
if self._drag_active != active: if self._drag_active != active:
self._drag_active = active self._drag_active = active
if self._drag_active: if self._drag_active:
self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL, self._viewport.traybar.modify_bg(
style.COLOR_BLACK.get_gdk_color()) Gtk.StateType.NORMAL,
style.COLOR_BLACK.get_gdk_color())
else: else:
self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL, None) self._viewport.traybar.modify_bg(Gtk.StateType.NORMAL, None)

View File

@ -46,7 +46,7 @@ class UnfullscreenButton(Gtk.Window):
self.props.accept_focus = False self.props.accept_focus = False
#Setup estimate of width, height # Setup estimate of width, height
valid_, w, h = Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR) valid_, w, h = Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR)
self._width = w self._width = w
self._height = h self._height = h
@ -58,7 +58,7 @@ class UnfullscreenButton(Gtk.Window):
self._button.set_relief(Gtk.ReliefStyle.NONE) self._button.set_relief(Gtk.ReliefStyle.NONE)
self._icon = Icon(icon_name='view-return', self._icon = Icon(icon_name='view-return',
icon_size=Gtk.IconSize.LARGE_TOOLBAR) icon_size=Gtk.IconSize.LARGE_TOOLBAR)
self._icon.show() self._icon.show()
self._button.add(self._icon) self._button.add(self._icon)
@ -162,8 +162,8 @@ class Window(Gtk.Window):
self._unfullscreen_button_timeout_id = None self._unfullscreen_button_timeout_id = None
self._unfullscreen_button_timeout_id = \ self._unfullscreen_button_timeout_id = \
GLib.timeout_add_seconds( \ GLib.timeout_add_seconds(
_UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT, \ _UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT,
self.__unfullscreen_button_timeout_cb) self.__unfullscreen_button_timeout_cb)
def unfullscreen(self): def unfullscreen(self):
@ -259,7 +259,7 @@ class Window(Gtk.Window):
self.tray.props.visible = not self.tray.props.visible self.tray.props.visible = not self.tray.props.visible
return True return True
elif key == 'Escape' and self._is_fullscreen and \ elif key == 'Escape' and self._is_fullscreen and \
self.props.enable_fullscreen_mode: self.props.enable_fullscreen_mode:
self.unfullscreen() self.unfullscreen()
return True return True
return False return False
@ -286,8 +286,8 @@ class Window(Gtk.Window):
self._unfullscreen_button_timeout_id = None self._unfullscreen_button_timeout_id = None
self._unfullscreen_button_timeout_id = \ self._unfullscreen_button_timeout_id = \
GLib.timeout_add_seconds( \ GLib.timeout_add_seconds(
_UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT, \ _UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT,
self.__unfullscreen_button_timeout_cb) self.__unfullscreen_button_timeout_cb)
def __unfullscreen_button_timeout_cb(self): def __unfullscreen_button_timeout_cb(self):
@ -321,5 +321,7 @@ class Window(Gtk.Window):
def get_enable_fullscreen_mode(self): def get_enable_fullscreen_mode(self):
return self._enable_fullscreen_mode return self._enable_fullscreen_mode
enable_fullscreen_mode = GObject.property(type=object, enable_fullscreen_mode = GObject.property(
setter=set_enable_fullscreen_mode, getter=get_enable_fullscreen_mode) type=object,
setter=set_enable_fullscreen_mode,
getter=get_enable_fullscreen_mode)

View File

@ -25,186 +25,186 @@ import logging
from gi.repository import GConf from gi.repository import GConf
colors = [ colors = [
['#B20008', '#FF2B34'], \ ['#B20008', '#FF2B34'],
['#FF2B34', '#B20008'], \ ['#FF2B34', '#B20008'],
['#E6000A', '#FF2B34'], \ ['#E6000A', '#FF2B34'],
['#FF2B34', '#E6000A'], \ ['#FF2B34', '#E6000A'],
['#FFADCE', '#FF2B34'], \ ['#FFADCE', '#FF2B34'],
['#9A5200', '#FF2B34'], \ ['#9A5200', '#FF2B34'],
['#FF2B34', '#9A5200'], \ ['#FF2B34', '#9A5200'],
['#FF8F00', '#FF2B34'], \ ['#FF8F00', '#FF2B34'],
['#FF2B34', '#FF8F00'], \ ['#FF2B34', '#FF8F00'],
['#FFC169', '#FF2B34'], \ ['#FFC169', '#FF2B34'],
['#807500', '#FF2B34'], \ ['#807500', '#FF2B34'],
['#FF2B34', '#807500'], \ ['#FF2B34', '#807500'],
['#BE9E00', '#FF2B34'], \ ['#BE9E00', '#FF2B34'],
['#FF2B34', '#BE9E00'], \ ['#FF2B34', '#BE9E00'],
['#F8E800', '#FF2B34'], \ ['#F8E800', '#FF2B34'],
['#008009', '#FF2B34'], \ ['#008009', '#FF2B34'],
['#FF2B34', '#008009'], \ ['#FF2B34', '#008009'],
['#00B20D', '#FF2B34'], \ ['#00B20D', '#FF2B34'],
['#FF2B34', '#00B20D'], \ ['#FF2B34', '#00B20D'],
['#8BFF7A', '#FF2B34'], \ ['#8BFF7A', '#FF2B34'],
['#00588C', '#FF2B34'], \ ['#00588C', '#FF2B34'],
['#FF2B34', '#00588C'], \ ['#FF2B34', '#00588C'],
['#005FE4', '#FF2B34'], \ ['#005FE4', '#FF2B34'],
['#FF2B34', '#005FE4'], \ ['#FF2B34', '#005FE4'],
['#BCCDFF', '#FF2B34'], \ ['#BCCDFF', '#FF2B34'],
['#5E008C', '#FF2B34'], \ ['#5E008C', '#FF2B34'],
['#FF2B34', '#5E008C'], \ ['#FF2B34', '#5E008C'],
['#7F00BF', '#FF2B34'], \ ['#7F00BF', '#FF2B34'],
['#FF2B34', '#7F00BF'], \ ['#FF2B34', '#7F00BF'],
['#D1A3FF', '#FF2B34'], \ ['#D1A3FF', '#FF2B34'],
['#9A5200', '#FF8F00'], \ ['#9A5200', '#FF8F00'],
['#FF8F00', '#9A5200'], \ ['#FF8F00', '#9A5200'],
['#C97E00', '#FF8F00'], \ ['#C97E00', '#FF8F00'],
['#FF8F00', '#C97E00'], \ ['#FF8F00', '#C97E00'],
['#FFC169', '#FF8F00'], \ ['#FFC169', '#FF8F00'],
['#807500', '#FF8F00'], \ ['#807500', '#FF8F00'],
['#FF8F00', '#807500'], \ ['#FF8F00', '#807500'],
['#BE9E00', '#FF8F00'], \ ['#BE9E00', '#FF8F00'],
['#FF8F00', '#BE9E00'], \ ['#FF8F00', '#BE9E00'],
['#F8E800', '#FF8F00'], \ ['#F8E800', '#FF8F00'],
['#008009', '#FF8F00'], \ ['#008009', '#FF8F00'],
['#FF8F00', '#008009'], \ ['#FF8F00', '#008009'],
['#00B20D', '#FF8F00'], \ ['#00B20D', '#FF8F00'],
['#FF8F00', '#00B20D'], \ ['#FF8F00', '#00B20D'],
['#8BFF7A', '#FF8F00'], \ ['#8BFF7A', '#FF8F00'],
['#00588C', '#FF8F00'], \ ['#00588C', '#FF8F00'],
['#FF8F00', '#00588C'], \ ['#FF8F00', '#00588C'],
['#005FE4', '#FF8F00'], \ ['#005FE4', '#FF8F00'],
['#FF8F00', '#005FE4'], \ ['#FF8F00', '#005FE4'],
['#BCCDFF', '#FF8F00'], \ ['#BCCDFF', '#FF8F00'],
['#5E008C', '#FF8F00'], \ ['#5E008C', '#FF8F00'],
['#FF8F00', '#5E008C'], \ ['#FF8F00', '#5E008C'],
['#A700FF', '#FF8F00'], \ ['#A700FF', '#FF8F00'],
['#FF8F00', '#A700FF'], \ ['#FF8F00', '#A700FF'],
['#D1A3FF', '#FF8F00'], \ ['#D1A3FF', '#FF8F00'],
['#B20008', '#FF8F00'], \ ['#B20008', '#FF8F00'],
['#FF8F00', '#B20008'], \ ['#FF8F00', '#B20008'],
['#FF2B34', '#FF8F00'], \ ['#FF2B34', '#FF8F00'],
['#FF8F00', '#FF2B34'], \ ['#FF8F00', '#FF2B34'],
['#FFADCE', '#FF8F00'], \ ['#FFADCE', '#FF8F00'],
['#807500', '#F8E800'], \ ['#807500', '#F8E800'],
['#F8E800', '#807500'], \ ['#F8E800', '#807500'],
['#BE9E00', '#F8E800'], \ ['#BE9E00', '#F8E800'],
['#F8E800', '#BE9E00'], \ ['#F8E800', '#BE9E00'],
['#FFFA00', '#EDDE00'], \ ['#FFFA00', '#EDDE00'],
['#008009', '#F8E800'], \ ['#008009', '#F8E800'],
['#F8E800', '#008009'], \ ['#F8E800', '#008009'],
['#00EA11', '#F8E800'], \ ['#00EA11', '#F8E800'],
['#F8E800', '#00EA11'], \ ['#F8E800', '#00EA11'],
['#8BFF7A', '#F8E800'], \ ['#8BFF7A', '#F8E800'],
['#00588C', '#F8E800'], \ ['#00588C', '#F8E800'],
['#F8E800', '#00588C'], \ ['#F8E800', '#00588C'],
['#00A0FF', '#F8E800'], \ ['#00A0FF', '#F8E800'],
['#F8E800', '#00A0FF'], \ ['#F8E800', '#00A0FF'],
['#BCCEFF', '#F8E800'], \ ['#BCCEFF', '#F8E800'],
['#5E008C', '#F8E800'], \ ['#5E008C', '#F8E800'],
['#F8E800', '#5E008C'], \ ['#F8E800', '#5E008C'],
['#AC32FF', '#F8E800'], \ ['#AC32FF', '#F8E800'],
['#F8E800', '#AC32FF'], \ ['#F8E800', '#AC32FF'],
['#D1A3FF', '#F8E800'], \ ['#D1A3FF', '#F8E800'],
['#B20008', '#F8E800'], \ ['#B20008', '#F8E800'],
['#F8E800', '#B20008'], \ ['#F8E800', '#B20008'],
['#FF2B34', '#F8E800'], \ ['#FF2B34', '#F8E800'],
['#F8E800', '#FF2B34'], \ ['#F8E800', '#FF2B34'],
['#FFADCE', '#F8E800'], \ ['#FFADCE', '#F8E800'],
['#9A5200', '#F8E800'], \ ['#9A5200', '#F8E800'],
['#F8E800', '#9A5200'], \ ['#F8E800', '#9A5200'],
['#FF8F00', '#F8E800'], \ ['#FF8F00', '#F8E800'],
['#F8E800', '#FF8F00'], \ ['#F8E800', '#FF8F00'],
['#FFC169', '#F8E800'], \ ['#FFC169', '#F8E800'],
['#008009', '#00EA11'], \ ['#008009', '#00EA11'],
['#00EA11', '#008009'], \ ['#00EA11', '#008009'],
['#00B20D', '#00EA11'], \ ['#00B20D', '#00EA11'],
['#00EA11', '#00B20D'], \ ['#00EA11', '#00B20D'],
['#8BFF7A', '#00EA11'], \ ['#8BFF7A', '#00EA11'],
['#00588C', '#00EA11'], \ ['#00588C', '#00EA11'],
['#00EA11', '#00588C'], \ ['#00EA11', '#00588C'],
['#005FE4', '#00EA11'], \ ['#005FE4', '#00EA11'],
['#00EA11', '#005FE4'], \ ['#00EA11', '#005FE4'],
['#BCCDFF', '#00EA11'], \ ['#BCCDFF', '#00EA11'],
['#5E008C', '#00EA11'], \ ['#5E008C', '#00EA11'],
['#00EA11', '#5E008C'], \ ['#00EA11', '#5E008C'],
['#7F00BF', '#00EA11'], \ ['#7F00BF', '#00EA11'],
['#00EA11', '#7F00BF'], \ ['#00EA11', '#7F00BF'],
['#D1A3FF', '#00EA11'], \ ['#D1A3FF', '#00EA11'],
['#B20008', '#00EA11'], \ ['#B20008', '#00EA11'],
['#00EA11', '#B20008'], \ ['#00EA11', '#B20008'],
['#FF2B34', '#00EA11'], \ ['#FF2B34', '#00EA11'],
['#00EA11', '#FF2B34'], \ ['#00EA11', '#FF2B34'],
['#FFADCE', '#00EA11'], \ ['#FFADCE', '#00EA11'],
['#9A5200', '#00EA11'], \ ['#9A5200', '#00EA11'],
['#00EA11', '#9A5200'], \ ['#00EA11', '#9A5200'],
['#FF8F00', '#00EA11'], \ ['#FF8F00', '#00EA11'],
['#00EA11', '#FF8F00'], \ ['#00EA11', '#FF8F00'],
['#FFC169', '#00EA11'], \ ['#FFC169', '#00EA11'],
['#807500', '#00EA11'], \ ['#807500', '#00EA11'],
['#00EA11', '#807500'], \ ['#00EA11', '#807500'],
['#BE9E00', '#00EA11'], \ ['#BE9E00', '#00EA11'],
['#00EA11', '#BE9E00'], \ ['#00EA11', '#BE9E00'],
['#F8E800', '#00EA11'], \ ['#F8E800', '#00EA11'],
['#00588C', '#00A0FF'], \ ['#00588C', '#00A0FF'],
['#00A0FF', '#00588C'], \ ['#00A0FF', '#00588C'],
['#005FE4', '#00A0FF'], \ ['#005FE4', '#00A0FF'],
['#00A0FF', '#005FE4'], \ ['#00A0FF', '#005FE4'],
['#BCCDFF', '#00A0FF'], \ ['#BCCDFF', '#00A0FF'],
['#5E008C', '#00A0FF'], \ ['#5E008C', '#00A0FF'],
['#00A0FF', '#5E008C'], \ ['#00A0FF', '#5E008C'],
['#9900E6', '#00A0FF'], \ ['#9900E6', '#00A0FF'],
['#00A0FF', '#9900E6'], \ ['#00A0FF', '#9900E6'],
['#D1A3FF', '#00A0FF'], \ ['#D1A3FF', '#00A0FF'],
['#B20008', '#00A0FF'], \ ['#B20008', '#00A0FF'],
['#00A0FF', '#B20008'], \ ['#00A0FF', '#B20008'],
['#FF2B34', '#00A0FF'], \ ['#FF2B34', '#00A0FF'],
['#00A0FF', '#FF2B34'], \ ['#00A0FF', '#FF2B34'],
['#FFADCE', '#00A0FF'], \ ['#FFADCE', '#00A0FF'],
['#9A5200', '#00A0FF'], \ ['#9A5200', '#00A0FF'],
['#00A0FF', '#9A5200'], \ ['#00A0FF', '#9A5200'],
['#FF8F00', '#00A0FF'], \ ['#FF8F00', '#00A0FF'],
['#00A0FF', '#FF8F00'], \ ['#00A0FF', '#FF8F00'],
['#FFC169', '#00A0FF'], \ ['#FFC169', '#00A0FF'],
['#807500', '#00A0FF'], \ ['#807500', '#00A0FF'],
['#00A0FF', '#807500'], \ ['#00A0FF', '#807500'],
['#BE9E00', '#00A0FF'], \ ['#BE9E00', '#00A0FF'],
['#00A0FF', '#BE9E00'], \ ['#00A0FF', '#BE9E00'],
['#F8E800', '#00A0FF'], \ ['#F8E800', '#00A0FF'],
['#008009', '#00A0FF'], \ ['#008009', '#00A0FF'],
['#00A0FF', '#008009'], \ ['#00A0FF', '#008009'],
['#00B20D', '#00A0FF'], \ ['#00B20D', '#00A0FF'],
['#00A0FF', '#00B20D'], \ ['#00A0FF', '#00B20D'],
['#8BFF7A', '#00A0FF'], \ ['#8BFF7A', '#00A0FF'],
['#5E008C', '#AC32FF'], \ ['#5E008C', '#AC32FF'],
['#AC32FF', '#5E008C'], \ ['#AC32FF', '#5E008C'],
['#7F00BF', '#AC32FF'], \ ['#7F00BF', '#AC32FF'],
['#AC32FF', '#7F00BF'], \ ['#AC32FF', '#7F00BF'],
['#D1A3FF', '#AC32FF'], \ ['#D1A3FF', '#AC32FF'],
['#B20008', '#AC32FF'], \ ['#B20008', '#AC32FF'],
['#AC32FF', '#B20008'], \ ['#AC32FF', '#B20008'],
['#FF2B34', '#AC32FF'], \ ['#FF2B34', '#AC32FF'],
['#AC32FF', '#FF2B34'], \ ['#AC32FF', '#FF2B34'],
['#FFADCE', '#AC32FF'], \ ['#FFADCE', '#AC32FF'],
['#9A5200', '#AC32FF'], \ ['#9A5200', '#AC32FF'],
['#AC32FF', '#9A5200'], \ ['#AC32FF', '#9A5200'],
['#FF8F00', '#AC32FF'], \ ['#FF8F00', '#AC32FF'],
['#AC32FF', '#FF8F00'], \ ['#AC32FF', '#FF8F00'],
['#FFC169', '#AC32FF'], \ ['#FFC169', '#AC32FF'],
['#807500', '#AC32FF'], \ ['#807500', '#AC32FF'],
['#AC32FF', '#807500'], \ ['#AC32FF', '#807500'],
['#BE9E00', '#AC32FF'], \ ['#BE9E00', '#AC32FF'],
['#AC32FF', '#BE9E00'], \ ['#AC32FF', '#BE9E00'],
['#F8E800', '#AC32FF'], \ ['#F8E800', '#AC32FF'],
['#008009', '#AC32FF'], \ ['#008009', '#AC32FF'],
['#AC32FF', '#008009'], \ ['#AC32FF', '#008009'],
['#00B20D', '#AC32FF'], \ ['#00B20D', '#AC32FF'],
['#AC32FF', '#00B20D'], \ ['#AC32FF', '#00B20D'],
['#8BFF7A', '#AC32FF'], \ ['#8BFF7A', '#AC32FF'],
['#00588C', '#AC32FF'], \ ['#00588C', '#AC32FF'],
['#AC32FF', '#00588C'], \ ['#AC32FF', '#00588C'],
['#005FE4', '#AC32FF'], \ ['#005FE4', '#AC32FF'],
['#AC32FF', '#005FE4'], \ ['#AC32FF', '#005FE4'],
['#BCCDFF', '#AC32FF'], \ ['#BCCDFF', '#AC32FF'],
] ]