diff options
author | Walter Bender <walter@sugarlabs.org> | 2014-06-26 22:25:43 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2014-06-26 22:25:43 (GMT) |
commit | c51f9a9d1b5a6516a2de45ed0c1d1cb7e489e395 (patch) | |
tree | 6d9d5d592626a875fd8ba0c9b10c0b801ee7cfd2 | |
parent | 8aa5055f0ce7a48b140b7cfdfa80b6b745ee9934 (diff) |
replace combo with palette
-rw-r--r-- | GNUChessActivity.py | 286 | ||||
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | icons/timer-0.svg | 192 | ||||
-rw-r--r-- | icons/timer-1.svg | 123 | ||||
-rw-r--r-- | icons/timer-2.svg | 123 | ||||
-rw-r--r-- | icons/timer-3.svg | 123 |
6 files changed, 673 insertions, 175 deletions
diff --git a/GNUChessActivity.py b/GNUChessActivity.py index e0bc23e..38ead14 100644 --- a/GNUChessActivity.py +++ b/GNUChessActivity.py @@ -14,20 +14,22 @@ from gi.repository import Gtk, Gdk, GObject from sugar3.activity import activity -from sugar3 import profile from sugar3.graphics.toolbarbox import ToolbarBox from sugar3.activity.widgets import ActivityToolbarButton from sugar3.activity.widgets import StopButton from sugar3.graphics.toolbarbox import ToolbarButton +from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.objectchooser import ObjectChooser -from sugar3.datastore import datastore -from sugar3 import mime +from sugar3.graphics.menuitem import MenuItem from sugar3.graphics.alert import ConfirmationAlert, NotifyAlert from sugar3.graphics.icon import Icon from sugar3.graphics.xocolor import XoColor +from sugar3.datastore import datastore +from sugar3 import mime +from sugar3 import profile from toolbar_utils import button_factory, label_factory, separator_factory, \ - radio_factory, entry_factory, combo_factory + radio_factory, entry_factory from utils import json_load, json_dump, get_hardware, \ pixbuf_to_base64, base64_to_pixbuf @@ -51,11 +53,17 @@ SERVICE = 'org.sugarlabs.GNUChessActivity' IFACE = SERVICE PATH = '/org/augarlabs/GNUChessActivity' +PIECES = {'pawn': {'white': _('White Pawn'), 'black': _('Black Pawn')}, + 'rook': {'white': _('White Rook'), 'black': _('Black Rook')}, + 'knight': {'white': _('White Knight'), 'black': _('Black Knight')}, + 'bishop': {'white': _('White Bishop'), 'black': _('Black Bishop')}, + 'queen': {'white': _('White Queen'), 'black': _('Black Queen')}, + 'king': {'white': _('White King'), 'black': _('Black King')}} + + class GNUChessActivity(activity.Activity): ''' Gnuchess interface from Sugar ''' - # FIXME: Disable most buttons when joiner - def __init__(self, handle): ''' Initialize the toolbars and the gnuchess ''' try: @@ -84,8 +92,7 @@ class GNUChessActivity(activity.Activity): # Create a canvas canvas = Gtk.DrawingArea() - canvas.set_size_request(Gdk.Screen.width(), \ - Gdk.Screen.height()) + canvas.set_size_request(Gdk.Screen.width(), Gdk.Screen.height()) self.set_canvas(canvas) canvas.show() self.show_all() @@ -97,13 +104,16 @@ class GNUChessActivity(activity.Activity): path=activity.get_bundle_path(), colors=self.colors) - if self.shared_activity: # We're joining if not self.get_shared(): xocolors = XoColor(profile.get_color().to_string()) share_icon = Icon(icon_name='zoom-neighborhood', xo_color=xocolors) + + def _alert_cancel_cb(self, alert, response_id): + self.remove_alert(alert) + self._joined_alert = NotifyAlert() self._joined_alert.props.icon = share_icon self._joined_alert.props.title = _('Please wait') @@ -118,6 +128,7 @@ class GNUChessActivity(activity.Activity): self.stopwatch_running = False self.time_interval = None + self.timer_panel_visible = False if self.game_data is not None: # 'saved_game' in self.metadata: self._restore() @@ -125,9 +136,6 @@ class GNUChessActivity(activity.Activity): self._gnuchess.new_game() self._restoring = False - def _alert_cancel_cb(self, alert, response_id): - self.remove_alert(alert) - def restore_cursor(self): ''' No longer thinking, so restore standard cursor. ''' self.get_window().set_cursor(self.old_cursor) @@ -307,26 +315,13 @@ class GNUChessActivity(activity.Activity): separator_factory(self.adjust_toolbar, False, True) - self.time_list = [_('Disabled'), - #TRANS: Lightning chess 30 seconds between moves - _('Lightning: %d seconds') % (30), - #TRANS: Blitz chess 3 minutes between moves - _('Blitz: %d minutes') % (3), - #TRANS: Tournament chess 10 minutes between moves - _('Tournament: %d minutes') % (10)] - self.timer = Gtk.ComboBoxText() - for t in self.time_list: - self.timer.append_text(t) - self.timer.set_tooltip_text(_('Timer')) - self.timer.set_active(0) - self.timer.connect("changed", self.set_timer_cb) - - toolitem = Gtk.ToolItem() - toolitem.add(self.timer) - self.adjust_toolbar.insert(toolitem, -1) - toolitem.show() - self.timer.show() - self.timer.set_sensitive(True) + self.timer_button = ToolButton('timer-0') + self.timer_button.set_tooltip(_('Timer')) + self.timer_button.connect('clicked', self._timer_button_cb) + self.toolbar.insert(self.timer_button, -1) + self._setup_timer_palette() + self.timer_button.show() + self.timer_button.set_sensitive(True) self.robot_button.set_active(True) @@ -355,119 +350,31 @@ class GNUChessActivity(activity.Activity): toolbox.toolbar.insert(stop_button, -1) stop_button.show() - button_factory('white-pawn', - self.custom_toolbar, - self._reskin_cb, - cb_arg='white_pawn', - tooltip=_('White Pawn')) - - button_factory('black-pawn', - self.custom_toolbar, - self._reskin_cb, - cb_arg='black_pawn', - tooltip=_('Black Pawn')) - - button_factory('white-rook', - self.custom_toolbar, - self._reskin_cb, - cb_arg='white_rook', - tooltip=_('White Rook')) - - button_factory('black-rook', - self.custom_toolbar, - self._reskin_cb, - cb_arg='black_rook', - tooltip=_('Black Rook')) - - button_factory('white-knight', - self.custom_toolbar, - self._reskin_cb, - cb_arg='white_knight', - tooltip=_('White Knight')) - - button_factory('black-knight', - self.custom_toolbar, - self._reskin_cb, - cb_arg='black_knight', - tooltip=_('Black Knight')) - - button_factory('white-bishop', - self.custom_toolbar, - self._reskin_cb, - cb_arg='white_bishop', - tooltip=_('White Bishop')) - - button_factory('black-bishop', - self.custom_toolbar, - self._reskin_cb, - cb_arg='black_bishop', - tooltip=_('Black Bishop')) - - button_factory('white-queen', - self.custom_toolbar, - self._reskin_cb, - cb_arg='white_queen', - tooltip=_('White Queen')) - - button_factory('black-queen', - self.custom_toolbar, - self._reskin_cb, - cb_arg='black_queen', - tooltip=_('Black Queen')) - - button_factory('white-king', - self.custom_toolbar, - self._reskin_cb, - cb_arg='white_king', - tooltip=_('White King')) - - button_factory('black-king', - self.custom_toolbar, - self._reskin_cb, - cb_arg='black_king', - tooltip=_('Black King')) + for piece in PIECES.keys(): + for color in ['white', 'black']: + button_factory('%s-%s' % (color, piece), + self.custom_toolbar, + self._reskin_cb, + cb_arg='%s_%s' % (color, piece), + tooltip=PIECES[piece][color]) def do_default_skin_cb(self, button=None): - self._gnuchess.reskin_from_file('black_king', - '%s/icons/black-king.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('black_queen', - '%s/icons/black-queen.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('black_bishop', - '%s/icons/black-bishop.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('black_knight', - '%s/icons/black-knight.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('black_rook', - '%s/icons/black-rook.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('black_pawn', - '%s/icons/black-pawn.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('white_king', - '%s/icons/white-king.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('white_queen', - '%s/icons/white-queen.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('white_bishop', - '%s/icons/white-bishop.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('white_knight', - '%s/icons/white-knight.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('white_rook', - '%s/icons/white-rook.svg' % (activity.get_bundle_path())) - self._gnuchess.reskin_from_file('white_pawn', - '%s/icons/white-pawn.svg' % (activity.get_bundle_path())) + for piece in PIECES.keys(): + for color in ['white', 'black']: + self._gnuchess.reskin_from_file( + '%s_%s' % (color, piece), + '%s/icons/%s-%s.svg' % (activity.get_bundle_path(), + color, piece)) def _black_pieces(self, colors): - self._gnuchess.reskin_from_svg('black_king', colors, bw='#000000') - self._gnuchess.reskin_from_svg('black_queen', colors, bw='#000000') - self._gnuchess.reskin_from_svg('black_bishop', colors, bw='#000000') - self._gnuchess.reskin_from_svg('black_knight', colors, bw='#000000') - self._gnuchess.reskin_from_svg('black_rook', colors, bw='#000000') - self._gnuchess.reskin_from_svg('black_pawn', colors, bw='#000000') + for piece in PIECES.keys(): + self._gnuchess.reskin_from_svg('black_%s' % piece, colors, + bw='#000000') def _white_pieces(self, colors): - self._gnuchess.reskin_from_svg('white_king', colors, bw='#ffffff') - self._gnuchess.reskin_from_svg('white_queen', colors, bw='#ffffff') - self._gnuchess.reskin_from_svg('white_bishop', colors, bw='#ffffff') - self._gnuchess.reskin_from_svg('white_knight', colors, bw='#ffffff') - self._gnuchess.reskin_from_svg('white_rook', colors, bw='#ffffff') - self._gnuchess.reskin_from_svg('white_pawn', colors, bw='#ffffff') + for piece in PIECES.keys(): + self._gnuchess.reskin_from_svg('white_%s' % piece, colors, + bw='#ffffff') def do_sugar_skin_cb(self, button=None): colors = self.colors @@ -487,51 +394,73 @@ class GNUChessActivity(activity.Activity): self._white_pieces(colors) def do_custom_skin_cb(self, button=None): - for piece in ['white_pawn', 'black_pawn', - 'white_rook', 'black_rook', - 'white_knight', 'black_knight', - 'white_bishop', 'black_bishop', - 'white_queen', 'black_queen', - 'white_king', 'black_king']: - if piece in self.metadata: - id = self.metadata[piece] - jobject = datastore.get(id) - if jobject is not None and jobject.file_path is not None: - self._do_reskin(piece, jobject.file_path) - - def _do_reskin(self, piece, file_path): + for piece in PIECES.keys(): + for color in ['white', 'black']: + name = '%s_%s' % (color, piece) + if name in self.metadata: + id = self.metadata[name] + jobject = datastore.get(id) + if jobject is not None and jobject.file_path is not None: + self._do_reskin(name, jobject.file_path) + + def _do_reskin(self, name, file_path): ''' If we are sharing, only reskin pieces of your color ''' if self._gnuchess.we_are_sharing and self.buddy is not None: - if 'white' in piece and self.playing_white: + if 'white' in name and self.playing_white: pixbuf = self._gnuchess.reskin_from_file( - piece, file_path, return_pixbuf=True) - self.send_piece(piece, pixbuf) - elif 'black' in piece and not self.playing_white: + name, file_path, return_pixbuf=True) + self.send_piece(name, pixbuf) + elif 'black' in name and not self.playing_white: pixbuf = self._gnuchess.reskin_from_file( - piece, file_path, return_pixbuf=True) - self.send_piece(piece, pixbuf) + name, file_path, return_pixbuf=True) + self.send_piece(name, pixbuf) else: - self._gnuchess.reskin_from_file(piece, file_path) + self._gnuchess.reskin_from_file(name, file_path) return - def set_timer_cb(self, widget): + def _timer_button_cb(self, button): + if not self.timer_palette.is_up() and not self.timer_panel_visible: + self.timer_palette.popup( + immediate=True, state=self.timer_palette.SECONDARY) + self.timer_panel_visible = True + else: + self.timer_palette.popdown(immediate=True) + self.timer_panel_visible = False + + def _setup_timer_palette(self): + self.timer_values = [None, 30, 180, 600] + self.timer_tooltips = ['', _('30 seconds'), _('3 minutes'), + _('10 minutes')] + self.timer_labels = [_('Disabled'), + #TRANS: Lightning chess 30 seconds between moves + _('Lightning: %d seconds') % (30), + #TRANS: Blitz chess 3 minutes between moves + _('Blitz: %d minutes') % (3), + #TRANS: Tournament chess 10 minutes between moves + _('Tournament: %d minutes') % (10)] + self.timer_palette = self.timer_button.get_palette() + + for i, label in enumerate(self.timer_labels): + menu_item = MenuItem(icon_name='timer-%d' % (i), + text_label=label) + menu_item.connect('activate', self._timer_selected_cb, i) + self.timer_palette.menu.append(menu_item) + menu_item.show() + + def _timer_selected_cb(self, button, index): game_already_started = 0 if self.time_interval != None: game_already_started = 1 - if widget.get_active() >= 0: - timer_type = widget.get_active_text() - if timer_type == _('Lightning: %d seconds') % (30): - self.time_interval = 30 - elif timer_type == _('Blitz: %d minutes') % (3): - self.time_interval = 3 * 60 - elif timer_type == _('Tournament: %d minutes') % (10): - self.time_interval = 10 * 60 - else: - self.time_interval = -1 + self.time_interval = self.timer_values[index] + if self.time_interval is None: + self.timer_button.set_tooltip(_('Timer off')) + else: + self.timer_button.set_tooltip( + _('Timer') + ' (' + self.timer_tooltips[index] + ')') if game_already_started: - self.alert_reset(timer_type) - if self.time_interval and self.time_interval == -1: + self.alert_reset(self.timer_labels[index]) + if self.time_interval and self.time_interval is not None: self.stopwatch(self.time_interval, self.alert_time) else: GObject.source_remove(self.stopwatch_timer) @@ -700,7 +629,9 @@ class GNUChessActivity(activity.Activity): else: self.metadata['playing_robot'] = 'False' + ''' self.metadata['timer_mode'] = self.timer.get_active_text() + ''' def read_file(self, file_path): ''' Read project file on relaunch ''' @@ -723,10 +654,11 @@ class GNUChessActivity(activity.Activity): if self.metadata['playing_robot'] == 'False': self.playing_robot = False self.human_button.set_active(True) + ''' if 'timer_mode' in self.metadata: - self.timer.set_active(self.time_list.index( - self.metadata['timer_mode'])) - + self.timer_intervale.set_active(self.timer_list.index( + self.metadata['timer_mode'])) + ''' self._gnuchess.restore_game(self._parse_move_list(self.game_data)) self.do_custom_skin_cb() @@ -884,6 +816,10 @@ class GNUChessActivity(activity.Activity): self.human_button.set_active(True) self.restoring = False + self.easy_button.set_sensitive(False) + self.hard_button.set_sensitive(False) + self.robot_button.set_sensitive(False) + def _list_tubes_reply_cb(self, tubes): ''' Reply to a list request. ''' for tube_info in tubes: @@ -3,6 +3,7 @@ ENHANCEMENT: * New translations * Better handling of activity joining behavior +* Replace combo box with palette 12 diff --git a/icons/timer-0.svg b/icons/timer-0.svg new file mode 100644 index 0000000..134a0a1 --- /dev/null +++ b/icons/timer-0.svg @@ -0,0 +1,192 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + contentScriptType="text/ecmascript" + width="55px" + zoomAndPan="magnify" + contentStyleType="text/css" + height="55px" + preserveAspectRatio="xMidYMid meet" + version="1.1" + id="svg2" + inkscape:version="0.48.1 r9760" + sodipodi:docname="record_timer-duration.svg"> + <metadata + id="metadata23"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs21" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1024" + inkscape:window-height="525" + id="namedview19" + showgrid="false" + inkscape:zoom="5.6568542" + inkscape:cx="36.253557" + inkscape:cy="28.65546" + inkscape:window-x="0" + inkscape:window-y="25" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" /> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="all" + style="display:inline"> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path3791" + sodipodi:cx="24.629629" + sodipodi:cy="24.25926" + sodipodi:rx="21.296297" + sodipodi:ry="21.296297" + d="m 45.925926,24.25926 a 21.296297,21.296297 0 1 1 -42.5925939,0 21.296297,21.296297 0 1 1 42.5925939,0 z" + transform="matrix(0.89950544,0,0,0.89950544,5.3455146,7.678664)" /> + </g> + <g + inkscape:groupmode="layer" + id="layer1" + inkscape:label="timer" + style="display:inline"> + <path + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 27.605804,29.867439 8.04512,-11.042322" + id="path3897" + inkscape:connector-curvature="0" /> + </g> + <g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="duration" + style="display:none" + sodipodi:insensitive="true"> + <path + style="fill:#808080;fill-opacity:1;stroke:none" + d="m 36.539789,13.013087 c 9.161862,4.992537 12.541772,16.466949 7.549234,25.628815 L 27.5,29.602112 z" + id="path4311" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="-9.4478671" + inkscape:transform-center-y="-3.7746184" /> + <path + inkscape:connector-curvature="0" + id="path4283" + d="M 27.571522,30.159444 39.546676,36.73611" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:transform-center-x="-6.1363368" + inkscape:transform-center-y="3.4538125" /> + </g> + <g + inkscape:groupmode="layer" + id="layer4" + inkscape:label="Capa" + style="display:inline" + sodipodi:insensitive="true"> + <g + style="display:inline" + id="g4315"> + <path + inkscape:connector-curvature="0" + id="path3811" + d="m 27.5,15.555556 0,3.888889" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 41.444444,29.5 -3.888889,0" + id="path3823" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3829" + d="m 13.555556,29.5 3.888889,0" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 27.5,43.444444 0,-3.888889" + id="path3854" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4076" + d="m 22.873381,5.940543 9.622594,0" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 38.96491,8.681773 5.209549,3.91786" + id="path4080" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4107" + d="m 16.03509,8.681773 -5.209549,3.91786" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:nodetypes="cc" /> + </g> + <path + transform="matrix(0.89950544,0,0,0.89950544,5.3455146,7.6786635)" + d="m 45.925926,24.25926 a 21.296297,21.296297 0 1 1 -42.5925939,0 21.296297,21.296297 0 1 1 42.5925939,0 z" + sodipodi:ry="21.296297" + sodipodi:rx="21.296297" + sodipodi:cy="24.25926" + sodipodi:cx="24.629629" + id="path4380" + style="fill:none;stroke:#000000;stroke-width:3.89102697;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" + sodipodi:type="arc" /> + </g> + <g + inkscape:groupmode="layer" + id="layer5" + inkscape:label="timer2" + style="display:inline"> + <g + id="g4198" + style="stroke-width:1.69182165;stroke-miterlimit:4;stroke-dasharray:none;display:inline" + transform="matrix(0.88661828,0,0,0.88661828,43.331119,7.0338455)"> + <path + inkscape:connector-curvature="0" + id="path4190" + d="m 3.6632464,51.336754 0,-12.532159" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 9.9293259,45.070674 -12.532159,0" + id="path4192" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4194" + d="M 8.0940337,49.501461 -0.76754091,40.639887" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 8.0940334,40.639887 -8.86157401,8.861574" + id="path4196" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/icons/timer-1.svg b/icons/timer-1.svg new file mode 100644 index 0000000..47057de --- /dev/null +++ b/icons/timer-1.svg @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="55" + height="55" + id="svg2"> + <metadata + id="metadata23"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs21" /> + <g + id="layer2" + style="display:inline"> + <path + d="m 45.925926,24.25926 a 21.296297,21.296297 0 1 1 -42.5925939,0 21.296297,21.296297 0 1 1 42.5925939,0 z" + transform="matrix(0.89950544,0,0,0.89950544,5.3455146,7.678664)" + id="path3791" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + </g> + <g + id="layer1" + style="display:inline"> + <path + d="M 27.665302,29.407631 27.334698,15.749391" + id="path3897" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="layer3" + style="display:none"> + <path + d="m 36.539789,13.013087 c 9.161862,4.992537 12.541772,16.466949 7.549234,25.628815 L 27.5,29.602112 z" + id="path4311" + style="fill:#808080;fill-opacity:1;stroke:none" /> + <path + d="M 27.571522,30.159444 39.546676,36.73611" + id="path4283" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="layer4" + style="display:inline"> + <g + id="g4315" + style="display:inline"> + <path + d="m 27.5,15.555556 0,3.888889" + id="path3811" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 41.444444,29.5 -3.888889,0" + id="path3823" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 13.555556,29.5 3.888889,0" + id="path3829" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 27.5,43.444444 0,-3.888889" + id="path3854" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 22.873381,5.940543 9.622594,0" + id="path4076" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 38.96491,8.681773 5.209549,3.91786" + id="path4080" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 16.03509,8.681773 -5.209549,3.91786" + id="path4107" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="m 45.925926,24.25926 a 21.296297,21.296297 0 1 1 -42.5925939,0 21.296297,21.296297 0 1 1 42.5925939,0 z" + transform="matrix(0.89950544,0,0,0.89950544,5.3455146,7.6786635)" + id="path4380" + style="fill:none;stroke:#000000;stroke-width:3.89102697;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + </g> + <g + id="layer5" + style="display:inline"> + <g + transform="matrix(0.88661828,0,0,0.88661828,43.331119,7.0338455)" + id="g4198" + style="stroke-width:1.69182169;stroke-miterlimit:4;stroke-dasharray:none;display:inline"> + <path + d="m 3.6632464,51.336754 0,-12.532159" + id="path4190" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 9.9293259,45.070674 -12.532159,0" + id="path4192" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 8.0940337,49.501461 -0.76754091,40.639887" + id="path4194" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 8.0940334,40.639887 -8.86157401,8.861574" + id="path4196" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + </g> +</svg> diff --git a/icons/timer-2.svg b/icons/timer-2.svg new file mode 100644 index 0000000..8526a78 --- /dev/null +++ b/icons/timer-2.svg @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="55" + height="55" + id="svg2"> + <metadata + id="metadata23"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs21" /> + <g + id="layer2" + style="display:inline"> + <path + d="m 45.925926,24.25926 a 21.296297,21.296297 0 1 1 -42.5925939,0 21.296297,21.296297 0 1 1 42.5925939,0 z" + transform="matrix(0.89950544,0,0,0.89950544,5.3455146,7.678664)" + id="path3791" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + </g> + <g + id="layer1" + style="display:inline"> + <path + d="M 27.611054,29.619307 35.167119,18.012589" + id="path3897" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="layer3" + style="display:none"> + <path + d="m 36.539789,13.013087 c 9.161862,4.992537 12.541772,16.466949 7.549234,25.628815 L 27.5,29.602112 z" + id="path4311" + style="fill:#808080;fill-opacity:1;stroke:none" /> + <path + d="M 27.571522,30.159444 39.546676,36.73611" + id="path4283" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="layer4" + style="display:inline"> + <g + id="g4315" + style="display:inline"> + <path + d="m 27.5,15.555556 0,3.888889" + id="path3811" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 41.444444,29.5 -3.888889,0" + id="path3823" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 13.555556,29.5 3.888889,0" + id="path3829" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 27.5,43.444444 0,-3.888889" + id="path3854" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 22.873381,5.940543 9.622594,0" + id="path4076" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 38.96491,8.681773 5.209549,3.91786" + id="path4080" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 16.03509,8.681773 -5.209549,3.91786" + id="path4107" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="m 45.925926,24.25926 a 21.296297,21.296297 0 1 1 -42.5925939,0 21.296297,21.296297 0 1 1 42.5925939,0 z" + transform="matrix(0.89950544,0,0,0.89950544,5.3455146,7.6786635)" + id="path4380" + style="fill:none;stroke:#000000;stroke-width:3.89102697;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + </g> + <g + id="layer5" + style="display:inline"> + <g + transform="matrix(0.88661828,0,0,0.88661828,43.331119,7.0338455)" + id="g4198" + style="stroke-width:1.69182169;stroke-miterlimit:4;stroke-dasharray:none;display:inline"> + <path + d="m 3.6632464,51.336754 0,-12.532159" + id="path4190" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 9.9293259,45.070674 -12.532159,0" + id="path4192" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 8.0940337,49.501461 -0.76754091,40.639887" + id="path4194" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 8.0940334,40.639887 -8.86157401,8.861574" + id="path4196" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + </g> +</svg> diff --git a/icons/timer-3.svg b/icons/timer-3.svg new file mode 100644 index 0000000..714802f --- /dev/null +++ b/icons/timer-3.svg @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="55" + height="55" + id="svg2"> + <metadata + id="metadata23"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs21" /> + <g + id="layer2" + style="display:inline"> + <path + d="m 45.925926,24.25926 a 21.296297,21.296297 0 1 1 -42.5925939,0 21.296297,21.296297 0 1 1 42.5925939,0 z" + transform="matrix(0.89950544,0,0,0.89950544,5.3455146,7.678664)" + id="path3791" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + </g> + <g + id="layer1" + style="display:inline"> + <path + d="M 27.611054,29.619307 40.116867,23.139113" + id="path3897" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="layer3" + style="display:none"> + <path + d="m 36.539789,13.013087 c 9.161862,4.992537 12.541772,16.466949 7.549234,25.628815 L 27.5,29.602112 z" + id="path4311" + style="fill:#808080;fill-opacity:1;stroke:none" /> + <path + d="M 27.571522,30.159444 39.546676,36.73611" + id="path4283" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="layer4" + style="display:inline"> + <g + id="g4315" + style="display:inline"> + <path + d="m 27.5,15.555556 0,3.888889" + id="path3811" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 41.444444,29.5 -3.888889,0" + id="path3823" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 13.555556,29.5 3.888889,0" + id="path3829" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 27.5,43.444444 0,-3.888889" + id="path3854" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 22.873381,5.940543 9.622594,0" + id="path4076" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 38.96491,8.681773 5.209549,3.91786" + id="path4080" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 16.03509,8.681773 -5.209549,3.91786" + id="path4107" + style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="m 45.925926,24.25926 a 21.296297,21.296297 0 1 1 -42.5925939,0 21.296297,21.296297 0 1 1 42.5925939,0 z" + transform="matrix(0.89950544,0,0,0.89950544,5.3455146,7.6786635)" + id="path4380" + style="fill:none;stroke:#000000;stroke-width:3.89102697;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + </g> + <g + id="layer5" + style="display:inline"> + <g + transform="matrix(0.88661828,0,0,0.88661828,43.331119,7.0338455)" + id="g4198" + style="stroke-width:1.69182169;stroke-miterlimit:4;stroke-dasharray:none;display:inline"> + <path + d="m 3.6632464,51.336754 0,-12.532159" + id="path4190" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 9.9293259,45.070674 -12.532159,0" + id="path4192" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 8.0940337,49.501461 -0.76754091,40.639887" + id="path4194" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 8.0940334,40.639887 -8.86157401,8.861574" + id="path4196" + style="fill:#ffffff;stroke:#ffffff;stroke-width:1.69182169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + </g> +</svg> |