Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--data/icons/module-frame.svg31
-rw-r--r--src/controlpanel/model/frame.py24
-rw-r--r--src/controlpanel/view/frame.py242
3 files changed, 136 insertions, 161 deletions
diff --git a/data/icons/module-frame.svg b/data/icons/module-frame.svg
index caf4f6a..11ccee4 100644
--- a/data/icons/module-frame.svg
+++ b/data/icons/module-frame.svg
@@ -1,22 +1,13 @@
-<?xml version="1.0" ?>
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN'
- 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
+<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
<!ENTITY stroke_color "#666666">
<!ENTITY fill_color "#ffffff">
- ]>
-<svg enable-background="new 0 0 55 55" height="55px" id="Layer_1"
- version="1.1" viewBox="0 0 55 55" width="55px" x="0px"
- xml:space="preserve" xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
- <g display="block" id="module-display">
- <g display="inline">
- <g>
- <path d="M46.824,8.027H8.176c-3.581,0-6.51,2.929-6.51,6.509v25.926c0,
- 3.58,2.929,6.511,6.51,6.511h38.648 c3.579,0,6.51-2.931,
- 6.51-6.511V14.537C53.334,10.957,50.403,
- 8.027,46.824,8.027z M45.978,
- 39.962H9.282V11.575h36.695V39.962z" fill="&fill_color;"/>
- </g>
- </g>
- </g>
-</svg>
+]><svg enable-background="new 0 0 55 55" height="55px" id="Layer_1" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="module-frame">
+ <g display="inline">
+ <g>
+ <path d="M2.934,8.664v38.209h49.391V8.664H2.934z M49.115,43.833H6.144V11.704h42.971V43.833z" fill="&fill_color;"/>
+ </g>
+ </g>
+ <g display="inline" id="Left_Pointer_1_">
+ <path d="M12.533,16.981l-2.359-2.359h1.597c0.2,0,0.401-0.077,0.555-0.23c0.307-0.306,0.307-0.804,0-1.11 c-0.153-0.154-0.355-0.23-0.555-0.231H7.49l0.001,4.28c0,0.201,0.076,0.401,0.23,0.555c0.306,0.307,0.804,0.307,1.111,0 c0.154-0.153,0.229-0.354,0.229-0.555v-1.597l2.36,2.358c0.142,0.142,0.338,0.23,0.556,0.23c0.434,0,0.785-0.353,0.785-0.786 C12.763,17.319,12.674,17.123,12.533,16.981z" fill="&fill_color;"/>
+ </g>
+</g></svg>
diff --git a/src/controlpanel/model/frame.py b/src/controlpanel/model/frame.py
index d53359b..0e19703 100644
--- a/src/controlpanel/model/frame.py
+++ b/src/controlpanel/model/frame.py
@@ -19,15 +19,15 @@ from gettext import gettext as _
from sugar import profile
-def get_hot_corners_delay():
+def get_corner_delay():
pro = profile.get_profile()
return pro.hot_corners_delay
-def print_hot_corners_delay():
- print get_hot_corners_delay()
+def print_corner_delay():
+ print get_corner_delay()
-def set_hot_corners_delay(delay):
- """Set a delay for the revealing of the frame using hot corners.
+def set_corner_delay(delay):
+ """Set a delay for the activation of the frame using hot corners.
instantaneous: 0 (0 milliseconds)
delay: 100 (100 milliseconds)
never: 1000 (disable activation)
@@ -35,21 +35,21 @@ def set_hot_corners_delay(delay):
try:
int(delay)
except ValueError:
- raise ValueError(_("Value must be an int."))
+ raise ValueError(_("Value must be an integer."))
pro = profile.get_profile()
pro.hot_corners_delay = int(delay)
pro.save()
return 1
-def get_warm_edges_delay():
+def get_edge_delay():
pro = profile.get_profile()
return pro.warm_edges_delay
-def print_warm_edges_delay():
- print get_warm_edges_delay()
+def print_edge_delay():
+ print get_edge_delay()
-def set_warm_edges_delay(delay):
- """Set a delay for the revealing of the frame using warm edges.
+def set_edge_delay(delay):
+ """Set a delay for the activation of the frame using warm edges.
instantaneous: 0 (0 milliseconds)
delay: 100 (100 milliseconds)
never: 1000 (disable activation)
@@ -57,7 +57,7 @@ def set_warm_edges_delay(delay):
try:
int(delay)
except ValueError:
- raise ValueError(_("Value must be an int."))
+ raise ValueError(_("Value must be an integer."))
pro = profile.get_profile()
pro.warm_edges_delay = int(delay)
pro.save()
diff --git a/src/controlpanel/view/frame.py b/src/controlpanel/view/frame.py
index 63bbb39..f085b0d 100644
--- a/src/controlpanel/view/frame.py
+++ b/src/controlpanel/view/frame.py
@@ -29,51 +29,55 @@ TITLE = _('Frame')
_never = _('never')
_instantaneous = _('instantaneous')
-_delay_label = _('Delay in milliseconds:')
+_seconds_label = _('%s seconds')
+_MAX_DELAY = 1000.0
class Frame(SectionView):
def __init__(self, model, alerts):
SectionView.__init__(self)
self._model = model
- self._hot_delay_sid = 0
- self._hot_delay_is_valid = True
- self._hot_delay_change_handler = None
- self._warm_delay_sid = 0
- self._warm_delay_is_valid = True
- self._warm_delay_change_handler = None
+ self._corner_delay_sid = 0
+ self._corner_delay_is_valid = True
+ self._corner_delay_change_handler = None
+ self._edge_delay_sid = 0
+ self._edge_delay_is_valid = True
+ self._edge_delay_change_handler = None
self.restart_alerts = alerts
self.set_border_width(style.DEFAULT_SPACING * 2)
self.set_spacing(style.DEFAULT_SPACING)
self._group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
- self._hot_delay_slider = None
- self._hot_delay_alert = None
- self._setup_hot_corners()
+ separator = gtk.HSeparator()
+ self.pack_start(separator, expand=False)
+ separator.show()
- self._warm_delay_slider = None
- self._warm_delay_alert = None
- self._setup_warm_edges()
+ label_activation = gtk.Label(_('Activation Delay'))
+ label_activation.set_alignment(0, 0)
+ self.pack_start(label_activation, expand=False)
+ label_activation.show()
- self.setup()
+ self._box_sliders = gtk.VBox()
+ self._box_sliders.set_border_width(style.DEFAULT_SPACING * 2)
+ self._box_sliders.set_spacing(style.DEFAULT_SPACING)
+
+ self._corner_delay_slider = None
+ self._corner_delay_alert = None
+ self._setup_corner()
- def _setup_hot_corners(self):
- separator_hot = gtk.HSeparator()
- self.pack_start(separator_hot, expand=False)
- separator_hot.show()
+ self._edge_delay_slider = None
+ self._edge_delay_alert = None
+ self._setup_edge()
- label_hot_corners = gtk.Label(_('Hot Corners'))
- label_hot_corners.set_alignment(0, 0)
- self.pack_start(label_hot_corners, expand=False)
- label_hot_corners.show()
+ self.pack_start(self._box_sliders, expand=False)
+ self._box_sliders.show()
- box_hot_corners = gtk.VBox()
- box_hot_corners.set_border_width(style.DEFAULT_SPACING * 2)
- box_hot_corners.set_spacing(style.DEFAULT_SPACING)
+ self.setup()
+ def _setup_corner(self):
box_delay = gtk.HBox(spacing=style.DEFAULT_SPACING)
- label_delay = gtk.Label(_delay_label)
+ label_delay = gtk.Label(_('Corner'))
label_delay.set_alignment(1, 0.75)
label_delay.modify_fg(gtk.STATE_NORMAL,
style.COLOR_SELECTION_GREY.get_gdk_color())
@@ -81,50 +85,34 @@ class Frame(SectionView):
self._group.add_widget(label_delay)
label_delay.show()
- adj = gtk.Adjustment(value=100, lower=0, upper=1000, step_incr=100,
- page_incr=100, page_size=0)
- self._hot_delay_slider = gtk.HScale(adj)
- self._hot_delay_slider.set_digits(0)
- self._hot_delay_slider.connect('format-value',
- self.__hot_delay_format_cb)
- box_delay.pack_start(self._hot_delay_slider)
- self._hot_delay_slider.show()
- box_hot_corners.pack_start(box_delay, expand=False)
+ adj = gtk.Adjustment(value=100, lower=0, upper=_MAX_DELAY,
+ step_incr=100, page_incr=100, page_size=0)
+ self._corner_delay_slider = gtk.HScale(adj)
+ self._corner_delay_slider.set_digits(0)
+ self._corner_delay_slider.connect('format-value',
+ self.__corner_delay_format_cb)
+ box_delay.pack_start(self._corner_delay_slider)
+ self._corner_delay_slider.show()
+ self._box_sliders.pack_start(box_delay, expand=False)
box_delay.show()
- self._hot_delay_alert = InlineAlert()
+ self._corner_delay_alert = InlineAlert()
label_delay_error = gtk.Label()
self._group.add_widget(label_delay_error)
delay_alert_box = gtk.HBox(spacing=style.DEFAULT_SPACING)
delay_alert_box.pack_start(label_delay_error, expand=False)
label_delay_error.show()
- delay_alert_box.pack_start(self._hot_delay_alert, expand=False)
- box_hot_corners.pack_start(delay_alert_box, expand=False)
+ delay_alert_box.pack_start(self._corner_delay_alert, expand=False)
+ self._box_sliders.pack_start(delay_alert_box, expand=False)
delay_alert_box.show()
- if 'hot_delay' in self.restart_alerts:
- self._hot_delay_alert.props.msg = self.restart_msg
- self._hot_delay_alert.show()
+ if 'corner_delay' in self.restart_alerts:
+ self._corner_delay_alert.props.msg = self.restart_msg
+ self._corner_delay_alert.show()
- self.pack_start(box_hot_corners, expand=False)
- box_hot_corners.show()
-
- def _setup_warm_edges(self):
- separator_warm = gtk.HSeparator()
- self.pack_start(separator_warm, expand=False)
- separator_warm.show()
-
- label_warm_edges = gtk.Label(_('Warm Edges'))
- label_warm_edges.set_alignment(0, 0)
- self.pack_start(label_warm_edges, expand=False)
- label_warm_edges.show()
-
- box_warm_edges = gtk.VBox()
- box_warm_edges.set_border_width(style.DEFAULT_SPACING * 2)
- box_warm_edges.set_spacing(style.DEFAULT_SPACING)
-
+ def _setup_edge(self):
box_delay = gtk.HBox(spacing=style.DEFAULT_SPACING)
- label_delay = gtk.Label(_delay_label)
+ label_delay = gtk.Label(_('Edge'))
label_delay.set_alignment(1, 0.75)
label_delay.modify_fg(gtk.STATE_NORMAL,
style.COLOR_SELECTION_GREY.get_gdk_color())
@@ -132,125 +120,121 @@ class Frame(SectionView):
self._group.add_widget(label_delay)
label_delay.show()
- adj = gtk.Adjustment(value=100, lower=0, upper=1000, step_incr=100,
- page_incr=100, page_size=0)
- self._warm_delay_slider = gtk.HScale(adj)
- self._warm_delay_slider.set_digits(0)
- self._warm_delay_slider.connect('format-value',
- self.__warm_delay_format_cb)
- box_delay.pack_start(self._warm_delay_slider)
- self._warm_delay_slider.show()
- box_warm_edges.pack_start(box_delay, expand=False)
+ adj = gtk.Adjustment(value=100, lower=0, upper=_MAX_DELAY,
+ step_incr=100, page_incr=100, page_size=0)
+ self._edge_delay_slider = gtk.HScale(adj)
+ self._edge_delay_slider.set_digits(0)
+ self._edge_delay_slider.connect('format-value',
+ self.__edge_delay_format_cb)
+ box_delay.pack_start(self._edge_delay_slider)
+ self._edge_delay_slider.show()
+ self._box_sliders.pack_start(box_delay, expand=False)
box_delay.show()
- self._warm_delay_alert = InlineAlert()
+ self._edge_delay_alert = InlineAlert()
label_delay_error = gtk.Label()
self._group.add_widget(label_delay_error)
delay_alert_box = gtk.HBox(spacing=style.DEFAULT_SPACING)
delay_alert_box.pack_start(label_delay_error, expand=False)
label_delay_error.show()
- delay_alert_box.pack_start(self._warm_delay_alert, expand=False)
- box_warm_edges.pack_start(delay_alert_box, expand=False)
+ delay_alert_box.pack_start(self._edge_delay_alert, expand=False)
+ self._box_sliders.pack_start(delay_alert_box, expand=False)
delay_alert_box.show()
- if 'warm_delay' in self.restart_alerts:
- self._warm_delay_alert.props.msg = self.restart_msg
- self._warm_delay_alert.show()
-
- self.pack_start(box_warm_edges, expand=False)
- box_warm_edges.show()
+ if 'edge_delay' in self.restart_alerts:
+ self._edge_delay_alert.props.msg = self.restart_msg
+ self._edge_delay_alert.show()
def setup(self):
- self._hot_delay_slider.set_value(self._model.get_hot_corners_delay())
- self._warm_delay_slider.set_value(self._model.get_warm_edges_delay())
- self._hot_delay_is_valid = True
- self._warm_delay_is_valid = True
+ self._corner_delay_slider.set_value(self._model.get_corner_delay())
+ self._edge_delay_slider.set_value(self._model.get_edge_delay())
+ self._corner_delay_is_valid = True
+ self._edge_delay_is_valid = True
self.needs_restart = False
- self._hot_delay_change_handler = self._hot_delay_slider.connect( \
- 'value-changed', self.__hot_delay_changed_cb)
- self._warm_delay_change_handler = self._warm_delay_slider.connect( \
- 'value-changed', self.__warm_delay_changed_cb)
+ self._corner_delay_change_handler = self._corner_delay_slider.connect( \
+ 'value-changed', self.__corner_delay_changed_cb)
+ self._edge_delay_change_handler = self._edge_delay_slider.connect( \
+ 'value-changed', self.__edge_delay_changed_cb)
def undo(self):
- self._hot_delay_slider.disconnect(self._hot_delay_change_handler)
- self._warm_delay_slider.disconnect(self._warm_delay_change_handler)
+ self._corner_delay_slider.disconnect(self._corner_delay_change_handler)
+ self._edge_delay_slider.disconnect(self._edge_delay_change_handler)
self._model.undo()
- self._hot_delay_alert.hide()
- self._warm_delay_alert.hide()
-
- def __hot_delay_changed_cb(self, scale, data=None):
- if self._hot_delay_sid:
- gobject.source_remove(self._hot_delay_sid)
- self._hot_delay_sid = gobject.timeout_add(self._APPLY_TIMEOUT,
- self.__hot_delay_timeout_cb,
- scale)
+ self._corner_delay_alert.hide()
+ self._edge_delay_alert.hide()
+
+ def __corner_delay_changed_cb(self, scale, data=None):
+ if self._corner_delay_sid:
+ gobject.source_remove(self._corner_delay_sid)
+ self._corner_delay_sid = gobject.timeout_add( \
+ self._APPLY_TIMEOUT, self.__corner_delay_timeout_cb, scale)
- def __hot_delay_timeout_cb(self, scale):
- self._hot_delay_sid = 0
- if scale.get_value() == self._model.get_hot_corners_delay():
+ def __corner_delay_timeout_cb(self, scale):
+ self._corner_delay_sid = 0
+ if scale.get_value() == self._model.get_corner_delay():
return
try:
- self._model.set_hot_corners_delay(scale.get_value())
+ self._model.set_corner_delay(scale.get_value())
except ValueError, detail:
- self._hot_delay_alert.props.msg = detail
- self._hot_delay_is_valid = False
+ self._corner_delay_alert.props.msg = detail
+ self._corner_delay_is_valid = False
self.needs_restart = False
else:
- self._hot_delay_alert.props.msg = self.restart_msg
- self._hot_delay_is_valid = True
+ self._corner_delay_alert.props.msg = self.restart_msg
+ self._corner_delay_is_valid = True
self.needs_restart = True
- self.restart_alerts.append('hot_delay')
+ self.restart_alerts.append('corner_delay')
- if self._hot_delay_is_valid:
+ if self._corner_delay_is_valid:
self.props.is_valid = True
else:
self.props.is_valid = False
- self._hot_delay_alert.show()
+ self._corner_delay_alert.show()
return False
- def __hot_delay_format_cb(self, scale, value):
- if value == 1000.0:
+ def __corner_delay_format_cb(self, scale, value):
+ if value == _MAX_DELAY:
return _never
elif value == 0.0:
return _instantaneous
else:
- return '%s ms' % value
+ return _seconds_label % (value / _MAX_DELAY)
- def __warm_delay_changed_cb(self, scale, data=None):
- if self._warm_delay_sid:
- gobject.source_remove(self._warm_delay_sid)
- self._warm_delay_sid = gobject.timeout_add( \
- self._APPLY_TIMEOUT, self.__warm_delay_timeout_cb, scale)
+ def __edge_delay_changed_cb(self, scale, data=None):
+ if self._edge_delay_sid:
+ gobject.source_remove(self._edge_delay_sid)
+ self._edge_delay_sid = gobject.timeout_add( \
+ self._APPLY_TIMEOUT, self.__edge_delay_timeout_cb, scale)
- def __warm_delay_timeout_cb(self, scale):
- self._warm_delay_sid = 0
- if scale.get_value() == self._model.get_warm_edges_delay():
+ def __edge_delay_timeout_cb(self, scale):
+ self._edge_delay_sid = 0
+ if scale.get_value() == self._model.get_edge_delay():
return
try:
- self._model.set_warm_edges_delay(scale.get_value())
+ self._model.set_edge_delay(scale.get_value())
except ValueError, detail:
- self._warm_delay_alert.props.msg = detail
- self._warm_delay_is_valid = False
+ self._edge_delay_alert.props.msg = detail
+ self._edge_delay_is_valid = False
self.needs_restart = False
else:
- self._warm_delay_alert.props.msg = self.restart_msg
- self._warm_delay_is_valid = True
+ self._edge_delay_alert.props.msg = self.restart_msg
+ self._edge_delay_is_valid = True
self.needs_restart = True
- self.restart_alerts.append('warm_delay')
+ self.restart_alerts.append('edge_delay')
- if self._warm_delay_is_valid:
+ if self._edge_delay_is_valid:
self.props.is_valid = True
else:
self.props.is_valid = False
- self._warm_delay_alert.show()
+ self._edge_delay_alert.show()
return False
- def __warm_delay_format_cb(self, scale, value):
- if value == 1000.0:
+ def __edge_delay_format_cb(self, scale, value):
+ if value == _MAX_DELAY:
return _never
elif value == 0.0:
return _instantaneous
else:
- return '%s ms' % value
+ return _seconds_label % (value / _MAX_DELAY)