diff options
author | Walter Bender <walter.bender@gmail.com> | 2012-03-24 17:38:55 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2012-03-24 17:38:55 (GMT) |
commit | c3632b1603ba2cc1dfc2680c7a9e7afb7c424ef7 (patch) | |
tree | 49381827f6e69a9c57164794d83e8a30391375d2 | |
parent | 56a591d9fb6b7c16c656ff22b1b1105c52ca0aef (diff) |
resync with TurtleBlocks 139
-rw-r--r-- | TurtleArt/taconstants.py | 2 | ||||
-rw-r--r-- | TurtleArt/tapalette.py | 82 | ||||
-rw-r--r-- | TurtleArt/tawindow.py | 63 | ||||
-rw-r--r-- | TurtleConfusionActivity.py | 56 | ||||
-rw-r--r-- | icons/help-off.svg | 54 | ||||
-rw-r--r-- | icons/help-on.svg | 57 | ||||
-rw-r--r-- | images/help.svg | 50 | ||||
-rw-r--r-- | images/print.svg | 50 |
8 files changed, 364 insertions, 50 deletions
diff --git a/TurtleArt/taconstants.py b/TurtleArt/taconstants.py index 74291fc..6bbaf69 100644 --- a/TurtleArt/taconstants.py +++ b/TurtleArt/taconstants.py @@ -143,7 +143,7 @@ OVERLAY_SHAPES = ['Cartesian', 'Cartesian_labeled', 'polar', 'metric'] STATUS_SHAPES = ['status', 'info', 'nostack', 'dupstack', 'noinput', 'emptyheap', 'emptybox', 'nomedia', 'nocode', 'overflowerror', 'negroot', 'syntaxerror', 'nofile', 'nojournal', 'zerodivide', - 'notanumber', 'incompatible'] + 'notanumber', 'incompatible', 'help', 'print'] # # Emulate Sugar toolbar when running from outside of Sugar diff --git a/TurtleArt/tapalette.py b/TurtleArt/tapalette.py index 0bdf3d6..da80386 100644 --- a/TurtleArt/tapalette.py +++ b/TurtleArt/tapalette.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -#Copyright (c) 2011 Walter Bender +#Copyright (c) 2011,12 Walter Bender #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal @@ -19,6 +19,8 @@ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. +help_palettes = {} +help_windows = {} palette_names = [] palette_blocks = [] block_colors = [] @@ -75,6 +77,12 @@ block_styles = {'basic-style': [], 'portfolio-style-2x1': [], 'portfolio-style-1x2': []} + +import gtk + +from sugar.graphics.icon import Icon +from sugar.graphics import style + from taconstants import EXPANDABLE_STYLE from tautils import debug_output @@ -94,6 +102,25 @@ class Palette(): self._special_name = _(name) self._colors = colors self._help = None + self._max_text_width = int(gtk.gdk.screen_width() / 3) - 20 + + # Prepare a vbox for the help palette + if not (self._name in help_palettes): + self._help_box = gtk.VBox() + self._help_box.set_homogeneous(False) + help_palettes[self._name] = self._help_box + else: + self._help_box = help_palettes[self._name] + + help_windows[self._name] = gtk.ScrolledWindow() + help_windows[self._name].set_size_request( + int(gtk.gdk.screen_width() / 3), + gtk.gdk.screen_height() - style.GRID_CELL_SIZE * 3) + help_windows[self._name].set_policy( + gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + help_windows[self._name].add_with_viewport( + help_palettes[self._name]) + help_palettes[self._name].show() def add_palette(self, position=None): if self._name is None: @@ -124,8 +151,48 @@ class Palette(): else: help_strings[self._name] = '' + def add_section(self, section_text, icon=None): + ''' Add a section to the help palette. From helpbutton.py by + Gonzalo Odiard ''' + hbox = gtk.HBox() + label = gtk.Label() + label.set_use_markup(True) + label.set_markup('<b>%s</b>' % section_text) + label.set_line_wrap(True) + label.set_size_request(self._max_text_width, -1) + hbox.add(label) + if icon is not None: + _icon = Icon(icon_name=icon) + hbox.add(_icon) + label.set_size_request(self._max_text_width - 20, -1) + else: + label.set_size_request(self._max_text_width, -1) + + hbox.show_all() + self._help_box.pack_start(hbox, False, False, padding=5) + + def add_paragraph(self, text, icon=None): + ''' Add an entry to the help palette. From helpbutton.py by + Gonzalo Odiard ''' + hbox = gtk.HBox() + label = gtk.Label(text) + label.set_justify(gtk.JUSTIFY_LEFT) + label.set_line_wrap(True) + hbox.add(label) + if icon is not None: + _icon = Icon(icon_name=icon) + hbox.add(_icon) + label.set_size_request(self._max_text_width - 20, -1) + else: + label.set_size_request(self._max_text_width, -1) + + hbox.show_all() + self._help_box.pack_start(hbox, False, False, padding=5) + def set_help(self, help): self._help = help + if hasattr(self, '_help_box'): + self.add_section(self._help, icon=self._name + 'off') def set_special_name(self, name): self._special_name = name @@ -152,6 +219,14 @@ class Palette(): block.set_logo_command(logo_command) if help_string is not None: block.set_help(help_string) + if not hidden: + if special_name is None: + if type(label) == list: + self.add_paragraph('%s: %s' % (label[0], help_string)) + else: + self.add_paragraph('%s: %s' % (label, help_string)) + else: + self.add_paragraph('%s: %s' % (special_name, help_string)) if colors is not None: block.set_colors(colors) block.set_value_block(value_block) @@ -161,8 +236,7 @@ class Palette(): block.set_hidden() block.add_block() - -def make_palette(palette_name, colors=None, help_string=None): +def make_palette(palette_name, colors=None, help_string=None, position=None): """ Palette helper function """ if colors is None: palette = Palette(palette_name) @@ -170,7 +244,7 @@ def make_palette(palette_name, colors=None, help_string=None): palette = Palette(palette_name, colors) if help_string is not None: palette.set_help(help_string) - palette.add_palette() + palette.add_palette(position) return palette diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py index 77459e5..20eeb34 100644 --- a/TurtleArt/tawindow.py +++ b/TurtleArt/tawindow.py @@ -124,6 +124,9 @@ class TurtleArtWindow(): self.height = gtk.gdk.screen_height() self.rect = gtk.gdk.Rectangle(0, 0, 0, 0) + self.no_help = False + self.last_label = None + self.keypress = '' self.keyvalue = 0 self.dead_key = '' @@ -295,7 +298,7 @@ class TurtleArtWindow(): self._plugins.append(plugins.values()[0](self)) debug_output('successfully importing %s' % (plugin_class), self.running_sugar) - except ImportError as e: + except ImportError, e: debug_output('failed to import %s: %s' % (plugin_class, str(e)), self.running_sugar) ''' @@ -651,6 +654,10 @@ class TurtleArtWindow(): p[0].move((x + p[0].save_xy[0], y + p[0].save_xy[1])) if p[1] is not None: p[1].move((x + p[1].save_xy[0], y + p[1].save_xy[1])) + + self.status_spr.move((x + self.status_spr.save_xy[0], + y + self.status_spr.save_xy[1])) + # To do: set save_xy for blocks in Trash for blk in self.trash_stack: for gblk in find_group(blk): @@ -758,7 +765,11 @@ class TurtleArtWindow(): self._layout_palette(n, regenerate=regenerate, show=False) for blk in self.palettes[n]: if blk.get_visibility(): - blk.spr.set_layer(PROTO_LAYER) + if hasattr(blk.spr, 'set_layer'): + blk.spr.set_layer(PROTO_LAYER) + else: + debug_output('WARNING: block sprite is None' % (blk.name), + self.running_sugar) else: blk.spr.hide() if n == palette_names.index('trash'): @@ -858,7 +869,7 @@ class TurtleArtWindow(): blk.spr.hide() old_blocks = self.palettes[n][:] self.palettes[n] = [] - for i, name in enumerate(palette_blocks[n]): + for name in palette_blocks[n]: found_block = False for oblk in old_blocks: if oblk.name == name: @@ -870,19 +881,24 @@ class TurtleArtWindow(): self.block_list, self.sprite_list, name, 0, 0, 'proto', [], PALETTE_SCALE)) if name in hidden_proto_blocks: - self.palettes[n][i].set_visibility(False) - self.palettes[n][i].spr.set_layer(PROTO_LAYER) - self.palettes[n][i].unhighlight() + self.palettes[n][-1].set_visibility(False) + else: + if hasattr(self.palettes[n][-1].spr, 'set_layer'): + self.palettes[n][-1].spr.set_layer(PROTO_LAYER) + self.palettes[n][-1].unhighlight() + else: + debug_output('WARNING: block sprite is None' % ( + self.palettes[n][-1].name), self.running_sugar) # Some proto blocks get a skin. if name in block_styles['box-style-media']: - self._proto_skin(name + 'small', n, i) + self._proto_skin(name + 'small', n, -1) elif name[:8] == 'template': # Deprecated - self._proto_skin(name[8:], n, i) + self._proto_skin(name[8:], n, -1) elif name[:7] == 'picture': # Deprecated - self._proto_skin(name[7:], n, i) + self._proto_skin(name[7:], n, -1) elif name in PYTHON_SKIN: - self._proto_skin('pythonsmall', n, i) + self._proto_skin('pythonsmall', n, -1) return def _hide_toolbar_palette(self): @@ -905,7 +921,8 @@ class TurtleArtWindow(): if palette is not None: for proto in self.palettes[palette]: proto.spr.hide() - self.palette_sprs[palette][self.orientation].hide() + if self.palette_sprs[palette][self.orientation] is not None: + self.palette_sprs[palette][self.orientation].hide() if self.activity is None or not self.activity.has_toolbarbox: self.selectors[palette].set_shape( self.selector_shapes[palette][0]) @@ -1719,6 +1736,8 @@ class TurtleArtWindow(): def _do_show_popup(self, block_name): """ Fetch the help text and display it. """ + if self.no_help: + return 0 if block_name in special_names: special_block_name = special_names[block_name] elif block_name in block_names: @@ -1728,18 +1747,13 @@ class TurtleArtWindow(): else: special_block_name = _(block_name) if block_name in help_strings: - if special_block_name == '': - label = help_strings[block_name] - else: - label = special_block_name + ": " + help_strings[block_name] + label = help_strings[block_name] else: label = special_block_name - if self.running_sugar: - self.activity.hover_help_label.set_text(label) - self.activity.hover_help_label.show() - else: - if self.interactive_mode: - self.parent.set_title(_("Turtle Art") + " — " + label) + if self.last_label == label: + return 0 + self.showlabel('help', label=label) + self.last_label = label return 0 def _buttonrelease_cb(self, win, event): @@ -3063,7 +3077,12 @@ class TurtleArtWindow(): if shp == 'info': self.status_spr.move((PALETTE_WIDTH, self.height - 400)) else: - self.status_spr.move((PALETTE_WIDTH, self.height - 200)) + # Adjust vertical position based on scrolled window adjustment + if self.running_sugar: + self.status_spr.move((0, self.height - 200 + \ + self.activity.sw.get_vadjustment().get_value())) + elif self.interactive_mode: + self.status_spr.move((0, self.height - 100)) def calc_position(self, template): """ Relative placement of portfolio objects (deprecated) """ diff --git a/TurtleConfusionActivity.py b/TurtleConfusionActivity.py index 52aec14..9c2d9d9 100644 --- a/TurtleConfusionActivity.py +++ b/TurtleConfusionActivity.py @@ -1,5 +1,5 @@ #Copyright (c) 2007, Playful Invention Company -#Copyright (c) 2008-11, Walter Bender +#Copyright (c) 2008-12, Walter Bender #Copyright (c) 2009-10 Raul Gutierrez Segales #Permission is hereby granted, free of charge, to any person obtaining a copy @@ -51,7 +51,7 @@ import tarfile from gettext import gettext as _ from TurtleArt.tapalette import palette_names, help_strings -from TurtleArt.taconstants import ICON_SIZE, BLOCK_SCALE, XO1, XO15, XO175 +from TurtleArt.taconstants import ICON_SIZE, BLOCK_SCALE, XO1, XO15, XO175, XO30 from TurtleArt.taexporthtml import save_html from TurtleArt.taexportlogo import save_logo from TurtleArt.tautils import data_to_file, data_to_string, data_from_string, \ @@ -59,6 +59,9 @@ from TurtleArt.tautils import data_to_file, data_to_string, data_from_string, \ from TurtleArt.tawindow import TurtleArtWindow from TurtleArt.tacollaboration import Collaboration +if HAS_TOOLBARBOX: + from util.helpbutton import HelpButton + class TurtleConfusionActivity(activity.Activity): @@ -78,9 +81,16 @@ class TurtleConfusionActivity(activity.Activity): self._setup_toolbar() self._setup_canvas(self._setup_scrolled_window()) + # FIX ME: not sure how or why self.canvas gets overwritten + # It is set to self.sw in _setup_canvas but None here. + # We need self.canvas for generating the preview image + self.canvas = self.sw self._setup_palette_toolbar() + if not self.has_toolbarbox: + self._setup_help_toolbar() + self._setup_sharing() self._load_level() @@ -261,11 +271,26 @@ class TurtleConfusionActivity(activity.Activity): if not self.has_toolbarbox: self.palette_buttons[i].set_icon(palette_names[i] + 'on') + else: + self._help_button.set_current_palette(palette_names[i]) self.tw.show_palette(i) self.do_showpalette() # These methods are called both from toolbar buttons and blocks. + def _do_hover_help_toggle(self, button): + ''' Toggle hover help ''' + if self.tw.no_help: + self.tw.no_help = False + self._hover_help_toggle.set_icon('help-off') + self._hover_help_toggle.set_tooltip(_('Turn off hover help')) + else: + self.tw.no_help = True + self.tw.last_label = None + self.tw.status_spr.hide() + self._hover_help_toggle.set_icon('help-on') + self._hover_help_toggle.set_tooltip(_('Turn on hover help')) + def do_hidepalette(self): ''' Hide the palette. ''' if hasattr(self, 'palette_button'): @@ -519,11 +544,7 @@ class TurtleConfusionActivity(activity.Activity): self._palette_toolbar = gtk.Toolbar() self._palette_toolbar_button = ToolbarButton( page=self._palette_toolbar, icon_name='palette') - help_toolbar = gtk.Toolbar() - help_toolbar_button = ToolbarButton(label=_('Help'), - page=help_toolbar, - icon_name='help-toolbar') - + self._make_load_save_buttons(activity_toolbar_button) activity_toolbar_button.show() @@ -544,8 +565,8 @@ class TurtleConfusionActivity(activity.Activity): 'ta-open', _('Load example'), self.do_samples_cb, self._toolbox.toolbar) - help_toolbar_button.show() - self._toolbox.toolbar.insert(help_toolbar_button, -1) + self._help_button = HelpButton() + self._toolbox.toolbar.insert(self._help_button, -1) stop_button = StopButton(self) stop_button.props.accelerator = '<Ctrl>Q' @@ -570,9 +591,6 @@ class TurtleConfusionActivity(activity.Activity): edit_toolbar_button = edit_toolbar journal_toolbar = gtk.Toolbar() self._toolbox.add_toolbar(_('Import/Export'), journal_toolbar) - help_toolbar = gtk.Toolbar() - self._toolbox.add_toolbar(_('Help'), help_toolbar) - help_toolbar_button = help_toolbar self._make_palette_buttons(project_toolbar, palette_button=True) @@ -610,20 +628,12 @@ class TurtleConfusionActivity(activity.Activity): self.resize_down_button = self._add_button( 'resize-', _('Shrink blocks'), self.do_shrink_blocks_cb, view_toolbar_button) - self.help_button = self._add_button( - 'help-toolbar', _('Help'), self._do_help_cb, help_toolbar_button) - if gtk.gtk_version[0] > 2 or gtk.gtk_version[1] > 16: - self.hover_help_label = self._add_label( - _('Move the cursor over the orange palette for help.'), - help_toolbar, gtk.gdk.screen_width() - 3 * ICON_SIZE) - else: - self.hover_help_label = self._add_label( - _('Move the cursor over the orange palette for help.'), - help_toolbar) + self._hover_help_toggle = self._add_button( + 'help-off', _('Turn off hover help'), + self._do_hover_help_toggle, view_toolbar) edit_toolbar.show() view_toolbar.show() - help_toolbar.show() self._toolbox.show() if not self.has_toolbarbox: diff --git a/icons/help-off.svg b/icons/help-off.svg new file mode 100644 index 0000000..7a038b6 --- /dev/null +++ b/icons/help-off.svg @@ -0,0 +1,54 @@ +<?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.0" + width="55" + height="55" + viewBox="0 0 55 55" + id="svg2"> + <metadata + id="metadata11"> + <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="defs9"> + +</defs> + <path + d="m 50,27.625 c 0,12.3431 -10.1569,22.5 -22.5,22.5 C 15.1569,50.125 5,39.9681 5,27.625 5,15.2819 15.1569,5.125 27.5,5.125 c 12.3431,0 22.5,10.1569 22.5,22.5 z" + id="path3" + style="fill:#ffffff" /> + <path + d="m 23.956,27.167 c 0,-1.621 1.8,-1.89 3.645,-2.386 1.8,-0.495 3.6,-1.215 3.6,-3.825 0,-1.98 -1.845,-3.42 -3.734,-3.42 -3.78,0 -4.365,4.455 -7.246,4.455 -1.62,0 -2.745,-1.26 -2.745,-3.24 0,-4.726 5.94,-7.425 9.991,-7.425 5.806,0 10.756,3.6 10.756,9.631 0,4.995 -3.15,7.921 -7.785,9.091 l 0,1.619 c 0,1.801 -1.351,3.105 -3.241,3.105 -2.025,0 -3.24,-1.305 -3.24,-3.105 l 0,-4.5 -0.001,0 z m -0.27,13.77 c 0,-1.935 1.575,-3.51 3.51,-3.51 1.936,0 3.51,1.575 3.51,3.51 0,1.936 -1.574,3.512 -3.51,3.512 -1.935,-10e-4 -3.51,-1.577 -3.51,-3.512 z" + id="path5" + style="fill:#282828;stroke:#282828;stroke-width:0.25;stroke-miterlimit:4" /> + <g + transform="matrix(0.90000005,0,0,0.90000005,1.5999984,5.2999976)" + id="g3850"> + <rect + width="12" + height="12" + x="40" + y="37" + id="rect3848" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + d="M 45.999999,33 C 40.475555,33 36,37.478222 36,42.998666 36,48.524 40.475555,53 45.999999,53 c 5.524889,0 10,-4.476 10,-10.001334 0,-5.520444 -4.475555,-9.998666 -10,-9.998666 z m 4.532889,12.515111 c 0.557334,0.558222 0.558667,1.462666 0,2.02 -0.279111,0.279555 -0.644889,0.419111 -1.010666,0.419111 -0.365334,0 -0.730667,-0.139556 -1.008889,-0.417778 l -2.56,-2.560444 -2.56,2.560444 c -0.278667,0.278222 -0.644,0.417778 -1.009334,0.417778 -0.365777,0 -0.732,-0.139556 -1.011111,-0.419111 -0.557333,-0.557334 -0.557333,-1.461778 0.0018,-2.02 L 43.933777,42.956 41.374666,40.396889 c -0.559111,-0.557334 -0.559111,-1.463112 -0.0018,-2.020445 0.557778,-0.557333 1.463111,-0.559555 2.020445,0 l 2.56,2.559556 2.56,-2.559556 c 0.556444,-0.559555 1.461333,-0.557333 2.019555,0 0.558667,0.557333 0.557334,1.463111 0,2.020445 l -2.559111,2.559111 2.559111,2.559111 z" + id="path3067" + style="fill:#282828;fill-opacity:1;display:inline" /> + </g> +</svg> diff --git a/icons/help-on.svg b/icons/help-on.svg new file mode 100644 index 0000000..c818f84 --- /dev/null +++ b/icons/help-on.svg @@ -0,0 +1,57 @@ +<?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.0" + width="55" + height="55" + viewBox="0 0 55 55" + id="svg2"> + <metadata + id="metadata3971"> + <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="defs3969" /> + <path + d="m 50,27.625 c 0,12.3431 -10.1569,22.5 -22.5,22.5 C 15.1569,50.125 5,39.9681 5,27.625 5,15.2819 15.1569,5.125 27.5,5.125 c 12.3431,0 22.5,10.1569 22.5,22.5 z" + id="path3963" + style="fill:#ffffff" /> + <path + d="m 23.956,27.167 c 0,-1.621 1.8,-1.89 3.645,-2.386 1.8,-0.495 3.6,-1.215 3.6,-3.825 0,-1.98 -1.845,-3.42 -3.734,-3.42 -3.78,0 -4.365,4.455 -7.246,4.455 -1.62,0 -2.745,-1.26 -2.745,-3.24 0,-4.726 5.94,-7.425 9.991,-7.425 5.806,0 10.756,3.6 10.756,9.631 0,4.995 -3.15,7.921 -7.785,9.091 l 0,1.619 c 0,1.801 -1.351,3.105 -3.241,3.105 -2.025,0 -3.24,-1.305 -3.24,-3.105 l 0,-4.5 -0.001,0 z m -0.27,13.77 c 0,-1.935 1.575,-3.51 3.51,-3.51 1.936,0 3.51,1.575 3.51,3.51 0,1.936 -1.574,3.512 -3.51,3.512 -1.935,-10e-4 -3.51,-1.577 -3.51,-3.512 z" + id="path3965" + style="fill:#282828;stroke:#282828;stroke-width:0.25;stroke-miterlimit:4" /> + <g + id="g4559"> + <rect + width="12" + height="12" + x="37" + y="38" + id="rect3848" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.4,0,0,0.4,32,33)" + id="dialog-ok" + style="fill:#282828;fill-opacity:1;display:block"> + <path + d="M 27.498,5 C 15.071,5 5,15.071 5,27.498 5,39.923 15.071,50 27.498,50 39.927,50 50,39.923 50,27.498 50,15.071 39.927,5 27.498,5 z M 41.419,19.886 24.706,40.208 13.789,29.29 c -1.258,-1.254 -1.258,-3.292 -0.003,-4.546 1.254,-1.255 3.292,-1.255 4.547,0 L 24.241,30.648 36.452,15.8 c 1.127,-1.368 3.153,-1.568 4.525,-0.438 1.37,1.127 1.569,3.153 0.442,4.524 z" + id="path4021" + style="fill:#282828;fill-opacity:1;display:inline" /> + +</g> + </g> +</svg> diff --git a/images/help.svg b/images/help.svg new file mode 100644 index 0000000..3281351 --- /dev/null +++ b/images/help.svg @@ -0,0 +1,50 @@ +<?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.0" + width="767" + height="38" + id="svg2"> + <metadata + id="metadata17"> + <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="defs27" /> + <path + d="M 15,37.5 C 11.5,37.5 8,35 5.5,32.5 3,30 0.5,26.5 0.5,23 l 0,-8 c 0,-3.25 2.5,-8.5 5,-10.5 2.5,-2 6,-4 9.5,-4 l 736.5,0 c 2.5,0 7,1 10.5,4 3.5,2.75 4.5,7.5 4.5,10.5 l 0,8 c 0,3.5 -2,7 -4.5,9.5 -2.5,2.5 -6.5,5 -10.5,5 L 15,37.5 z" + id="path4" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <g + transform="translate(656,65.625)" + id="g6"> + <path + d="m 79.5,438.5 c 0,4.5 -3.75,8 -8.5,8 -4.5,0 -8.25,-3.5 -8.25,-8 0,-4.5 3.75,-8.25 8.25,-8.25 4.75,0 8.5,3.75 8.5,8.25 l 0,0 z" + transform="translate(24,-485)" + id="path8" + style="fill:#ff4040;fill-opacity:1;fill-rule:nonzero;stroke:#ff4040;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + id="text10" + style="font-size:12px;font-weight:bold;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"> + <tspan + x="91" + y="-42" + id="tspan12" + style="font-size:12px">X</tspan> + </text> + </g> +</svg> diff --git a/images/print.svg b/images/print.svg new file mode 100644 index 0000000..9f48a36 --- /dev/null +++ b/images/print.svg @@ -0,0 +1,50 @@ +<?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.0" + width="767" + height="38" + id="svg2"> + <metadata + id="metadata17"> + <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="defs27" /> + <path + d="M 15,37.5 C 11.5,37.5 8,35 5.5,32.5 3,30 0.5,26.5 0.5,23 l 0,-8 c 0,-3.25 2.5,-8.5 5,-10.5 2.5,-2 6,-4 9.5,-4 l 736.5,0 c 2.5,0 7,1 10.5,4 3.5,2.75 4.5,7.5 4.5,10.5 l 0,8 c 0,3.5 -2,7 -4.5,9.5 -2.5,2.5 -6.5,5 -10.5,5 L 15,37.5 z" + id="path4" + style="fill:#80ffff;fill-opacity:1;fill-rule:evenodd;stroke:#00e0e0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <g + transform="translate(656,65.625)" + id="g6"> + <path + d="m 79.5,438.5 c 0,4.5 -3.75,8 -8.5,8 -4.5,0 -8.25,-3.5 -8.25,-8 0,-4.5 3.75,-8.25 8.25,-8.25 4.75,0 8.5,3.75 8.5,8.25 l 0,0 z" + transform="translate(24,-485)" + id="path8" + style="fill:#ff4040;fill-opacity:1;fill-rule:nonzero;stroke:#ff4040;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + id="text10" + style="font-size:12px;font-weight:bold;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"> + <tspan + x="91" + y="-42" + id="tspan12" + style="font-size:12px">X</tspan> + </text> + </g> +</svg> |