diff options
author | Agustin Zubiaga <aguz@sugarlabs.org> | 2013-11-18 20:32:14 (GMT) |
---|---|---|
committer | Agustin Zubiaga <aguz@sugarlabs.org> | 2013-11-18 20:32:14 (GMT) |
commit | 2767551bf75593d88be8a46b5e62f55c496ffd43 (patch) | |
tree | 79a1f72a66124f7dbeeb5b9976f1b63d40990c66 | |
parent | 6e8a632f38a2301fc4f65bb9d83e4db2103fe60f (diff) |
Font change implemented
Tick (X and Y values) colortoolbutton is not working cause SugarPycha
does not support (change values color) it yet, it always draw it black.
Signed-off-by: Agustin Zubiaga <aguz@sugarlabs.org>
-rw-r--r-- | activity.py | 159 | ||||
-rw-r--r-- | chart.py | 25 | ||||
-rw-r--r-- | fontcombobox.py | 309 | ||||
-rw-r--r-- | icons/font-text.svg | 32 | ||||
-rw-r--r-- | icons/format-text.svg | 8 | ||||
-rw-r--r-- | icons/labels-font.svg | 78 | ||||
-rw-r--r-- | icons/resize+.svg | 41 | ||||
-rw-r--r-- | icons/resize-.svg | 43 | ||||
-rw-r--r-- | icons/tick-font.svg | 162 | ||||
-rw-r--r-- | icons/title-font.svg | 141 |
10 files changed, 995 insertions, 3 deletions
diff --git a/activity.py b/activity.py index 73450f8..a977b24 100644 --- a/activity.py +++ b/activity.py @@ -43,6 +43,7 @@ from sugar3.activity.widgets import StopButton from sugar3.activity.widgets import ToolbarButton from sugar3.graphics.toolbarbox import ToolbarBox from sugar3.graphics.toolbutton import ToolButton +from sugar3.graphics.toolcombobox import ToolComboBox from sugar3.graphics.radiotoolbutton import RadioToolButton from sugar3.graphics.colorbutton import ColorToolButton from sugar3.graphics.objectchooser import ObjectChooser @@ -52,6 +53,9 @@ from sugar3.graphics.alert import Alert from sugar3.datastore import datastore from sugar3.graphics import style +from fontcombobox import FontComboBox +from fontcombobox import FontSize + from readers import StopWatchReader from readers import MeasureReader from readers import ClipboardReader @@ -67,6 +71,12 @@ _COLOR1 = utils.get_user_fill_color() _COLOR2 = utils.get_user_stroke_color() _WHITE = Gdk.color_parse('white') +# Font options +TITLE_FONT = 'title' +LABELS_FONT = 'labels' +TICK_FONT = 'ticks' + + # Paths _ACTIVITY_DIR = os.path.join(activity.get_activity_root(), 'data/') _CHART_FILE = utils.get_chart_file(_ACTIVITY_DIR) @@ -77,7 +87,6 @@ _logger.setLevel(logging.DEBUG) logging.basicConfig() - def _invalid_number_alert(activity): alert = Alert() @@ -155,8 +164,23 @@ class ChartActivity(activity.Activity): self.charts_area = None self.chart_data = [] self.chart_type_buttons = [] + self._font_options = { + 'titleColor': '#000000', + 'titleFont': 'Sans', + 'titleFontSize': 12, + 'yvals': {'fontColor': '#000000'}, + 'axis': { + 'tickFont': 'Sans', + 'tickFontSize': 12, + 'labelFontSize': 14, + 'labelColor': '#666666', + 'labelFont': 'Sans', + 'lineColor': '#b3b3b3'}} # TOOLBARS + self._labels_font = RadioToolButton() + self._title_font = RadioToolButton() + toolbarbox = ToolbarBox() activity_button = ActivityToolbarButton(self) @@ -283,6 +307,63 @@ class ChartActivity(activity.Activity): toolbarbox.toolbar.insert(self._options_button, -1) + text_toolbar_btn = ToolbarButton() + text_toolbar_btn.props.icon_name = 'format-text' + text_toolbar_btn.props.label = _('Text') + toolbarbox.toolbar.insert(text_toolbar_btn, -1) + self._text_options_btn = text_toolbar_btn + + texttoolbar = Gtk.Toolbar() + + self.font_name_combo = FontComboBox() + self.font_name_combo.set_font_name('Sans') + self.font_name_combo.connect("changed", lambda w: + self._set_chart_font_options(font=w.get_font_name())) + texttoolbar.insert(ToolComboBox(self.font_name_combo), -1) + + self.font_size = FontSize() + self.font_size.connect("changed", lambda w: + self._set_chart_font_options(size=w.get_font_size())) + texttoolbar.insert(self.font_size, -1) + + self.text_color_btn = ColorToolButton() + self.text_color_btn.set_color(style.COLOR_BLACK.get_gdk_color()) + self.text_color_btn.set_title(_('Font Color')) + texttoolbar.insert(self.text_color_btn, -1) + GObject.timeout_add(1000, self._connect_color_btn, + self.text_color_btn, + self._set_text_color) + + # self._title_font created in the top of the file + self._title_font.connect('clicked', self._set_font_option, + TITLE_FONT) + self._title_font.set_tooltip(_('Title font')) + self._title_font.props.icon_name = 'title-font' + op_group = self._title_font + + texttoolbar.insert(self._title_font, 0) + + # self._labels_font created in the top of the file + self._labels_font.connect('clicked', self._set_font_option, + LABELS_FONT) + self._labels_font.set_tooltip(_('Labels font')) + self._labels_font.props.icon_name = 'labels-font' + self._labels_font.props.group = op_group + texttoolbar.insert(self._labels_font, 1) + + tick_font = RadioToolButton() + tick_font.connect('clicked', self._set_font_option, TICK_FONT) + tick_font.set_tooltip(_('Tick font')) + tick_font.props.icon_name = 'tick-font' + tick_font.props.group = op_group + texttoolbar.insert(tick_font, 2) + + separator = Gtk.SeparatorToolItem() + texttoolbar.insert(separator, 3) + + text_toolbar_btn.props.page = texttoolbar + texttoolbar.show_all() + separator = Gtk.SeparatorToolItem() separator.set_draw(True) separator.set_expand(False) @@ -402,15 +483,70 @@ class ChartActivity(activity.Activity): self.show_all() + self._set_font_option(TITLE_FONT) + Gdk.Screen.get_default().connect('size-changed', self._configure_cb) self._configure_cb() + def _set_text_color(self, *args): + self._set_chart_font_options(color=utils.rgb2html(args[-1].get_color())) + + def _set_chart_font_options(self, font=None, size=None, color=None): + op = self._font_options + if self._font_option == TITLE_FONT: + op['titleFont'] = font or op['titleFont'] + op['titleFontSize'] = size or op['titleFontSize'] + op['titleColor'] = color or op['titleColor'] + + elif self._font_option == LABELS_FONT: + op['axis']['labelFont'] = font or op['axis']['labelFont'] + op['axis']['labelFontSize'] = size or op['axis']['labelFontSize'] + op['axis']['labelColor'] = color or op['axis']['labelColor'] + + elif self._font_option == TICK_FONT: + op['axis']['tickFont'] = font or op['axis']['tickFont'] + op['axis']['tickFontSize'] = size or op['axis']['tickFontSize'] + op['yvals']['fontColor'] = color or op['yvals']['fontColor'] + + self._font_options = op + self._render_chart() + + def _get_chart_font_options(self, option): + chart_options = self._font_options + if option == TITLE_FONT: + font = chart_options['titleFont'] + size = chart_options['titleFontSize'] + color = chart_options['titleColor'] + + elif option == LABELS_FONT: + font = chart_options['axis']['labelFont'] + size = chart_options['axis']['labelFontSize'] + color = chart_options['axis']['labelColor'] + + elif option == TICK_FONT: + font = chart_options['axis']['tickFont'] + size = chart_options['axis']['tickFontSize'] + color = chart_options['yvals']['fontColor'] + + else: + return None, None, None + return font, size, color + + def _set_font_option(self, *args): + self._font_option = args[-1] + + font, size, color = self._get_chart_font_options(self._font_option) + + self.font_name_combo.set_font_name(font) + self.font_size.set_font_size(size) + self.text_color_btn.set_color(Color(color).get_gdk_color()) + def _create_chart_buttons(self, toolbar): add_vbar_chart = RadioToolButton() + add_vbar_chart.set_active(True) add_vbar_chart.connect('clicked', self._add_chart_cb, charts.VERTICAL_BAR) add_vbar_chart.set_tooltip(_('Vertical Bar Chart')) - add_vbar_chart.set_active(True) add_vbar_chart.props.icon_name = 'vbar' charts_group = add_vbar_chart @@ -452,6 +588,7 @@ class ChartActivity(activity.Activity): btn.set_sensitive(False) self._options_button.set_sensitive(False) + self._text_options_btn.set_sensitive(False) self._fullscreen_button.set_sensitive(False) def _show_chart_area(self): @@ -463,6 +600,7 @@ class ChartActivity(activity.Activity): btn.set_sensitive(True) self._options_button.set_sensitive(True) + self._text_options_btn.set_sensitive(True) self._fullscreen_button.set_sensitive(True) def _create_measure_palette(self, button): @@ -513,6 +651,14 @@ class ChartActivity(activity.Activity): self._update_chart_data() def _add_chart_cb(self, widget, type=charts.VERTICAL_BAR): + if type == charts.PIE: + if self._font_option == LABELS_FONT: + self._title_font.set_active(True) + self._set_font_option(TITLE_FONT) + self._labels_font.set_sensitive(False) + else: + self._labels_font.set_sensitive(True) + self.current_chart = charts.Chart(type) self.update_chart() @@ -572,6 +718,7 @@ class ChartActivity(activity.Activity): # Set options self.current_chart.set_color_scheme(color=self.chart_color) self.current_chart.set_line_color(self.chart_line_color) + self.current_chart.set_font_options(self._font_options) if self.current_chart.type == charts.PIE: self.current_chart.render(self) @@ -612,6 +759,7 @@ class ChartActivity(activity.Activity): self.current_chart.set_title(self.metadata['title']) self.current_chart.set_x_label(self.x_label) self.current_chart.set_y_label(self.y_label) + self._set_font_option(self._font_option) self._render_chart() def _label_changed(self, treeview, path, new_label): @@ -765,6 +913,11 @@ class ChartActivity(activity.Activity): self.chart_color = data['chart_color'] self.chart_line_color = data['chart_line_color'] self.current_chart.type = data['current_chart.type'] + + # Make it compatible with old Chart instances + if 'font_options' in data: + self._font_options = data['font_options'] + chart_data = data['chart_data'] # Update charts buttons @@ -784,6 +937,7 @@ class ChartActivity(activity.Activity): elif _type == charts.PIE: self.chart_type_buttons[3].set_active(True) self.chart_type_buttons[7].set_active(True) + self._labels_font.set_sensitive(False) # Update the controls in the config subtoolbar self.chart_color_btn.set_color(Color(self.chart_color).get_gdk_color()) @@ -815,6 +969,7 @@ class ChartActivity(activity.Activity): data['chart_line_color'] = self.chart_line_color data['current_chart.type'] = self.current_chart.type data['chart_data'] = self.chart_data + data['font_options'] = self._font_options f = open(file_path, 'w') try: @@ -55,10 +55,16 @@ class Chart(GObject.GObject): self.options = { 'legend': {'hide': True}, - 'titleFontSize': 16, + 'titleColor': '#000000', + 'titleFont': 'Tahoma', + 'titleFontSize': 12, 'axis': { + 'tickColor': '#F3F3F3', + 'tickFont': 'Sans', 'tickFontSize': 12, 'labelFontSize': 14, + 'labelColor': '#666666', + 'labelFont': 'Sans', 'lineColor': '#b3b3b3', 'x': { 'ticks': [dict(v=i, label=l[0]) for i, @@ -70,6 +76,7 @@ class Chart(GObject.GObject): 'label': 'Y', } }, + 'yvals': {'fontColor': '#000000'}, 'stroke': { 'width': 3 }, @@ -85,6 +92,22 @@ class Chart(GObject.GObject): }, } + def set_font_options(self, op): + self.options['titleFont'] = op['titleFont'] + self.options['titleFontSize'] = op['titleFontSize'] + self.options['titleColor'] = op['titleColor'] + self.options['axis']['labelFont'] = op['axis']['labelFont'] + self.options['axis']['labelFontSize'] = op['axis']['labelFontSize'] + self.options['axis']['labelColor'] = op['axis']['labelColor'] + self.options['axis']['tickFont'] = op['axis']['tickFont'] + self.options['axis']['tickFontSize'] = op['axis']['tickFontSize'] + self.options['yvals']['fontColor'] = op['yvals']['fontColor'] + + if self.type == PIE: + self.options['axis']['labelFont'] = op['axis']['tickFont'] + self.options['axis']['labelFontSize'] = op['axis']['tickFontSize'] + self.options['axis']['labelColor'] = op['axis']['tickColor'] + def set_color_scheme(self, color='blue'): '''Set the chart color scheme''' self.options['colorScheme']['args'] = {'initialColor': color} diff --git a/fontcombobox.py b/fontcombobox.py new file mode 100644 index 0000000..747dc9a --- /dev/null +++ b/fontcombobox.py @@ -0,0 +1,309 @@ +# Copyright (C) 2012 Gonzalo Odiard <gonzalo@laptop.org> +# Based in code form Flavio Danesse <fdanesse@activitycentral.com> +# and Ariel Calzada <ariel.calzada@gmail.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import os +import shutil +from gettext import gettext as _ + +from gi.repository import Gtk +from gi.repository import GObject +from gi.repository import Gio + +from sugar3.graphics.icon import Icon +from sugar3.graphics.palette import Palette, ToolInvoker +from sugar3.graphics.palettemenu import PaletteMenuBox +from sugar3.graphics.palettemenu import PaletteMenuItem +from sugar3.graphics import style +from sugar3 import env + +DEFAULT_FONTS = ['Sans', 'Serif', 'Monospace'] +USER_FONTS_FILE_PATH = env.get_profile_path('fonts') +GLOBAL_FONTS_FILE_PATH = '/etc/sugar_fonts' + + +class FontLabel(Gtk.Label): + + def __init__(self, default_font='Sans'): + Gtk.Label.__init__(self) + self._font = None + self.set_font(default_font) + + def set_font(self, font): + if self._font != font: + self.set_markup('<span font="%s">%s</span>' % (font, font)) + + +class FontComboBox(Gtk.ToolItem): + + __gsignals__ = { + 'changed': (GObject.SignalFlags.RUN_LAST, None, ([])), } + + def __init__(self): + self._palette_invoker = ToolInvoker() + Gtk.ToolItem.__init__(self) + self._font_label = FontLabel() + bt = Gtk.Button('') + bt.set_can_focus(False) + bt.remove(bt.get_children()[0]) + box = Gtk.HBox() + bt.add(box) + icon = Icon(icon_name='font-text') + box.pack_start(icon, False, False, 10) + box.pack_start(self._font_label, False, False, 10) + self.add(bt) + self.show_all() + + self._font_name = 'Sans' + + # theme the button, can be removed if add the style to the sugar css + if style.zoom(100) == 100: + subcell_size = 15 + else: + subcell_size = 11 + radius = 2 * subcell_size + theme = "GtkButton {border-radius: %dpx;}" % radius + css_provider = Gtk.CssProvider() + css_provider.load_from_data(theme) + style_context = bt.get_style_context() + style_context.add_provider(css_provider, + Gtk.STYLE_PROVIDER_PRIORITY_USER) + + # init palette + self._hide_tooltip_on_click = True + self._palette_invoker.attach_tool(self) + self._palette_invoker.props.toggle_palette = True + + self.palette = Palette(_('Select font')) + self.palette.set_invoker(self._palette_invoker) + + # load the fonts in the palette menu + self._menu_box = PaletteMenuBox() + self.props.palette.set_content(self._menu_box) + self._menu_box.show() + + context = self.get_pango_context() + + self._init_font_list() + + tmp_list = [] + for family in context.list_families(): + name = family.get_name() + if name in self._font_white_list: + tmp_list.append(name) + for name in sorted(tmp_list): + self._add_menu(name, self.__font_selected_cb) + + self._font_label.set_font(self._font_name) + + def _init_font_list(self): + self._font_white_list = [] + self._font_white_list.extend(DEFAULT_FONTS) + + # check if there are a user configuration file + if not os.path.exists(USER_FONTS_FILE_PATH): + # verify if exists a file in /etc + if os.path.exists(GLOBAL_FONTS_FILE_PATH): + shutil.copy(GLOBAL_FONTS_FILE_PATH, USER_FONTS_FILE_PATH) + + if os.path.exists(USER_FONTS_FILE_PATH): + # get the font names in the file to the white list + fonts_file = open(USER_FONTS_FILE_PATH) + # get the font names in the file to the white list + for line in fonts_file: + self._font_white_list.append(line.strip()) + # monitor changes in the file + gio_fonts_file = Gio.File.new_for_path(USER_FONTS_FILE_PATH) + self.monitor = gio_fonts_file.monitor_file( + Gio.FileMonitorFlags.NONE, None) + self.monitor.set_rate_limit(5000) + self.monitor.connect('changed', self._reload_fonts) + + def _reload_fonts(self, monitor, gio_file, other_file, event): + if event != Gio.FileMonitorEvent.CHANGES_DONE_HINT: + return + self._font_white_list = [] + self._font_white_list.extend(DEFAULT_FONTS) + fonts_file = open(USER_FONTS_FILE_PATH) + for line in fonts_file: + self._font_white_list.append(line.strip()) + # update the menu + for child in self._menu_box.get_children(): + self._menu_box.remove(child) + child = None + context = self.get_pango_context() + tmp_list = [] + for family in context.list_families(): + name = family.get_name() + if name in self._font_white_list: + tmp_list.append(name) + for name in sorted(tmp_list): + self._add_menu(name, self.__font_selected_cb) + return False + + def __font_selected_cb(self, menu, font_name): + self._font_name = font_name + self._font_label.set_font(font_name) + self.emit('changed') + + def _add_menu(self, font_name, activate_cb): + label = '<span font="%s">%s</span>' % (font_name, font_name) + menu_item = PaletteMenuItem() + menu_item.set_label(label) + menu_item.connect('activate', activate_cb, font_name) + self._menu_box.append_item(menu_item) + menu_item.show() + + def __destroy_cb(self, icon): + if self._palette_invoker is not None: + self._palette_invoker.detach() + + def create_palette(self): + return None + + def get_palette(self): + return self._palette_invoker.palette + + def set_palette(self, palette): + self._palette_invoker.palette = palette + + palette = GObject.property( + type=object, setter=set_palette, getter=get_palette) + + def get_palette_invoker(self): + return self._palette_invoker + + def set_palette_invoker(self, palette_invoker): + self._palette_invoker.detach() + self._palette_invoker = palette_invoker + + palette_invoker = GObject.property( + type=object, setter=set_palette_invoker, getter=get_palette_invoker) + + def set_font_name(self, font_name): + self._font_label.set_font(font_name) + + def get_font_name(self): + return self._font_name + + +class FontSize(Gtk.ToolItem): + + __gsignals__ = { + 'changed': (GObject.SignalFlags.RUN_LAST, None, ([])), } + + def __init__(self): + + Gtk.ToolItem.__init__(self) + + self._font_sizes = [8, 9, 10, 11, 12, 14, 16, 20, 22, 24, 26, 28, 36, + 48, 72] + + # theme the buttons, can be removed if add the style to the sugar css + # these are the same values used in gtk-widgets.css.em + if style.zoom(100) == 100: + subcell_size = 15 + default_padding = 6 + else: + subcell_size = 11 + default_padding = 4 + + hbox = Gtk.HBox() + vbox = Gtk.VBox() + self.add(vbox) + # add a vbox to set the padding up and down + vbox.pack_start(hbox, True, True, default_padding) + self._size_down = Gtk.Button() + self._size_down.set_can_focus(False) + icon = Icon(icon_name='resize-') + self._size_down.set_image(icon) + self._size_down.connect('clicked', self.__font_sizes_cb, False) + hbox.pack_start(self._size_down, False, False, 5) + + # TODO: default? + self._default_size = 12 + self._font_size = self._default_size + + self._size_label = Gtk.Label(str(self._font_size)) + hbox.pack_start(self._size_label, False, False, 10) + + self._size_up = Gtk.Button() + self._size_up.set_can_focus(False) + icon = Icon(icon_name='resize+') + self._size_up.set_image(icon) + self._size_up.connect('clicked', self.__font_sizes_cb, True) + hbox.pack_start(self._size_up, False, False, 5) + + radius = 2 * subcell_size + theme_up = "GtkButton {border-radius:0px %dpx %dpx 0px;}" % (radius, + radius) + css_provider_up = Gtk.CssProvider() + css_provider_up.load_from_data(theme_up) + + style_context = self._size_up.get_style_context() + style_context.add_provider(css_provider_up, + Gtk.STYLE_PROVIDER_PRIORITY_USER) + + theme_down = "GtkButton {border-radius: %dpx 0px 0px %dpx;}" % (radius, + radius) + css_provider_down = Gtk.CssProvider() + css_provider_down.load_from_data(theme_down) + style_context = self._size_down.get_style_context() + style_context.add_provider(css_provider_down, + Gtk.STYLE_PROVIDER_PRIORITY_USER) + + self.show_all() + + def __font_sizes_cb(self, button, increase): + if self._font_size in self._font_sizes: + i = self._font_sizes.index(self._font_size) + if increase: + if i < len(self._font_sizes) - 1: + i += 1 + else: + if i > 0: + i -= 1 + else: + i = self._font_sizes.index(self._default_size) + + self._font_size = self._font_sizes[i] + self._size_label.set_text(str(self._font_size)) + self._size_down.set_sensitive(i != 0) + self._size_up.set_sensitive(i < len(self._font_sizes) - 1) + self.emit('changed') + + def set_font_size(self, size): + if size not in self._font_sizes: + # assure the font assigned is in the range + # if not, assign one close. + for font_size in self._font_sizes: + if font_size > size: + size = font_size + break + if size > self._font_sizes[-1]: + size = self._font_sizes[-1] + + self._font_size = size + self._size_label.set_text(str(self._font_size)) + + # update the buttons states + i = self._font_sizes.index(self._font_size) + self._size_down.set_sensitive(i != 0) + self._size_up.set_sensitive(i < len(self._font_sizes) - 1) + self.emit('changed') + + def get_font_size(self): + return self._font_size diff --git a/icons/font-text.svg b/icons/font-text.svg new file mode 100644 index 0000000..ad3f9fa --- /dev/null +++ b/icons/font-text.svg @@ -0,0 +1,32 @@ +<?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="54.695999" + viewBox="0 0 55 54.696" + id="svg2" + xml:space="preserve"><metadata + id="metadata22"><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="defs20" /><text + x="-2.6176355" + y="43.461388" + transform="scale(0.90891499,1.1002129)" + id="text3591" + xml:space="preserve" + style="font-size:49.5765152px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Verdana;-inkscape-font-specification:Verdana"><tspan + x="-2.6176355" + y="43.461388" + id="tspan3593" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Serif;-inkscape-font-specification:Serif"><tspan + id="tspan2992" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Sans;-inkscape-font-specification:Sans">F</tspan>F</tspan></text> +</svg>
\ No newline at end of file diff --git a/icons/format-text.svg b/icons/format-text.svg new file mode 100644 index 0000000..075465b --- /dev/null +++ b/icons/format-text.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> +<svg enable-background="new 0 0 55 54.696" height="54.696px" version="1.1" viewBox="0 0 55 54.696" 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="format-text-size"> + <g display="inline"> + <path d="M22.263,12.435 h24.656 v3.562 H36.575 V41.59 h-3.969 V15.996 H22.263 V12.435z" fill="#FFFFFF"/> + <path d="M8.953,22.435 h16.656 v3.562 h-6.344 V41.59 h-3.969 V25.997 h-6.344 V24.435z" fill="#FFFFFF"/> + </g> +</g></svg> diff --git a/icons/labels-font.svg b/icons/labels-font.svg new file mode 100644 index 0000000..b5af879 --- /dev/null +++ b/icons/labels-font.svg @@ -0,0 +1,78 @@ +<?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" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + width="62" + height="60" + viewBox="0 0 62 60" + id="svg2" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="vlabel.svg"><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="928" + inkscape:window-height="549" + id="namedview10" + showgrid="false" + inkscape:zoom="3.9333333" + inkscape:cx="50.080494" + inkscape:cy="30" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="svg2" /><metadata + id="metadata15"><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="defs13" /><g + transform="matrix(0,-0.58486318,0.47035803,0,0.41665058,-0.65111329)" + id="text3780" + style="font-size:36.99787903000000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff;font-family:Serif;-inkscape-font-specification:Serif"><path + d="m -47.332874,26.841896 1.264576,-3.19757 -7.171952,-17.5956713 -2.18591,0 0,-1.9329947 8.833966,0 0,1.9329947 -3.071113,0 5.401546,13.2057863 5.401546,-13.2057863 -2.872394,0 0,-1.9329947 7.208082,0 0,1.9329947 -2.149779,0 -8.797835,21.6061833 c -0.602188,1.493398 -1.270606,2.51108 -2.005256,3.053048 -0.734666,0.553996 -1.770413,0.830998 -3.107244,0.831007 -0.566052,-9e-6 -1.150166,-0.04818 -1.752341,-0.144523 -0.590138,-0.09636 -1.186294,-0.234858 -1.788472,-0.415504 l 0,-3.66727 1.698145,0 c 0.07226,0.818959 0.276999,1.403072 0.614223,1.752341 0.34926,0.361301 0.885199,0.541955 1.607818,0.541961 0.662391,-6e-6 1.192308,-0.186682 1.589752,-0.560026 0.409475,-0.361313 0.837022,-1.095971 1.282642,-2.203976" + id="path4023" + style="stroke:#ffffff;fill:#ffffff" + inkscape:connector-curvature="0" /></g><g + transform="matrix(0,-0.85575423,0.82155949,0,-22.815196,56.234959)" + id="g3820" + style="stroke:#ffffff;fill:#ffffff"><path + d="m 6.8085107,50.851064 49.0528313,0" + id="path3010" + style="fill:#ffffff;stroke:#ffffff;stroke-width:3.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /><path + d="m 49.333554,42.68526 8.211183,8.165804 -8.211183,8.165804" + id="path3805" + style="fill:#ffffff;stroke:#ffffff;stroke-width:3.50000000000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /></g><g + transform="matrix(0.57722279,0,0,0.50756203,26.19203,36.321657)" + id="text3780-1" + style="font-size:36.99787903000000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff;font-family:Serif;-inkscape-font-specification:Serif"><path + style="stroke:#ffffff;fill:#ffffff" + inkscape:connector-curvature="0" + d="m 11.449192,29.594723 4.028577,-5.546068 -2.583348,0 0,-1.932995 7.388737,0 0,1.932995 -2.547217,0 -5.148631,7.09969 5.997703,8.255875 2.511087,0 0,1.914929 -8.870097,0 0,-1.914929 2.438825,0 -4.173101,-5.744788 -4.1911658,5.744788 2.4930212,0 0,1.914929 -7.2984098,0 0,-1.914929 2.5472173,0 5.2931536,-7.29841 -5.8351147,-8.057155 -2.3665636,0 0,-1.932995 8.5810511,0 0,1.932995 -2.2943021,0 4.0285778,5.546068" + id="path3992" /></g><g + style="stroke:#ffffff;fill:#ffffff" + transform="matrix(0.82155949,0,0,0.85575423,6.6158371,0.14629503)" + id="g3820-6"><path + inkscape:connector-curvature="0" + d="m 6.8085107,50.851064 49.0528313,0" + id="path3010-8" + style="fill:#ffffff;stroke:#ffffff;stroke-width:3.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><path + inkscape:connector-curvature="0" + d="m 49.333554,42.68526 8.211183,8.165804 -8.211183,8.165804" + id="path3805-7" + style="fill:#ffffff;stroke:#ffffff;stroke-width:3.50000000000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></g></svg>
\ No newline at end of file diff --git a/icons/resize+.svg b/icons/resize+.svg new file mode 100644 index 0000000..0fae3c3 --- /dev/null +++ b/icons/resize+.svg @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="55" + height="54.695999" + viewBox="0 0 55 54.696" + id="svg2" + xml:space="preserve"><defs + id="defs21"> + + + + + </defs><g + transform="translate(-0.4354,0)" + id="g7"> + <g + id="g9"> + <path + d="m 25.263,12.435 h 24.656 v 3.562 H 39.575 V 41.59 H 35.606 V 15.996 H 25.263 v -3.561 z" + id="path11" + style="fill:#ffffff" /> + </g> + </g><g + transform="translate(-8.4356,0)" + id="g13"> + <g + id="g15"> + <path + d="m 13.953,24.435 h 16.656 v 3.562 H 24.265 V 41.59 H 20.296 V 27.997 h -6.344 v -3.562 z" + id="path17" + style="fill:#ffffff" /> + </g> + </g><path + d="m 25.5774,23.677763 6,-6.000001 -4,0" + id="path3618" + style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></svg>
\ No newline at end of file diff --git a/icons/resize-.svg b/icons/resize-.svg new file mode 100644 index 0000000..e3b719e --- /dev/null +++ b/icons/resize-.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="55" + height="54.695999" + viewBox="0 0 55 54.696" + id="svg2" + xml:space="preserve"><defs + id="defs21"> + + + + + </defs><g + transform="translate(3.5644,0)" + id="g2821"><g + transform="matrix(-1,0,0,1,51.871,0)" + id="g7"> + <g + id="g9"> + <path + d="m 25.263,12.435 h 24.656 v 3.562 H 39.575 V 41.59 H 35.606 V 15.996 H 25.263 v -3.561 z" + id="path11" + style="fill:#ffffff" /> + </g> + </g><g + transform="matrix(-1,0,0,1,59.8712,0)" + id="g13"> + <g + id="g15"> + <path + d="m 13.953,24.435 h 16.656 v 3.562 H 24.265 V 41.59 H 20.296 V 27.997 h -6.344 v -3.562 z" + id="path17" + style="fill:#ffffff" /> + </g> + </g><path + d="m 19.8582,17.677762 6,6.000001 -4,0" + id="path3618" + style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></g></svg>
\ No newline at end of file diff --git a/icons/tick-font.svg b/icons/tick-font.svg new file mode 100644 index 0000000..08d208c --- /dev/null +++ b/icons/tick-font.svg @@ -0,0 +1,162 @@ +<?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:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + width="62" + height="60" + viewBox="0 0 62 60" + id="svg2" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="tick-font.svg"><metadata + id="metadata15"><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="defs13"><linearGradient + inkscape:collect="always" + id="linearGradient3762"><stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3764" /><stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3766" /></linearGradient><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3762" + id="linearGradient3768" + x1="46.525425" + y1="31.01695" + x2="62.033899" + y2="31.01695" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.1803279,0,0,1,-90.127118,64.957626)" /></defs><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="552" + id="namedview11" + showgrid="false" + inkscape:zoom="3.9333333" + inkscape:cx="62.976696" + inkscape:cy="37.838983" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg2" /><g + transform="matrix(0,-0.72129104,0.68399603,0,28.627787,5.0501915)" + id="activity-browse" + style="fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:2.0999999;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:block"><g + transform="translate(-128.87712,-22.838983)" + id="g7" + style="fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:2.0999999;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"><g + transform="matrix(0.10822504,0,0,0.09945444,61.358446,34.085169)" + id="g6167" + style="fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:20.24152946;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"><g + transform="matrix(0,1.0881871,-0.9189596,0,426.39011,-308.03653)" + id="g3798" + style="fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:20.24152946;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"><rect + width="81.443176" + height="272.19876" + rx="4.3524833" + ry="6.0284276" + x="373.97116" + y="55.900478" + id="rect2987" + style="color:#000000;fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:20.24152946;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><rect + width="81.443077" + height="360.47952" + rx="4.3524833" + ry="6.0284276" + x="499.32275" + y="-32.380226" + id="rect3757" + style="color:#000000;fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:20.24152946;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><rect + width="81.443077" + height="500.25723" + rx="4.3524833" + ry="6.0284276" + x="248.61969" + y="-172.15802" + id="rect3759" + style="color:#000000;fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:20.24152946;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><rect + width="81.443314" + height="215.79736" + rx="4.3524833" + ry="6.0284276" + x="123.26795" + y="112.30204" + id="rect3761" + style="color:#000000;fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:20.24152946;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></g></g></g></g><text + xml:space="preserve" + style="font-size:16.25135803px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#999999;fill-opacity:1;stroke:none;font-family:Sans" + x="1.7760285" + y="8.8148394" + id="text3770" + sodipodi:linespacing="125%" + transform="scale(1.019756,0.98062674)"><tspan + sodipodi:role="line" + id="tspan3772" + x="1.7760285" + y="8.8148394" /></text> +<text + xml:space="preserve" + style="font-size:13.50810051px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#999999;fill-opacity:1;stroke:none;font-family:Sans" + x="2.3738625" + y="19.076818" + id="text3770-0" + sodipodi:linespacing="125%" + transform="scale(0.98007967,1.0203252)"><tspan + sodipodi:role="line" + id="tspan3772-5" + x="2.3738625" + y="19.076818">43</tspan></text> +<text + xml:space="preserve" + style="font-size:13.50810051px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#999999;fill-opacity:1;stroke:none;font-family:Sans" + x="2.334285" + y="30.80267" + id="text3770-0-1" + sodipodi:linespacing="125%" + transform="scale(0.98007967,1.0203252)"><tspan + sodipodi:role="line" + x="2.334285" + y="30.80267" + id="tspan3816">31</tspan></text> +<text + xml:space="preserve" + style="font-size:13.50810051px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#999999;fill-opacity:1;stroke:none;font-family:Sans" + x="2.1095979" + y="42.343838" + id="text3770-0-1-3" + sodipodi:linespacing="125%" + transform="scale(0.98007967,1.0203252)"><tspan + sodipodi:role="line" + x="2.1095979" + y="42.343838" + id="tspan3816-4">20</tspan></text> +<text + xml:space="preserve" + style="font-size:15.71327019px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#999999;fill-opacity:1;stroke:none;font-family:Sans" + x="19.859686" + y="59.485451" + id="text3879" + sodipodi:linespacing="125%" + transform="scale(1.0162563,0.98400375)"><tspan + sodipodi:role="line" + id="tspan3881" + x="19.859686" + y="59.485451">1234</tspan></text> +</svg>
\ No newline at end of file diff --git a/icons/title-font.svg b/icons/title-font.svg new file mode 100644 index 0000000..1f62788 --- /dev/null +++ b/icons/title-font.svg @@ -0,0 +1,141 @@ +<?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:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + width="62" + height="60" + viewBox="0 0 62 60" + id="svg2" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="title-font.svg"><metadata + id="metadata15"><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="defs13"><linearGradient + id="linearGradient3829"><stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3831" /><stop + id="stop3837" + offset="0.41904762" + style="stop-color:#ffffff;stop-opacity:0.49803922;" /><stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3833" /></linearGradient><linearGradient + inkscape:collect="always" + id="linearGradient3811"><stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3813" /><stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3815" /></linearGradient><linearGradient + id="linearGradient3781"><stop + style="stop-color:#808080;stop-opacity:1;" + offset="0" + id="stop3783" /><stop + style="stop-color:#808080;stop-opacity:0;" + offset="1" + id="stop3785" /></linearGradient><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3811" + id="linearGradient3817" + x1="-2.0158749" + y1="62.855823" + x2="62.156137" + y2="62.855823" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.3907601,0,0,2.6553042,-62.179267,-151.28022)" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3829" + id="linearGradient3835" + x1="47.779999" + y1="-36.255243" + x2="60.083341" + y2="-36.255243" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.5415455,0,0,1.0000003,-136.16089,12.055659)" /></defs><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="806" + inkscape:window-height="480" + id="namedview11" + showgrid="false" + inkscape:zoom="2.9763752" + inkscape:cx="21.169116" + inkscape:cy="24.2801" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="svg2" /><g + transform="translate(58.093221,29.697223)" + id="activity-browse" + style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:2.29999995;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:block"><g + transform="translate(-128.87712,-22.838983)" + id="g7" + style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:2.29999995;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"><g + transform="matrix(0.10822504,0,0,0.09945444,61.358446,34.085169)" + id="g6167" + style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:22.16929436;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"><g + transform="translate(2.7213003,-2.9469823)" + id="g3798" + style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:22.16929436;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"><rect + width="81.443176" + height="272.19876" + rx="4.3524833" + ry="6.0284276" + x="373.97116" + y="55.900478" + id="rect2987" + style="color:#000000;fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:22.16929436;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><rect + width="81.443077" + height="360.47952" + rx="4.3524833" + ry="6.0284276" + x="499.32275" + y="-32.380226" + id="rect3757" + style="color:#000000;fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:22.16929436;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><rect + width="81.443077" + height="500.25723" + rx="4.3524833" + ry="6.0284276" + x="248.61969" + y="-172.15802" + id="rect3759" + style="color:#000000;fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:22.16929436;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><rect + width="81.443314" + height="215.79736" + rx="4.3524833" + ry="6.0284276" + x="123.26795" + y="112.30204" + id="rect3761" + style="color:#000000;fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:22.16929436;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></g></g></g></g><rect + style="fill:#999999;fill-opacity:1;stroke:#ffffff;stroke-width:1.08714974000000009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3760" + width="49.434883" + height="8.756918" + x="5.5706935" + y="4.3334055" /><rect + style="fill:url(#linearGradient3835);fill-opacity:1;stroke:none" + id="rect3819" + width="18.966162" + height="49.520157" + x="-62.505836" + y="-48.959679" + transform="matrix(-0.08853978,-0.99607264,-0.99999958,9.1695853e-4,0,0)" /></svg>
\ No newline at end of file |