diff options
Diffstat (limited to 'pulsecaster')
19 files changed, 0 insertions, 4682 deletions
diff --git a/pulsecaster/__init__.py b/pulsecaster/__init__.py deleted file mode 100644 index 4204c27..0000000 --- a/pulsecaster/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/python -# -# Copyright (C) 2009 Paul W. Frields -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Paul W. Frields <stickster@gmail.com> - - -from config import * -from ui import * diff --git a/pulsecaster/config.py b/pulsecaster/config.py deleted file mode 100644 index 31b3409..0000000 --- a/pulsecaster/config.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/python -# -*- coding: iso-8859-15 -*- -# -# Copyright (C) 2009 Paul W. Frields -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Paul W. Frields <stickster@gmail.com> - - -NAME = u'PulseCaster' -VERSION = u'0.1.3' -AUTHOR = u'Paul W. Frields' -AUTHOR_EMAIL = u'stickster@gmail.com' -DESCRIPTION = u'PulseAudio based podcast recorder' -LICENSE = u'GPLv3+' -COPYRIGHT = u'Copyright © 2009 ' + AUTHOR -KEYWORDS = u'pulseaudio podcast recorder mixer gstreamer pygtk' -URL = u'http://pfrields.fedorapeople.org' # FIXME: Project needs a - # home! -CONTRIBUTORS = [u'Harry Karvonen <harry.karvonen@gmail.com>'] - -LICENSE_TEXT = u'''Licensed under the GNU General Public License Version 3 - -PulseCaster 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 3 -of the License, or (at your option) any later version. - -PulseCaster 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 Street, Fifth Floor, Boston, MA -02110-1301, USA.''' diff --git a/pulsecaster/data/icons/16x16/pulsecaster-16.png b/pulsecaster/data/icons/16x16/pulsecaster-16.png Binary files differdeleted file mode 100644 index c6840c9..0000000 --- a/pulsecaster/data/icons/16x16/pulsecaster-16.png +++ /dev/null diff --git a/pulsecaster/data/icons/24x24/pulsecaster-24.png b/pulsecaster/data/icons/24x24/pulsecaster-24.png Binary files differdeleted file mode 100644 index 4cc7a58..0000000 --- a/pulsecaster/data/icons/24x24/pulsecaster-24.png +++ /dev/null diff --git a/pulsecaster/data/icons/32x32/pulsecaster-32.png b/pulsecaster/data/icons/32x32/pulsecaster-32.png Binary files differdeleted file mode 100644 index 9a15d49..0000000 --- a/pulsecaster/data/icons/32x32/pulsecaster-32.png +++ /dev/null diff --git a/pulsecaster/data/icons/48x48/pulsecaster-48.png b/pulsecaster/data/icons/48x48/pulsecaster-48.png Binary files differdeleted file mode 100644 index fdc2f3d..0000000 --- a/pulsecaster/data/icons/48x48/pulsecaster-48.png +++ /dev/null diff --git a/pulsecaster/data/icons/64x64/pulsecaster-64.png b/pulsecaster/data/icons/64x64/pulsecaster-64.png Binary files differdeleted file mode 100644 index 4a4425a..0000000 --- a/pulsecaster/data/icons/64x64/pulsecaster-64.png +++ /dev/null diff --git a/pulsecaster/data/icons/scalable/pulsecaster-logo.svg b/pulsecaster/data/icons/scalable/pulsecaster-logo.svg deleted file mode 100644 index 8e51935..0000000 --- a/pulsecaster/data/icons/scalable/pulsecaster-logo.svg +++ /dev/null @@ -1,845 +0,0 @@ -<?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: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" - width="82.392563" - height="28.269129" - id="svg2161" - sodipodi:version="0.32" - inkscape:version="0.46+devel" - sodipodi:docname="pulsecaster-logo.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - version="1.0"> - <defs - id="defs2163"> - <radialGradient - r="12.59534" - fy="36.907261" - fx="23.82066" - cy="36.907261" - cx="23.82066" - gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" - gradientUnits="userSpaceOnUse" - id="radialGradient3012-3" - xlink:href="#linearGradient4499-8" - inkscape:collect="always" /> - <linearGradient - id="linearGradient4499-8" - inkscape:collect="always"> - <stop - id="stop4501-0" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - id="stop4503-9" - offset="1" - style="stop-color:black;stop-opacity:0;" /> - </linearGradient> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" - r="12.59534" - fy="36.907261" - fx="23.82066" - cy="36.907261" - cx="23.82066" - id="radialGradient4505-7" - xlink:href="#linearGradient4499-8" - inkscape:collect="always" /> - <linearGradient - y2="5.5441942" - x2="32.864544" - y1="13.794194" - x1="32.864544" - gradientTransform="translate(-0.25,13.5)" - gradientUnits="userSpaceOnUse" - id="linearGradient4473-9" - xlink:href="#linearGradient4475-9" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - id="linearGradient4475-9"> - <stop - style="stop-color:black;stop-opacity:1" - offset="0" - id="stop4477-3" /> - <stop - style="stop-color:black;stop-opacity:0" - offset="1" - id="stop4479-2" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-0.25,12.5)" - y2="5.5441942" - x2="32.864544" - y1="13.794194" - x1="32.864544" - gradientUnits="userSpaceOnUse" - id="linearGradient4460-4" - xlink:href="#linearGradient4465-3" - inkscape:collect="always" /> - <linearGradient - id="linearGradient4465-3" - inkscape:collect="always"> - <stop - id="stop4467-7" - offset="0" - style="stop-color:#2e3436;stop-opacity:1" /> - <stop - id="stop4469-1" - offset="1" - style="stop-color:#2e3436;stop-opacity:0" /> - </linearGradient> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" - r="13.08399" - fy="40.578671" - fx="18.753521" - cy="40.578671" - cx="18.753521" - id="radialGradient3691-2" - xlink:href="#linearGradient3711-2" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3711-2"> - <stop - style="stop-color:#babdb6;stop-opacity:1" - offset="0" - id="stop3713-0" /> - <stop - style="stop-color:#888a85;stop-opacity:1" - offset="1" - id="stop3715-2" /> - </linearGradient> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" - r="12.59534" - fy="36.907261" - fx="23.82066" - cy="36.907261" - cx="23.82066" - id="radialGradient2971-1" - xlink:href="#linearGradient2965-7" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2965-7" - inkscape:collect="always"> - <stop - id="stop2967-5" - offset="0" - style="stop-color:#888a85;stop-opacity:1;" /> - <stop - id="stop2969-1" - offset="1" - style="stop-color:#888a85;stop-opacity:0;" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" - gradientUnits="userSpaceOnUse" - y2="32.355263" - x2="29.74268" - y1="37.835339" - x1="23.997437" - id="linearGradient3785-7" - xlink:href="#linearGradient3779-4" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3779-4" - inkscape:collect="always"> - <stop - id="stop3781-1" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - id="stop3783-7" - offset="1" - style="stop-color:black;stop-opacity:0;" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="28.590008" - x2="27.272261" - y1="41.836731" - x1="23.8125" - id="linearGradient3709-1" - xlink:href="#linearGradient3703-1" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3703-1" - inkscape:collect="always"> - <stop - id="stop3705-1" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop3707-7" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <linearGradient - gradientTransform="translate(0,-1)" - gradientUnits="userSpaceOnUse" - y2="30.421146" - x2="23.640165" - y1="36.722809" - x1="25.606806" - id="linearGradient3732-0" - xlink:href="#linearGradient3726-4" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3726-4"> - <stop - id="stop3728-0" - offset="0" - style="stop-color:#555753;stop-opacity:1" /> - <stop - id="stop3730-8" - offset="1" - style="stop-color:#888a85;stop-opacity:1" /> - </linearGradient> - <linearGradient - gradientTransform="translate(0,-1)" - gradientUnits="userSpaceOnUse" - y2="19.231655" - x2="13.567612" - y1="18.432873" - x1="13.567612" - id="linearGradient3801-5" - xlink:href="#linearGradient3795-1" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3795-1"> - <stop - id="stop3797-6" - offset="0" - style="stop-color:white;stop-opacity:1" /> - <stop - id="stop3799-6" - offset="1" - style="stop-color:#eeeeec;stop-opacity:1;" /> - </linearGradient> - <linearGradient - gradientTransform="translate(20,-1)" - y2="19.231655" - x2="13.567612" - y1="18.432873" - x1="13.567612" - gradientUnits="userSpaceOnUse" - id="linearGradient3805-2" - xlink:href="#linearGradient3795-1" - inkscape:collect="always" /> - <linearGradient - gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" - gradientUnits="userSpaceOnUse" - y2="25.229111" - x2="21.649811" - y1="19.452076" - x1="23.374121" - id="linearGradient2987-1" - xlink:href="#linearGradient2981-9" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2981-9"> - <stop - id="stop2983-6" - offset="0" - style="stop-color:#eeeeec;stop-opacity:1;" /> - <stop - id="stop2985-4" - offset="1" - style="stop-color:white;stop-opacity:1" /> - </linearGradient> - <linearGradient - gradientTransform="translate(14,0)" - y2="20.381033" - x2="16.65625" - y1="16.14632" - x1="16.65625" - gradientUnits="userSpaceOnUse" - id="linearGradient2953-8" - xlink:href="#linearGradient2943-0" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2943-0"> - <stop - id="stop2945-8" - offset="0" - style="stop-color:#555753;stop-opacity:1" /> - <stop - id="stop2947-1" - offset="1" - style="stop-color:#2e3436;stop-opacity:1;" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="20.381033" - x2="16.65625" - y1="16.14632" - x1="16.65625" - id="linearGradient2949-0" - xlink:href="#linearGradient2943-0" - inkscape:collect="always" /> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="13.351768" - x2="30.230837" - y1="13.351768" - x1="18.737373" - id="linearGradient2902-2" - xlink:href="#linearGradient2904-2" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2904-2"> - <stop - style="stop-color:#babdb6;stop-opacity:1" - offset="0" - id="stop2906-9" /> - <stop - id="stop2910-7" - offset="0.21551724" - style="stop-color:white;stop-opacity:1;" /> - <stop - style="stop-color:#c3c4c2;stop-opacity:1;" - offset="0.70243758" - id="stop2912-5" /> - <stop - style="stop-color:#888a85;stop-opacity:1" - offset="1" - id="stop2908-6" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="5.125" - x2="17.625" - y1="20.814491" - x1="17.625" - id="linearGradient4487-4" - xlink:href="#linearGradient4481-6" - inkscape:collect="always" /> - <linearGradient - id="linearGradient4481-6"> - <stop - id="stop4483-3" - offset="0" - style="stop-color:#555753;stop-opacity:1;" /> - <stop - id="stop4485-7" - offset="1" - style="stop-color:#babdb6;stop-opacity:1" /> - </linearGradient> - <linearGradient - gradientTransform="translate(0,-1)" - gradientUnits="userSpaceOnUse" - y2="28.617105" - x2="24.6875" - y1="36.75" - x1="24.6875" - id="linearGradient3740-9" - xlink:href="#linearGradient3734-7" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3734-7"> - <stop - id="stop3736-4" - offset="0" - style="stop-color:#babdb6;stop-opacity:1" /> - <stop - id="stop3738-9" - offset="1" - style="stop-color:white;stop-opacity:1" /> - </linearGradient> - <linearGradient - y2="10.76408" - x2="23.176371" - y1="10.76408" - x1="19.583334" - gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" - gradientUnits="userSpaceOnUse" - id="linearGradient2890-1" - xlink:href="#linearGradient2867-7" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2867-7" - inkscape:collect="always"> - <stop - id="stop2869-0" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop2871-6" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <linearGradient - y2="15.94703" - x2="23.246162" - y1="24.761473" - x1="23.246162" - gradientUnits="userSpaceOnUse" - id="linearGradient2892-0" - xlink:href="#linearGradient3815-8" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3815-8" - inkscape:collect="always"> - <stop - id="stop3817-5" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - id="stop3819-3" - offset="1" - style="stop-color:black;stop-opacity:0;" /> - </linearGradient> - <linearGradient - y2="10.75" - x2="24.508121" - y1="6.3608937" - x1="21.961548" - gradientUnits="userSpaceOnUse" - id="linearGradient2894-9" - xlink:href="#linearGradient2877-4" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2877-4" - inkscape:collect="always"> - <stop - id="stop2879-1" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop2881-5" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" - r="6.46875" - fy="10.432782" - fx="22.553526" - cy="10.432782" - cx="22.553526" - id="radialGradient2926-4" - xlink:href="#linearGradient2920-1" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2920-1" - inkscape:collect="always"> - <stop - id="stop2922-5" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop2924-5" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <linearGradient - gradientTransform="translate(0,3)" - y2="10.081399" - x2="30" - y1="10.081399" - x1="17.999674" - gradientUnits="userSpaceOnUse" - id="linearGradient3567-4" - xlink:href="#linearGradient3228-9" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3228-9"> - <stop - id="stop3230-8" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - style="stop-color:black;stop-opacity:0.42857143;" - offset="0.06770357" - id="stop3573-3" /> - <stop - style="stop-color:black;stop-opacity:0;" - offset="0.29894069" - id="stop3569-8" /> - <stop - id="stop3571-5" - offset="0.77437174" - style="stop-color:black;stop-opacity:0.49803922;" /> - <stop - id="stop3232-2" - offset="1" - style="stop-color:black;stop-opacity:1;" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" - gradientUnits="userSpaceOnUse" - y2="25.991137" - x2="28.357954" - y1="3.4711361" - x1="20.483149" - id="linearGradient3585-2" - xlink:href="#linearGradient3579-2" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3579-2" - inkscape:collect="always"> - <stop - id="stop3581-7" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop3583-0" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="6.727323" - inkscape:cx="28.86207" - inkscape:cy="20.847678" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:grid-bbox="true" - inkscape:document-units="px" - inkscape:window-width="872" - inkscape:window-height="624" - inkscape:window-x="0" - inkscape:window-y="25" - inkscape:window-maximized="0" /> - <metadata - id="metadata2166"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <cc:license - rdf:resource="http://www.gnu.org/copyleft/gpl.html" /> - <dc:title></dc:title> - <dc:date>2006-08-28</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Pierre Ossman <ossman@cendio.se> for Cendio AB</dc:title> - </cc:Agent> - </dc:creator> - <dc:rights> - <cc:Agent> - <dc:title /> - </cc:Agent> - </dc:rights> - <dc:contributor> - <cc:Agent> - <dc:title>Rafael Jannone (basic idea)</dc:title> - </cc:Agent> - </dc:contributor> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Notice" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/ShareAlike" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/SourceCode" /> - </cc:License> - </rdf:RDF> - </metadata> - <g - inkscape:groupmode="layer" - id="layer5" - inkscape:label="Mic" - transform="translate(-1.8065748,-0.0439041)"> - <g - style="display:inline" - id="g306" - transform="matrix(0.49976071,0,0,0.49976071,3.2433793,5.5836561)"> - <g - style="display:inline" - inkscape:label="vectors" - id="layer2"> - <path - transform="matrix(0.727673,0,0,1.235135,7.166344,-12.0556)" - d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" - sodipodi:ry="6.4081554" - sodipodi:rx="12.59534" - sodipodi:cy="36.907261" - sodipodi:cx="23.82066" - id="path3010" - style="opacity:0.1;fill:url(#radialGradient3012-3);fill-opacity:1;stroke:none;display:inline" - sodipodi:type="arc" /> - <path - transform="matrix(1.233813,0,0,1.235135,-4.890235,-6.055598)" - d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" - sodipodi:ry="6.4081554" - sodipodi:rx="12.59534" - sodipodi:cy="36.907261" - sodipodi:cx="23.82066" - id="path4489" - style="opacity:0.7;fill:url(#radialGradient4505-7);fill-opacity:1;stroke:none;display:inline" - sodipodi:type="arc" /> - <path - style="opacity:0.2;fill:none;stroke:url(#linearGradient4473-9);stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" - d="M 32.800044,40.588388 C 24.781634,29.5 47,35.875 46.25,32 45.476667,28.004445 36.399824,30.554499 36.875,26.25 37.336541,22.069018 46.75,23.75 44.625,15" - id="path4471" - sodipodi:nodetypes="czzc" /> - <path - style="fill:none;stroke:url(#linearGradient4460-4);stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" - d="M 32.800044,39.588388 C 24.781634,28.5 47,34.875 46.25,31 45.476667,27.004445 36.399824,29.554499 36.875,25.25 37.336541,21.069018 46.75,22.75 44.625,14" - id="path4172" - sodipodi:nodetypes="czzc" /> - <path - transform="matrix(1.032128,0,0,1.014402,-0.08596444,1.56074)" - d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" - sodipodi:ry="6.4081554" - sodipodi:rx="12.59534" - sodipodi:cy="36.907261" - sodipodi:cx="23.82066" - id="path3683" - style="fill:url(#radialGradient3691-2);fill-opacity:1;stroke:#555753;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" - sodipodi:type="arc" /> - <path - transform="matrix(0.43667,0,0,0.429141,14.09824,21.41158)" - d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" - sodipodi:ry="6.4081554" - sodipodi:rx="12.59534" - sodipodi:cy="36.907261" - sodipodi:cx="23.82066" - id="path2955" - style="fill:url(#radialGradient2971-1);fill-opacity:1;stroke:none;display:inline" - sodipodi:type="arc" /> - <path - sodipodi:nodetypes="ccssccc" - id="path3766" - d="m 27.35249,32.125 c -1.738654,0.735383 -2.545819,2.052948 -3.67816,3.167277 -0.486309,0.3076 -0.5997,0.709446 -0.51965,1.276685 0.08005,0.567243 0.489446,1.055334 1.042146,1.218184 0.552698,0.162848 0.999547,0.130039 1.377887,-0.302139 C 26.676195,35.285524 28.744563,33.983863 31,32.85591 29.870496,32.536987 28.651039,32.264053 27.35249,32.125 z" - style="opacity:0.7;fill:url(#linearGradient3785-7);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" /> - <path - transform="matrix(1.032128,0,0,1.014402,-0.08596444,1.56074)" - d="m 23.8125,31.5 c -3.339495,0 -6.371551,0.683256 -8.46875,1.75 -2.097199,1.066744 -3.125,2.416366 -3.125,3.65625 0,1.239884 1.027801,2.589506 3.125,3.65625 2.097199,1.066744 5.129255,1.750001 8.46875,1.75 3.339495,0 6.371551,-0.683256 8.46875,-1.75 2.097199,-1.066744 3.125,-2.416366 3.125,-3.65625 0,-1.239884 -1.027801,-2.589506 -3.125,-3.65625 C 30.184051,32.183256 27.151995,31.5 23.8125,31.5 z" - id="path3697" - style="opacity:0.4;fill:none;stroke:url(#linearGradient3709-1);stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" - inkscape:original="M 23.8125 30.5 C 16.859872 30.5 11.21875 33.368948 11.21875 36.90625 C 11.21875 40.443552 16.859872 43.312502 23.8125 43.3125 C 30.765128 43.3125 36.406249 40.443552 36.40625 36.90625 C 36.40625 33.368948 30.765128 30.5 23.8125 30.5 z " - inkscape:radius="-0.99470079" - sodipodi:type="inkscape:offset" /> - <path - sodipodi:nodetypes="cc" - id="path3589" - d="m 24.5,27.5 0,9" - style="fill:none;stroke:url(#linearGradient3732-0);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> - <path - sodipodi:nodetypes="csc" - id="path2781" - d="m 34.500008,18.999997 c -8e-6,4.285711 -4.46,7.500001 -10.000002,7.500001 -5.540002,0 -10.000006,-3.21429 -10.000003,-7.500001" - style="fill:none;stroke:#888a85;stroke-width:3.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - y="16.499998" - x="12.5" - height="2.9999995" - width="4" - id="rect2783" - style="fill:url(#linearGradient3801-5);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> - <rect - y="16.499998" - x="32.5" - height="2.9999995" - width="4" - id="rect3803" - style="fill:url(#linearGradient3805-2);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> - <path - sodipodi:nodetypes="csc" - id="rect1882" - d="m 34.500008,18.999991 c 0,4.28571 -4.46,7.500001 -10.000002,7.500001 -5.540002,0 -10.000006,-3.214291 -10.000003,-7.500001" - style="fill:none;stroke:url(#linearGradient2987-1);stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - ry="0.9722718" - rx="0.9722718" - y="15" - x="30" - height="6" - width="3.0000005" - id="rect2951" - style="fill:url(#linearGradient2953-8);fill-opacity:1;stroke:none;display:inline" /> - <path - transform="matrix(1.5,0,0,1.5,12.25,-11.25)" - d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="19" - sodipodi:cx="14" - id="path3825" - style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline" - sodipodi:type="arc" /> - <rect - ry="0.9722718" - rx="0.9722718" - y="15" - x="16" - height="6" - width="3.0000005" - id="rect2787" - style="fill:url(#linearGradient2949-0);fill-opacity:1;stroke:none;display:inline" /> - <rect - ry="7.0108709" - rx="7.0000019" - y="1.5000002" - x="17.499996" - height="24.000008" - width="14.000004" - id="rect1880" - style="fill:url(#linearGradient2902-2);fill-opacity:1;stroke:url(#linearGradient4487-4);stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <path - sodipodi:nodetypes="cc" - id="path3587" - d="m 24.5,26.5 0,10" - style="fill:none;stroke:url(#linearGradient3740-9);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> - <path - transform="matrix(1.5,0,0,1.5,-7.75,-11.25)" - d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="19" - sodipodi:cx="14" - id="path3823" - style="fill:#ffffff;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - <g - id="g3270" - inkscape:label="Shadow" - transform="translate(-9.25,46.68088)" /> - <g - transform="translate(-9.25,61.74691)" - inkscape:label="Shadow" - id="g2611" /> - <g - transform="translate(-9.25,61.74691)" - style="display:inline" - inkscape:label="Lavoro" - id="g2613" /> - <g - id="g2885"> - <rect - style="fill:url(#linearGradient2890-1);fill-opacity:1;stroke:none;display:inline" - id="rect1975" - width="4" - height="15.374996" - x="20" - y="6" - rx="2" - ry="2.1991496" /> - <path - sodipodi:type="inkscape:offset" - inkscape:radius="-0.54470092" - inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z " - style="opacity:0.2;fill:url(#linearGradient2892-0);fill-opacity:1;stroke:none;display:inline" - id="path3811" - d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,10 c 0,3.592133 2.882528,6.46875 6.46875,6.46875 3.586222,0 6.46875,-2.876617 6.46875,-6.46875 l 0,-10 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z" - transform="translate(0,-1)" /> - <path - sodipodi:type="arc" - style="fill:url(#linearGradient2894-9);fill-opacity:1;stroke:none" - id="path2875" - sodipodi:cx="23.65625" - sodipodi:cy="7.6875" - sodipodi:rx="3.34375" - sodipodi:ry="3.0625" - d="M 27,7.6875 C 27,9.378872 25.502952,10.75 23.65625,10.75 21.809548,10.75 20.3125,9.378872 20.3125,7.6875 20.3125,5.996128 21.809548,4.625 23.65625,4.625 25.502952,4.625 27,5.996128 27,7.6875 z" - transform="matrix(1,0,0,1.081633,-0.375,-1.252551)" /> - </g> - <path - sodipodi:nodetypes="cccccc" - id="path2916" - d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,5 12.9375,0 0,-5 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z" - style="opacity:0.9;fill:url(#radialGradient2926-4);fill-opacity:1;stroke:none;display:inline" - transform="translate(0,-1)" /> - </g> - <g - style="display:inline" - inkscape:label="buchi" - id="layer3"> - <path - sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc" - id="path2902" - d="M 22.5,3 C 22.224,3 22,3.224 22,3.5 22,3.776 22.224,4 22.5,4 22.776,4 23,3.776 23,3.5 23,3.224 22.776,3 22.5,3 z m 2,0 C 24.224,3 24,3.224 24,3.5 24,3.776 24.224,4 24.5,4 24.776,4 25,3.776 25,3.5 25,3.224 24.776,3 24.5,3 z m 2,0 C 26.224,3 26,3.224 26,3.5 26,3.776 26.224,4 26.5,4 26.776,4 27,3.776 27,3.5 27,3.224 26.776,3 26.5,3 z m -5,1 C 21.224,4 21,4.224 21,4.5 21,4.776 21.224,5 21.5,5 21.776,5 22,4.776 22,4.5 22,4.224 21.776,4 21.5,4 z m 2,0 C 23.224,4 22.999999,4.2240007 23,4.5 23,4.7759993 23.223999,5 23.5,5 23.776,5 24,4.7759993 24,4.5 24,4.2240007 23.776,4 23.5,4 z m 2,0 C 25.224,4 24.999999,4.2240007 25,4.5 25,4.7759993 25.223999,5 25.5,5 25.776,5 26,4.7759993 26,4.5 26,4.2240007 25.776,4 25.5,4 z m 2,0 C 27.224,4 27,4.224 27,4.5 27,4.776 27.224,5 27.5,5 27.776,5 28,4.776 28,4.5 28,4.224 27.776,4 27.5,4 z m -7,1 C 20.224,5 19.999999,5.2240008 20,5.5 20,5.7759993 20.223999,6 20.5,6 20.776,6 21,5.7759994 21,5.5 21,5.2240007 20.776,5 20.5,5 z m 2,0 C 22.224,5 21.999999,5.2240008 22,5.5 22,5.7759993 22.223999,6 22.5,6 22.776,6 23,5.7759994 23,5.5 23,5.2240007 22.776,5 22.5,5 z m 2,0 C 24.224,5 23.999999,5.2240008 24,5.5 24,5.7759993 24.223999,6 24.5,6 24.776,6 25,5.7759994 25,5.5 25,5.2240007 24.776,5 24.5,5 z m 2,0 C 26.224,5 25.999999,5.2240008 26,5.5 26,5.7759993 26.223999,6 26.5,6 26.776,6 27,5.7759994 27,5.5 27,5.2240007 26.776,5 26.5,5 z m 2,0 C 28.224,5 28,5.224 28,5.5 28,5.776 28.224,6 28.5,6 28.776,6 29,5.776 29,5.5 29,5.224 28.776,5 28.5,5 z m -9,1 C 19.224,6 18.999999,6.2240008 19,6.5 19,6.7759993 19.223999,7 19.5,7 19.776,7 20,6.7759994 20,6.5 20,6.2240007 19.776,6 19.5,6 z m 2,0 C 21.224,6 20.999999,6.2240008 21,6.5 21,6.7759993 21.223999,7 21.5,7 21.776,7 22,6.7759994 22,6.5 22,6.2240007 21.776,6 21.5,6 z m 2,0 C 23.224,6 22.999999,6.2240008 23,6.5 23,6.7759993 23.223999,7 23.5,7 23.776,7 24,6.7759994 24,6.5 24,6.2240007 23.776,6 23.5,6 z m 2,0 C 25.224,6 24.999999,6.2240008 25,6.5 25,6.7759993 25.223999,7 25.5,7 25.776,7 26,6.7759994 26,6.5 26,6.2240007 25.776,6 25.5,6 z m 2,0 C 27.224,6 26.999999,6.2240008 27,6.5 27,6.7759993 27.223999,7 27.5,7 27.776,7 28,6.7759994 28,6.5 28,6.2240007 27.776,6 27.5,6 z m 2,0 C 29.224,6 29,6.224 29,6.5 29,6.776 29.224,7 29.5,7 29.776,7 30,6.776 30,6.5 30,6.224 29.776,6 29.5,6 z m -9,1 C 20.224,7 19.999999,7.2240008 20,7.5 20,7.7759993 20.223999,8.0000002 20.5,8 20.776,8 21,7.7759994 21,7.5 21,7.2240007 20.776,7 20.5,7 z m 2,0 C 22.224,7 21.999999,7.2240008 22,7.5 22,7.7759993 22.223999,8.0000002 22.5,8 22.776,8 23,7.7759994 23,7.5 23,7.2240007 22.776,7 22.5,7 z m 2,0 C 24.224,7 23.999999,7.2240008 24,7.5 24,7.7759993 24.223999,8.0000002 24.5,8 24.776,8 25,7.7759994 25,7.5 25,7.2240007 24.776,7 24.5,7 z m 2,0 C 26.224,7 25.999999,7.2240008 26,7.5 26,7.7759993 26.223999,8.0000002 26.5,8 26.776,8 27,7.7759994 27,7.5 27,7.2240007 26.776,7 26.5,7 z m 2,0 C 28.224,7 27.999999,7.2240008 28,7.5 28,7.7759993 28.223999,8.0000002 28.5,8 28.776,8 29,7.7759994 29,7.5 29,7.2240007 28.776,7 28.5,7 z m 2,0 C 30.224,7 30,7.224 30,7.5 30,7.776 30.224,8 30.5,8 30.776,8 31,7.776 31,7.5 31,7.224 30.776,7 30.5,7 z m -11,1 C 19.224,8 18.999999,8.2240008 19,8.5 19,8.7759993 19.223999,9 19.5,9 19.776,9 20,8.7759994 20,8.5 20,8.2240007 19.776,8 19.5,8 z m 2,0 C 21.224,8 20.999999,8.2240008 21,8.5 21,8.7759993 21.223999,9 21.5,9 21.776,9 22,8.7759994 22,8.5 22,8.2240007 21.776,8 21.5,8 z m 2,0 C 23.224,8 22.999999,8.2240008 23,8.5 23,8.7759993 23.223999,9 23.5,9 23.776,9 24,8.7759994 24,8.5 24,8.2240007 23.776,8 23.5,8 z m 2,0 C 25.224,8 24.999999,8.2240008 25,8.5 25,8.7759993 25.223999,9 25.5,9 25.776,9 26,8.7759994 26,8.5 26,8.2240007 25.776,8 25.5,8 z m 2,0 C 27.224,8 26.999999,8.2240008 27,8.5 27,8.7759993 27.223999,9 27.5,9 27.776,9 28,8.7759994 28,8.5 28,8.2240007 27.776,8 27.5,8 z m 2,0 C 29.224,8 28.999999,8.2240008 29,8.5 29,8.7759993 29.223999,9 29.5,9 29.776,9 30,8.7759994 30,8.5 30,8.2240007 29.776,8 29.5,8 z m -11,1 C 18.224,9 17.999999,9.224001 18,9.5 18,9.775999 18.223999,10 18.5,10 18.776,10 19,9.775999 19,9.5 19,9.224001 18.776,9 18.5,9 z m 2,0 C 20.224,9 19.999999,9.224001 20,9.5 20,9.775999 20.223999,10 20.5,10 20.776,10 21,9.775999 21,9.5 21,9.224001 20.776,9 20.5,9 z m 2,0 C 22.224,9 21.999999,9.224001 22,9.5 22,9.775999 22.223999,10 22.5,10 22.776,10 23,9.775999 23,9.5 23,9.224001 22.776,9 22.5,9 z m 2,0 C 24.224,9 23.999999,9.224001 24,9.5 24,9.775999 24.223999,10 24.5,10 24.776,10 25,9.775999 25,9.5 25,9.224001 24.776,9 24.5,9 z m 2,0 C 26.224,9 25.999999,9.224001 26,9.5 26,9.775999 26.223999,10 26.5,10 26.776,10 27,9.775999 27,9.5 27,9.224001 26.776,9 26.5,9 z m 2,0 C 28.224,9 27.999999,9.224001 28,9.5 28,9.775999 28.223999,10 28.5,10 28.776,10 29,9.775999 29,9.5 29,9.224001 28.776,9 28.5,9 z m 2,0 C 30.224,9 30,9.224 30,9.5 30,9.776 30.224,10 30.5,10 30.776,10 31,9.776 31,9.5 31,9.224 30.776,9 30.5,9 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,11 20,10.775999 20,10.5 20,10.224001 19.776,10 19.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,11 22,10.775999 22,10.5 22,10.224001 21.776,10 21.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,11 24,10.775999 24,10.5 24,10.224001 23.776,10 23.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,11 26,10.775999 26,10.5 26,10.224001 25.776,10 25.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,11 28,10.775999 28,10.5 28,10.224001 27.776,10 27.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,11 30,10.775999 30,10.5 30,10.224001 29.776,10 29.5,10 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,12 19,11.775999 19,11.5 19,11.224001 18.776,11 18.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,12 21,11.775999 21,11.5 21,11.224001 20.776,11 20.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,12 23,11.775999 23,11.5 23,11.224001 22.776,11 22.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,12 25,11.775999 25,11.5 25,11.224001 24.776,11 24.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,12 27,11.775999 27,11.5 27,11.224001 26.776,11 26.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,12 29,11.775999 29,11.5 29,11.224001 28.776,11 28.5,11 z m 2,0 C 30.224,11 30,11.224 30,11.5 30,11.776 30.224,12 30.5,12 30.776,12 31,11.776 31,11.5 31,11.224 30.776,11 30.5,11 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,13 20,12.775999 20,12.5 20,12.224001 19.776,12 19.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,13 22,12.775999 22,12.5 22,12.224001 21.776,12 21.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,13 24,12.775999 24,12.5 24,12.224001 23.776,12 23.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,13 26,12.775999 26,12.5 26,12.224001 25.776,12 25.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,13 28,12.775999 28,12.5 28,12.224001 27.776,12 27.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,13 30,12.775999 30,12.5 30,12.224001 29.776,12 29.5,12 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,14 19,13.775999 19,13.5 19,13.224001 18.776,13 18.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,14 21,13.775999 21,13.5 21,13.224001 20.776,13 20.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,14 23,13.775999 23,13.5 23,13.224001 22.776,13 22.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,14 25,13.775999 25,13.5 25,13.224001 24.776,13 24.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,14 27,13.775999 27,13.5 27,13.224001 26.776,13 26.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,14 29,13.775999 29,13.5 29,13.224001 28.776,13 28.5,13 z m 2,0 C 30.224,13 30,13.224 30,13.5 30,13.776 30.224,14 30.5,14 30.776,14 31,13.776 31,13.5 31,13.224 30.776,13 30.5,13 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,15 20,14.775999 20,14.5 20,14.224001 19.776,14 19.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,15 22,14.775999 22,14.5 22,14.224001 21.776,14 21.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,15 24,14.775999 24,14.5 24,14.224001 23.776,14 23.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,15 26,14.775999 26,14.5 26,14.224001 25.776,14 25.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,15 28,14.775999 28,14.5 28,14.224001 27.776,14 27.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,15 30,14.775999 30,14.5 30,14.224001 29.776,14 29.5,14 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,16 19,15.775999 19,15.5 19,15.224001 18.776,15 18.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,16 21,15.775999 21,15.5 21,15.224001 20.776,15 20.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,16 23,15.775999 23,15.5 23,15.224001 22.776,15 22.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,16 25,15.775999 25,15.5 25,15.224001 24.776,15 24.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,16 27,15.775999 27,15.5 27,15.224001 26.776,15 26.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,16 29,15.775999 29,15.5 29,15.224001 28.776,15 28.5,15 z m 2,0 C 30.224,15 30,15.224 30,15.5 30,15.776 30.224,16 30.5,16 30.776,16 31,15.776 31,15.5 31,15.224 30.776,15 30.5,15 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,17 20,16.776 20,16.5 20,16.224001 19.776,16 19.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,17 22,16.776 22,16.5 22,16.224001 21.776,16 21.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,17 24,16.776 24,16.5 24,16.224001 23.776,16 23.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,17 26,16.776 26,16.5 26,16.224001 25.776,16 25.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,17 28,16.776 28,16.5 28,16.224001 27.776,16 27.5,16 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,17 30,16.775999 30,16.5 30,16.224001 29.776,16 29.5,16 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,18 19,17.776 19,17.5 19,17.224001 18.776,17 18.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,18 21,17.776 21,17.5 21,17.224001 20.776,17 20.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,18 23,17.776 23,17.5 23,17.224001 22.776,17 22.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,18 25,17.776 25,17.5 25,17.224001 24.776,17 24.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,18 27,17.776 27,17.5 27,17.224001 26.776,17 26.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,18 29,17.776 29,17.5 29,17.224001 28.776,17 28.5,17 z m 2,0 C 30.224,17 30,17.224 30,17.5 30,17.776 30.224,18 30.5,18 30.776,18 31,17.776 31,17.5 31,17.224 30.776,17 30.5,17 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,19 20,18.776 20,18.5 20,18.224001 19.776,18 19.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,19 22,18.776 22,18.5 22,18.224001 21.776,18 21.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,19 24,18.776 24,18.5 24,18.224001 23.776,18 23.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,19 26,18.776 26,18.5 26,18.224001 25.776,18 25.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,19 28,18.776 28,18.5 28,18.224001 27.776,18 27.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,19 30,18.776 30,18.5 30,18.224001 29.776,18 29.5,18 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 18.776,20 19,19.776 19,19.5 19,19.224001 18.776,19 18.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 20.776,20 21,19.776 21,19.5 21,19.224001 20.776,19 20.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,20 23,19.776 23,19.5 23,19.224001 22.776,19 22.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,20 25,19.776 25,19.5 25,19.224001 24.776,19 24.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,20 27,19.776 27,19.5 27,19.224001 26.776,19 26.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 28.776,20 29,19.776 29,19.5 29,19.224001 28.776,19 28.5,19 z m 2,0 C 30.224,19 30,19.224 30,19.5 30,19.776 30.224,20 30.5,20 30.776,20 31,19.776 31,19.5 31,19.224 30.776,19 30.5,19 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 19.776,21 20,20.776 20,20.5 20,20.224001 19.776,20 19.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 21.776,21 22,20.776 22,20.5 22,20.224001 21.776,20 21.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,21 24,20.776 24,20.5 24,20.224001 23.776,20 23.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,21 26,20.776 26,20.5 26,20.224001 25.776,20 25.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 27.776,21 28,20.776 28,20.5 28,20.224001 27.776,20 27.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 29.776,21 30,20.776 30,20.5 30,20.224001 29.776,20 29.5,20 z m -9,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 20.776,22 21,21.776 21,21.5 21,21.224001 20.776,21 20.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,22 23,21.776 23,21.5 23,21.224001 22.776,21 22.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,22 25,21.776 25,21.5 25,21.224001 24.776,21 24.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,22 27,21.776 27,21.5 27,21.224001 26.776,21 26.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 28.776,22 29,21.776 29,21.5 29,21.224001 28.776,21 28.5,21 z m -7,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 21.776,23 22,22.776 22,22.5 22,22.224001 21.776,22 21.5,22 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,23 24,22.776 24,22.5 24,22.224001 23.776,22 23.5,22 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,23 26,22.776 26,22.5 26,22.224001 25.776,22 25.5,22 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 27.776,23 28,22.776 28,22.5 28,22.224001 27.776,22 27.5,22 z m -5,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,24 23,23.776 23,23.5 23,23.224001 22.776,23 22.5,23 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,24 25,23.776 25,23.5 25,23.224001 24.776,23 24.5,23 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,24 27,23.776 27,23.5 27,23.224001 26.776,23 26.5,23 z m -3,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,25 24,24.776 24,24.5 24,24.224001 23.776,24 23.5,24 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,25 26,24.776 26,24.5 26,24.224001 25.776,24 25.5,24 z" - style="opacity:0.5;fill:url(#linearGradient3567-4);fill-opacity:1;stroke:none;display:inline" /> - <rect - ry="6.0500031" - rx="6.0000024" - y="2.5000026" - x="18.500008" - height="22.000008" - width="12.000005" - id="rect3575" - style="fill:none;stroke:url(#linearGradient3585-2);stroke-width:1.0000006;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> - </g> - </g> - </g> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer" - transform="translate(-11.455575,-6.2799821)" - style="display:inline"> - <g - id="g781" - transform="matrix(0.88131313,0,0,0.88131313,2.9517844,0.78404468)"> - <path - style="fill:#729fcf;fill-opacity:1;stroke:none" - d="m 22.365786,11.528391 c -4.16858,1.106752 -7.242777,4.906525 -7.242774,9.421848 0,4.51531 3.074196,8.318988 7.242774,9.42574 -3.007226,-1.349598 -5.168955,-5.062913 -5.168955,-9.42574 -1e-6,-4.362815 2.161728,-8.07225 5.168955,-9.421848 z m 5.009131,0 c 3.007227,1.349598 5.168955,5.059021 5.168955,9.421848 0,4.362827 -2.161729,8.076142 -5.168955,9.42574 4.16858,-1.106752 7.242777,-4.91043 7.242774,-9.42574 0,-4.515311 -3.074193,-8.315096 -7.242774,-9.421848 z" - id="path2419" /> - <path - id="path2421" - d="M 20.959247,6.236078 C 14.449633,7.9643721 9.6489964,13.898061 9.6490002,20.949142 c 0,7.05107 4.8006348,12.990862 11.3102468,14.719148 -4.696056,-2.107524 -8.071791,-7.906196 -8.071791,-14.719148 -2e-6,-6.812926 3.375734,-12.6055448 8.071791,-14.713064 z m 7.82221,0 c 4.696057,2.1075192 8.07179,7.900118 8.07179,14.713064 0,6.812952 -3.375735,12.611624 -8.07179,14.719148 6.509614,-1.728286 11.31025,-7.668078 11.310246,-14.719148 0,-7.051061 -4.80063,-12.9847699 -11.310246,-14.713064 z" - style="fill:#729fcf;fill-opacity:1;stroke:none" /> - </g> - <text - xml:space="preserve" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" - x="39.743385" - y="34.479111" - id="text2991" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan2993" - x="39.743385" - y="34.479111" - style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Engebrechtre;-inkscape-font-specification:Engebrechtre">PulseCaster</tspan></text> - </g> - <g - inkscape:groupmode="layer" - id="layer4" - inkscape:label="center" - style="display:none" - transform="translate(-1.8065748,-0.0439041)"> - <path - transform="matrix(0.2091112,0,0,0.2091112,15.430463,-165.87494)" - d="m 22,863.61249 c 0,12.70255 -10.297451,23 -23,23 -12.702549,0 -23,-10.29745 -23,-23 0,-12.70255 10.297451,-23 23,-23 12.702549,0 23,10.29745 23,23 z" - sodipodi:ry="23" - sodipodi:rx="23" - sodipodi:cy="863.61249" - sodipodi:cx="-1" - id="path2417" - style="fill:#729fcf;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - </g> -</svg> diff --git a/pulsecaster/data/icons/scalable/pulsecaster.svg b/pulsecaster/data/icons/scalable/pulsecaster.svg deleted file mode 100644 index b15a05c..0000000 --- a/pulsecaster/data/icons/scalable/pulsecaster.svg +++ /dev/null @@ -1,1043 +0,0 @@ -<?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: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" - width="30.442703" - height="29.432213" - id="svg2161" - sodipodi:version="0.32" - inkscape:version="0.46+devel" - sodipodi:docname="pulseaudio.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - version="1.0"> - <defs - id="defs2163"> - <inkscape:perspective - sodipodi:type="inkscape:persp3d" - inkscape:vp_x="0 : 24 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_z="48 : 24 : 1" - inkscape:persp3d-origin="24 : 16 : 1" - id="perspective69" /> - <linearGradient - id="linearGradient3093"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3095" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop3097" /> - </linearGradient> - <linearGradient - id="linearGradient2503"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop2505" /> - <stop - style="stop-color:#141413;stop-opacity:1;" - offset="1" - id="stop2507" /> - </linearGradient> - <linearGradient - id="linearGradient2495"> - <stop - style="stop-color:#0a0a09;stop-opacity:1;" - offset="0" - id="stop2497" /> - <stop - style="stop-color:#282927;stop-opacity:1;" - offset="1" - id="stop2499" /> - </linearGradient> - <linearGradient - id="linearGradient2535"> - <stop - id="stop2537" - offset="0" - style="stop-color:#ffffff;stop-opacity:0.36078432;" /> - <stop - id="stop2539" - offset="1" - style="stop-color:#ffffff;stop-opacity:0;" /> - </linearGradient> - <linearGradient - id="linearGradient3072"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop3074" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3076" /> - </linearGradient> - <linearGradient - id="linearGradient3228"> - <stop - id="stop3230" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - style="stop-color:black;stop-opacity:0.42857143;" - offset="0.06770357" - id="stop3573" /> - <stop - style="stop-color:black;stop-opacity:0;" - offset="0.29894069" - id="stop3569" /> - <stop - id="stop3571" - offset="0.77437174" - style="stop-color:black;stop-opacity:0.49803922;" /> - <stop - id="stop3232" - offset="1" - style="stop-color:black;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient3726"> - <stop - id="stop3728" - offset="0" - style="stop-color:#555753;stop-opacity:1" /> - <stop - id="stop3730" - offset="1" - style="stop-color:#888a85;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient3734"> - <stop - id="stop3736" - offset="0" - style="stop-color:#babdb6;stop-opacity:1" /> - <stop - id="stop3738" - offset="1" - style="stop-color:white;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient3795"> - <stop - id="stop3797" - offset="0" - style="stop-color:white;stop-opacity:1" /> - <stop - id="stop3799" - offset="1" - style="stop-color:#eeeeec;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient4481"> - <stop - id="stop4483" - offset="0" - style="stop-color:#555753;stop-opacity:1;" /> - <stop - id="stop4485" - offset="1" - style="stop-color:#babdb6;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient2943"> - <stop - id="stop2945" - offset="0" - style="stop-color:#555753;stop-opacity:1" /> - <stop - id="stop2947" - offset="1" - style="stop-color:#2e3436;stop-opacity:1;" /> - </linearGradient> - <linearGradient - id="linearGradient2981"> - <stop - id="stop2983" - offset="0" - style="stop-color:#eeeeec;stop-opacity:1;" /> - <stop - id="stop2985" - offset="1" - style="stop-color:white;stop-opacity:1" /> - </linearGradient> - <linearGradient - id="linearGradient2904"> - <stop - style="stop-color:#babdb6;stop-opacity:1" - offset="0" - id="stop2906" /> - <stop - id="stop2910" - offset="0.21551724" - style="stop-color:white;stop-opacity:1;" /> - <stop - style="stop-color:#c3c4c2;stop-opacity:1;" - offset="0.70243758" - id="stop2912" /> - <stop - style="stop-color:#888a85;stop-opacity:1" - offset="1" - id="stop2908" /> - </linearGradient> - <inkscape:perspective - id="perspective215" - inkscape:persp3d-origin="24 : 16 : 1" - inkscape:vp_z="48 : 24 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_x="0 : 24 : 1" - sodipodi:type="inkscape:persp3d" /> - <inkscape:perspective - id="perspective350" - inkscape:persp3d-origin="0.5 : 0.33333333 : 1" - inkscape:vp_z="1 : 0.5 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_x="0 : 0.5 : 1" - sodipodi:type="inkscape:persp3d" /> - <inkscape:perspective - id="perspective374" - inkscape:persp3d-origin="0.5 : 0.33333333 : 1" - inkscape:vp_z="1 : 0.5 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_x="0 : 0.5 : 1" - sodipodi:type="inkscape:persp3d" /> - <radialGradient - r="12.59534" - fy="36.907261" - fx="23.82066" - cy="36.907261" - cx="23.82066" - gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" - gradientUnits="userSpaceOnUse" - id="radialGradient3012-3" - xlink:href="#linearGradient4499-8" - inkscape:collect="always" /> - <linearGradient - id="linearGradient4499-8" - inkscape:collect="always"> - <stop - id="stop4501-0" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - id="stop4503-9" - offset="1" - style="stop-color:black;stop-opacity:0;" /> - </linearGradient> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" - r="12.59534" - fy="36.907261" - fx="23.82066" - cy="36.907261" - cx="23.82066" - id="radialGradient4505-7" - xlink:href="#linearGradient4499-8" - inkscape:collect="always" /> - <linearGradient - y2="5.5441942" - x2="32.864544" - y1="13.794194" - x1="32.864544" - gradientTransform="translate(-0.25,13.5)" - gradientUnits="userSpaceOnUse" - id="linearGradient4473-9" - xlink:href="#linearGradient4475-9" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - id="linearGradient4475-9"> - <stop - style="stop-color:black;stop-opacity:1" - offset="0" - id="stop4477-3" /> - <stop - style="stop-color:black;stop-opacity:0" - offset="1" - id="stop4479-2" /> - </linearGradient> - <linearGradient - gradientTransform="translate(-0.25,12.5)" - y2="5.5441942" - x2="32.864544" - y1="13.794194" - x1="32.864544" - gradientUnits="userSpaceOnUse" - id="linearGradient4460-4" - xlink:href="#linearGradient4465-3" - inkscape:collect="always" /> - <linearGradient - id="linearGradient4465-3" - inkscape:collect="always"> - <stop - id="stop4467-7" - offset="0" - style="stop-color:#2e3436;stop-opacity:1" /> - <stop - id="stop4469-1" - offset="1" - style="stop-color:#2e3436;stop-opacity:0" /> - </linearGradient> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" - r="13.08399" - fy="40.578671" - fx="18.753521" - cy="40.578671" - cx="18.753521" - id="radialGradient3691-2" - xlink:href="#linearGradient3711-2" - inkscape:collect="always" /> - <linearGradient - inkscape:collect="always" - id="linearGradient3711-2"> - <stop - style="stop-color:#babdb6;stop-opacity:1" - offset="0" - id="stop3713-0" /> - <stop - style="stop-color:#888a85;stop-opacity:1" - offset="1" - id="stop3715-2" /> - </linearGradient> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" - r="12.59534" - fy="36.907261" - fx="23.82066" - cy="36.907261" - cx="23.82066" - id="radialGradient2971-1" - xlink:href="#linearGradient2965-7" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2965-7" - inkscape:collect="always"> - <stop - id="stop2967-5" - offset="0" - style="stop-color:#888a85;stop-opacity:1;" /> - <stop - id="stop2969-1" - offset="1" - style="stop-color:#888a85;stop-opacity:0;" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" - gradientUnits="userSpaceOnUse" - y2="32.355263" - x2="29.74268" - y1="37.835339" - x1="23.997437" - id="linearGradient3785-7" - xlink:href="#linearGradient3779-4" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3779-4" - inkscape:collect="always"> - <stop - id="stop3781-1" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - id="stop3783-7" - offset="1" - style="stop-color:black;stop-opacity:0;" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="28.590008" - x2="27.272261" - y1="41.836731" - x1="23.8125" - id="linearGradient3709-1" - xlink:href="#linearGradient3703-1" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3703-1" - inkscape:collect="always"> - <stop - id="stop3705-1" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop3707-7" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <linearGradient - gradientTransform="translate(0,-1)" - gradientUnits="userSpaceOnUse" - y2="30.421146" - x2="23.640165" - y1="36.722809" - x1="25.606806" - id="linearGradient3732-0" - xlink:href="#linearGradient3726-4" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3726-4"> - <stop - id="stop3728-0" - offset="0" - style="stop-color:#555753;stop-opacity:1" /> - <stop - id="stop3730-8" - offset="1" - style="stop-color:#888a85;stop-opacity:1" /> - </linearGradient> - <linearGradient - gradientTransform="translate(0,-1)" - gradientUnits="userSpaceOnUse" - y2="19.231655" - x2="13.567612" - y1="18.432873" - x1="13.567612" - id="linearGradient3801-5" - xlink:href="#linearGradient3795-1" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3795-1"> - <stop - id="stop3797-6" - offset="0" - style="stop-color:white;stop-opacity:1" /> - <stop - id="stop3799-6" - offset="1" - style="stop-color:#eeeeec;stop-opacity:1;" /> - </linearGradient> - <linearGradient - gradientTransform="translate(20,-1)" - y2="19.231655" - x2="13.567612" - y1="18.432873" - x1="13.567612" - gradientUnits="userSpaceOnUse" - id="linearGradient3805-2" - xlink:href="#linearGradient3795-1" - inkscape:collect="always" /> - <linearGradient - id="linearGradient422"> - <stop - id="stop424" - offset="0" - style="stop-color:white;stop-opacity:1" /> - <stop - id="stop426" - offset="1" - style="stop-color:#eeeeec;stop-opacity:1;" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" - gradientUnits="userSpaceOnUse" - y2="25.229111" - x2="21.649811" - y1="19.452076" - x1="23.374121" - id="linearGradient2987-1" - xlink:href="#linearGradient2981-9" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2981-9"> - <stop - id="stop2983-6" - offset="0" - style="stop-color:#eeeeec;stop-opacity:1;" /> - <stop - id="stop2985-4" - offset="1" - style="stop-color:white;stop-opacity:1" /> - </linearGradient> - <linearGradient - gradientTransform="translate(14,0)" - y2="20.381033" - x2="16.65625" - y1="16.14632" - x1="16.65625" - gradientUnits="userSpaceOnUse" - id="linearGradient2953-8" - xlink:href="#linearGradient2943-0" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2943-0"> - <stop - id="stop2945-8" - offset="0" - style="stop-color:#555753;stop-opacity:1" /> - <stop - id="stop2947-1" - offset="1" - style="stop-color:#2e3436;stop-opacity:1;" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="20.381033" - x2="16.65625" - y1="16.14632" - x1="16.65625" - id="linearGradient2949-0" - xlink:href="#linearGradient2943-0" - inkscape:collect="always" /> - <linearGradient - id="linearGradient437"> - <stop - id="stop439" - offset="0" - style="stop-color:#555753;stop-opacity:1" /> - <stop - id="stop441" - offset="1" - style="stop-color:#2e3436;stop-opacity:1;" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="13.351768" - x2="30.230837" - y1="13.351768" - x1="18.737373" - id="linearGradient2902-2" - xlink:href="#linearGradient2904-2" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2904-2"> - <stop - style="stop-color:#babdb6;stop-opacity:1" - offset="0" - id="stop2906-9" /> - <stop - id="stop2910-7" - offset="0.21551724" - style="stop-color:white;stop-opacity:1;" /> - <stop - style="stop-color:#c3c4c2;stop-opacity:1;" - offset="0.70243758" - id="stop2912-5" /> - <stop - style="stop-color:#888a85;stop-opacity:1" - offset="1" - id="stop2908-6" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="5.125" - x2="17.625" - y1="20.814491" - x1="17.625" - id="linearGradient4487-4" - xlink:href="#linearGradient4481-6" - inkscape:collect="always" /> - <linearGradient - id="linearGradient4481-6"> - <stop - id="stop4483-3" - offset="0" - style="stop-color:#555753;stop-opacity:1;" /> - <stop - id="stop4485-7" - offset="1" - style="stop-color:#babdb6;stop-opacity:1" /> - </linearGradient> - <linearGradient - gradientTransform="translate(0,-1)" - gradientUnits="userSpaceOnUse" - y2="28.617105" - x2="24.6875" - y1="36.75" - x1="24.6875" - id="linearGradient3740-9" - xlink:href="#linearGradient3734-7" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3734-7"> - <stop - id="stop3736-4" - offset="0" - style="stop-color:#babdb6;stop-opacity:1" /> - <stop - id="stop3738-9" - offset="1" - style="stop-color:white;stop-opacity:1" /> - </linearGradient> - <linearGradient - y2="10.76408" - x2="23.176371" - y1="10.76408" - x1="19.583334" - gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" - gradientUnits="userSpaceOnUse" - id="linearGradient2890-1" - xlink:href="#linearGradient2867-7" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2867-7" - inkscape:collect="always"> - <stop - id="stop2869-0" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop2871-6" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <linearGradient - y2="15.94703" - x2="23.246162" - y1="24.761473" - x1="23.246162" - gradientUnits="userSpaceOnUse" - id="linearGradient2892-0" - xlink:href="#linearGradient3815-8" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3815-8" - inkscape:collect="always"> - <stop - id="stop3817-5" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - id="stop3819-3" - offset="1" - style="stop-color:black;stop-opacity:0;" /> - </linearGradient> - <linearGradient - y2="10.75" - x2="24.508121" - y1="6.3608937" - x1="21.961548" - gradientUnits="userSpaceOnUse" - id="linearGradient2894-9" - xlink:href="#linearGradient2877-4" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2877-4" - inkscape:collect="always"> - <stop - id="stop2879-1" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop2881-5" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" - r="6.46875" - fy="10.432782" - fx="22.553526" - cy="10.432782" - cx="22.553526" - id="radialGradient2926-4" - xlink:href="#linearGradient2920-1" - inkscape:collect="always" /> - <linearGradient - id="linearGradient2920-1" - inkscape:collect="always"> - <stop - id="stop2922-5" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop2924-5" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - <linearGradient - gradientTransform="translate(0,3)" - y2="10.081399" - x2="30" - y1="10.081399" - x1="17.999674" - gradientUnits="userSpaceOnUse" - id="linearGradient3567-4" - xlink:href="#linearGradient3228-9" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3228-9"> - <stop - id="stop3230-8" - offset="0" - style="stop-color:black;stop-opacity:1;" /> - <stop - style="stop-color:black;stop-opacity:0.42857143;" - offset="0.06770357" - id="stop3573-3" /> - <stop - style="stop-color:black;stop-opacity:0;" - offset="0.29894069" - id="stop3569-8" /> - <stop - id="stop3571-5" - offset="0.77437174" - style="stop-color:black;stop-opacity:0.49803922;" /> - <stop - id="stop3232-2" - offset="1" - style="stop-color:black;stop-opacity:1;" /> - </linearGradient> - <linearGradient - gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" - gradientUnits="userSpaceOnUse" - y2="25.991137" - x2="28.357954" - y1="3.4711361" - x1="20.483149" - id="linearGradient3585-2" - xlink:href="#linearGradient3579-2" - inkscape:collect="always" /> - <linearGradient - id="linearGradient3579-2" - inkscape:collect="always"> - <stop - id="stop3581-7" - offset="0" - style="stop-color:white;stop-opacity:1;" /> - <stop - id="stop3583-0" - offset="1" - style="stop-color:white;stop-opacity:0;" /> - </linearGradient> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="13.454646" - inkscape:cx="15.221352" - inkscape:cy="14.716106" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:grid-bbox="true" - inkscape:document-units="px" - inkscape:window-width="872" - inkscape:window-height="624" - inkscape:window-x="0" - inkscape:window-y="25" /> - <metadata - id="metadata2166"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <cc:license - rdf:resource="http://www.gnu.org/copyleft/gpl.html" /> - <dc:title>PulseAudio logotype</dc:title> - <dc:date>2006-08-28</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Pierre Ossman <ossman@cendio.se> for Cendio AB</dc:title> - </cc:Agent> - </dc:creator> - <dc:rights> - <cc:Agent> - <dc:title /> - </cc:Agent> - </dc:rights> - <dc:contributor> - <cc:Agent> - <dc:title>Rafael Jannone (basic idea)</dc:title> - </cc:Agent> - </dc:contributor> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Notice" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/ShareAlike" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/SourceCode" /> - </cc:License> - </rdf:RDF> - </metadata> - <g - inkscape:groupmode="layer" - id="layer5" - inkscape:label="Mic"> - <g - style="display:inline" - id="g306" - transform="matrix(0.49976071,0,0,0.49976071,3.2433793,5.5836561)"> - <g - style="display:inline" - inkscape:label="vectors" - id="layer2"> - <path - transform="matrix(0.727673,0,0,1.235135,7.166344,-12.0556)" - d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" - sodipodi:ry="6.4081554" - sodipodi:rx="12.59534" - sodipodi:cy="36.907261" - sodipodi:cx="23.82066" - id="path3010" - style="opacity:0.1;fill:url(#radialGradient3012-3);fill-opacity:1;stroke:none;display:inline" - sodipodi:type="arc" /> - <path - transform="matrix(1.233813,0,0,1.235135,-4.890235,-6.055598)" - d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" - sodipodi:ry="6.4081554" - sodipodi:rx="12.59534" - sodipodi:cy="36.907261" - sodipodi:cx="23.82066" - id="path4489" - style="opacity:0.7;fill:url(#radialGradient4505-7);fill-opacity:1;stroke:none;display:inline" - sodipodi:type="arc" /> - <path - style="opacity:0.2;fill:none;stroke:url(#linearGradient4473-9);stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" - d="M 32.800044,40.588388 C 24.781634,29.5 47,35.875 46.25,32 45.476667,28.004445 36.399824,30.554499 36.875,26.25 37.336541,22.069018 46.75,23.75 44.625,15" - id="path4471" - sodipodi:nodetypes="czzc" /> - <path - style="fill:none;stroke:url(#linearGradient4460-4);stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" - d="M 32.800044,39.588388 C 24.781634,28.5 47,34.875 46.25,31 45.476667,27.004445 36.399824,29.554499 36.875,25.25 37.336541,21.069018 46.75,22.75 44.625,14" - id="path4172" - sodipodi:nodetypes="czzc" /> - <path - transform="matrix(1.032128,0,0,1.014402,-0.08596444,1.56074)" - d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" - sodipodi:ry="6.4081554" - sodipodi:rx="12.59534" - sodipodi:cy="36.907261" - sodipodi:cx="23.82066" - id="path3683" - style="fill:url(#radialGradient3691-2);fill-opacity:1;stroke:#555753;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" - sodipodi:type="arc" /> - <path - transform="matrix(0.43667,0,0,0.429141,14.09824,21.41158)" - d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" - sodipodi:ry="6.4081554" - sodipodi:rx="12.59534" - sodipodi:cy="36.907261" - sodipodi:cx="23.82066" - id="path2955" - style="fill:url(#radialGradient2971-1);fill-opacity:1;stroke:none;display:inline" - sodipodi:type="arc" /> - <path - sodipodi:nodetypes="ccssccc" - id="path3766" - d="m 27.35249,32.125 c -1.738654,0.735383 -2.545819,2.052948 -3.67816,3.167277 -0.486309,0.3076 -0.5997,0.709446 -0.51965,1.276685 0.08005,0.567243 0.489446,1.055334 1.042146,1.218184 0.552698,0.162848 0.999547,0.130039 1.377887,-0.302139 C 26.676195,35.285524 28.744563,33.983863 31,32.85591 29.870496,32.536987 28.651039,32.264053 27.35249,32.125 z" - style="opacity:0.7;fill:url(#linearGradient3785-7);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" /> - <path - transform="matrix(1.032128,0,0,1.014402,-0.08596444,1.56074)" - d="m 23.8125,31.5 c -3.339495,0 -6.371551,0.683256 -8.46875,1.75 -2.097199,1.066744 -3.125,2.416366 -3.125,3.65625 0,1.239884 1.027801,2.589506 3.125,3.65625 2.097199,1.066744 5.129255,1.750001 8.46875,1.75 3.339495,0 6.371551,-0.683256 8.46875,-1.75 2.097199,-1.066744 3.125,-2.416366 3.125,-3.65625 0,-1.239884 -1.027801,-2.589506 -3.125,-3.65625 C 30.184051,32.183256 27.151995,31.5 23.8125,31.5 z" - id="path3697" - style="opacity:0.4;fill:none;stroke:url(#linearGradient3709-1);stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" - inkscape:original="M 23.8125 30.5 C 16.859872 30.5 11.21875 33.368948 11.21875 36.90625 C 11.21875 40.443552 16.859872 43.312502 23.8125 43.3125 C 30.765128 43.3125 36.406249 40.443552 36.40625 36.90625 C 36.40625 33.368948 30.765128 30.5 23.8125 30.5 z " - inkscape:radius="-0.99470079" - sodipodi:type="inkscape:offset" /> - <path - sodipodi:nodetypes="cc" - id="path3589" - d="m 24.5,27.5 0,9" - style="fill:none;stroke:url(#linearGradient3732-0);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> - <path - sodipodi:nodetypes="csc" - id="path2781" - d="m 34.500008,18.999997 c -8e-6,4.285711 -4.46,7.500001 -10.000002,7.500001 -5.540002,0 -10.000006,-3.21429 -10.000003,-7.500001" - style="fill:none;stroke:#888a85;stroke-width:3.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - y="16.499998" - x="12.5" - height="2.9999995" - width="4" - id="rect2783" - style="fill:url(#linearGradient3801-5);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> - <rect - y="16.499998" - x="32.5" - height="2.9999995" - width="4" - id="rect3803" - style="fill:url(#linearGradient3805-2);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> - <path - sodipodi:nodetypes="csc" - id="rect1882" - d="m 34.500008,18.999991 c 0,4.28571 -4.46,7.500001 -10.000002,7.500001 -5.540002,0 -10.000006,-3.214291 -10.000003,-7.500001" - style="fill:none;stroke:url(#linearGradient2987-1);stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - ry="0.9722718" - rx="0.9722718" - y="15" - x="30" - height="6" - width="3.0000005" - id="rect2951" - style="fill:url(#linearGradient2953-8);fill-opacity:1;stroke:none;display:inline" /> - <path - transform="matrix(1.5,0,0,1.5,12.25,-11.25)" - d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="19" - sodipodi:cx="14" - id="path3825" - style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline" - sodipodi:type="arc" /> - <rect - ry="0.9722718" - rx="0.9722718" - y="15" - x="16" - height="6" - width="3.0000005" - id="rect2787" - style="fill:url(#linearGradient2949-0);fill-opacity:1;stroke:none;display:inline" /> - <rect - ry="7.0108709" - rx="7.0000019" - y="1.5000002" - x="17.499996" - height="24.000008" - width="14.000004" - id="rect1880" - style="fill:url(#linearGradient2902-2);fill-opacity:1;stroke:url(#linearGradient4487-4);stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <path - sodipodi:nodetypes="cc" - id="path3587" - d="m 24.5,26.5 0,10" - style="fill:none;stroke:url(#linearGradient3740-9);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> - <path - transform="matrix(1.5,0,0,1.5,-7.75,-11.25)" - d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z" - sodipodi:ry="0.5" - sodipodi:rx="0.5" - sodipodi:cy="19" - sodipodi:cx="14" - id="path3823" - style="fill:#ffffff;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - <g - id="g3270" - inkscape:label="Shadow" - transform="translate(-9.25,46.68088)" /> - <g - transform="translate(-9.25,61.74691)" - inkscape:label="Shadow" - id="g2611" /> - <g - transform="translate(-9.25,61.74691)" - style="display:inline" - inkscape:label="Lavoro" - id="g2613" /> - <g - id="g2885"> - <rect - style="fill:url(#linearGradient2890-1);fill-opacity:1;stroke:none;display:inline" - id="rect1975" - width="4" - height="15.374996" - x="20" - y="6" - rx="2" - ry="2.1991496" /> - <path - sodipodi:type="inkscape:offset" - inkscape:radius="-0.54470092" - inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z " - style="opacity:0.2;fill:url(#linearGradient2892-0);fill-opacity:1;stroke:none;display:inline" - id="path3811" - d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,10 c 0,3.592133 2.882528,6.46875 6.46875,6.46875 3.586222,0 6.46875,-2.876617 6.46875,-6.46875 l 0,-10 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z" - transform="translate(0,-1)" /> - <path - sodipodi:type="arc" - style="fill:url(#linearGradient2894-9);fill-opacity:1;stroke:none" - id="path2875" - sodipodi:cx="23.65625" - sodipodi:cy="7.6875" - sodipodi:rx="3.34375" - sodipodi:ry="3.0625" - d="M 27,7.6875 C 27,9.378872 25.502952,10.75 23.65625,10.75 21.809548,10.75 20.3125,9.378872 20.3125,7.6875 20.3125,5.996128 21.809548,4.625 23.65625,4.625 25.502952,4.625 27,5.996128 27,7.6875 z" - transform="matrix(1,0,0,1.081633,-0.375,-1.252551)" /> - </g> - <path - sodipodi:nodetypes="cccccc" - id="path2916" - d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,5 12.9375,0 0,-5 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z" - style="opacity:0.9;fill:url(#radialGradient2926-4);fill-opacity:1;stroke:none;display:inline" - transform="translate(0,-1)" /> - </g> - <g - style="display:inline" - inkscape:label="buchi" - id="layer3"> - <path - sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc" - id="path2902" - d="M 22.5,3 C 22.224,3 22,3.224 22,3.5 22,3.776 22.224,4 22.5,4 22.776,4 23,3.776 23,3.5 23,3.224 22.776,3 22.5,3 z m 2,0 C 24.224,3 24,3.224 24,3.5 24,3.776 24.224,4 24.5,4 24.776,4 25,3.776 25,3.5 25,3.224 24.776,3 24.5,3 z m 2,0 C 26.224,3 26,3.224 26,3.5 26,3.776 26.224,4 26.5,4 26.776,4 27,3.776 27,3.5 27,3.224 26.776,3 26.5,3 z m -5,1 C 21.224,4 21,4.224 21,4.5 21,4.776 21.224,5 21.5,5 21.776,5 22,4.776 22,4.5 22,4.224 21.776,4 21.5,4 z m 2,0 C 23.224,4 22.999999,4.2240007 23,4.5 23,4.7759993 23.223999,5 23.5,5 23.776,5 24,4.7759993 24,4.5 24,4.2240007 23.776,4 23.5,4 z m 2,0 C 25.224,4 24.999999,4.2240007 25,4.5 25,4.7759993 25.223999,5 25.5,5 25.776,5 26,4.7759993 26,4.5 26,4.2240007 25.776,4 25.5,4 z m 2,0 C 27.224,4 27,4.224 27,4.5 27,4.776 27.224,5 27.5,5 27.776,5 28,4.776 28,4.5 28,4.224 27.776,4 27.5,4 z m -7,1 C 20.224,5 19.999999,5.2240008 20,5.5 20,5.7759993 20.223999,6 20.5,6 20.776,6 21,5.7759994 21,5.5 21,5.2240007 20.776,5 20.5,5 z m 2,0 C 22.224,5 21.999999,5.2240008 22,5.5 22,5.7759993 22.223999,6 22.5,6 22.776,6 23,5.7759994 23,5.5 23,5.2240007 22.776,5 22.5,5 z m 2,0 C 24.224,5 23.999999,5.2240008 24,5.5 24,5.7759993 24.223999,6 24.5,6 24.776,6 25,5.7759994 25,5.5 25,5.2240007 24.776,5 24.5,5 z m 2,0 C 26.224,5 25.999999,5.2240008 26,5.5 26,5.7759993 26.223999,6 26.5,6 26.776,6 27,5.7759994 27,5.5 27,5.2240007 26.776,5 26.5,5 z m 2,0 C 28.224,5 28,5.224 28,5.5 28,5.776 28.224,6 28.5,6 28.776,6 29,5.776 29,5.5 29,5.224 28.776,5 28.5,5 z m -9,1 C 19.224,6 18.999999,6.2240008 19,6.5 19,6.7759993 19.223999,7 19.5,7 19.776,7 20,6.7759994 20,6.5 20,6.2240007 19.776,6 19.5,6 z m 2,0 C 21.224,6 20.999999,6.2240008 21,6.5 21,6.7759993 21.223999,7 21.5,7 21.776,7 22,6.7759994 22,6.5 22,6.2240007 21.776,6 21.5,6 z m 2,0 C 23.224,6 22.999999,6.2240008 23,6.5 23,6.7759993 23.223999,7 23.5,7 23.776,7 24,6.7759994 24,6.5 24,6.2240007 23.776,6 23.5,6 z m 2,0 C 25.224,6 24.999999,6.2240008 25,6.5 25,6.7759993 25.223999,7 25.5,7 25.776,7 26,6.7759994 26,6.5 26,6.2240007 25.776,6 25.5,6 z m 2,0 C 27.224,6 26.999999,6.2240008 27,6.5 27,6.7759993 27.223999,7 27.5,7 27.776,7 28,6.7759994 28,6.5 28,6.2240007 27.776,6 27.5,6 z m 2,0 C 29.224,6 29,6.224 29,6.5 29,6.776 29.224,7 29.5,7 29.776,7 30,6.776 30,6.5 30,6.224 29.776,6 29.5,6 z m -9,1 C 20.224,7 19.999999,7.2240008 20,7.5 20,7.7759993 20.223999,8.0000002 20.5,8 20.776,8 21,7.7759994 21,7.5 21,7.2240007 20.776,7 20.5,7 z m 2,0 C 22.224,7 21.999999,7.2240008 22,7.5 22,7.7759993 22.223999,8.0000002 22.5,8 22.776,8 23,7.7759994 23,7.5 23,7.2240007 22.776,7 22.5,7 z m 2,0 C 24.224,7 23.999999,7.2240008 24,7.5 24,7.7759993 24.223999,8.0000002 24.5,8 24.776,8 25,7.7759994 25,7.5 25,7.2240007 24.776,7 24.5,7 z m 2,0 C 26.224,7 25.999999,7.2240008 26,7.5 26,7.7759993 26.223999,8.0000002 26.5,8 26.776,8 27,7.7759994 27,7.5 27,7.2240007 26.776,7 26.5,7 z m 2,0 C 28.224,7 27.999999,7.2240008 28,7.5 28,7.7759993 28.223999,8.0000002 28.5,8 28.776,8 29,7.7759994 29,7.5 29,7.2240007 28.776,7 28.5,7 z m 2,0 C 30.224,7 30,7.224 30,7.5 30,7.776 30.224,8 30.5,8 30.776,8 31,7.776 31,7.5 31,7.224 30.776,7 30.5,7 z m -11,1 C 19.224,8 18.999999,8.2240008 19,8.5 19,8.7759993 19.223999,9 19.5,9 19.776,9 20,8.7759994 20,8.5 20,8.2240007 19.776,8 19.5,8 z m 2,0 C 21.224,8 20.999999,8.2240008 21,8.5 21,8.7759993 21.223999,9 21.5,9 21.776,9 22,8.7759994 22,8.5 22,8.2240007 21.776,8 21.5,8 z m 2,0 C 23.224,8 22.999999,8.2240008 23,8.5 23,8.7759993 23.223999,9 23.5,9 23.776,9 24,8.7759994 24,8.5 24,8.2240007 23.776,8 23.5,8 z m 2,0 C 25.224,8 24.999999,8.2240008 25,8.5 25,8.7759993 25.223999,9 25.5,9 25.776,9 26,8.7759994 26,8.5 26,8.2240007 25.776,8 25.5,8 z m 2,0 C 27.224,8 26.999999,8.2240008 27,8.5 27,8.7759993 27.223999,9 27.5,9 27.776,9 28,8.7759994 28,8.5 28,8.2240007 27.776,8 27.5,8 z m 2,0 C 29.224,8 28.999999,8.2240008 29,8.5 29,8.7759993 29.223999,9 29.5,9 29.776,9 30,8.7759994 30,8.5 30,8.2240007 29.776,8 29.5,8 z m -11,1 C 18.224,9 17.999999,9.224001 18,9.5 18,9.775999 18.223999,10 18.5,10 18.776,10 19,9.775999 19,9.5 19,9.224001 18.776,9 18.5,9 z m 2,0 C 20.224,9 19.999999,9.224001 20,9.5 20,9.775999 20.223999,10 20.5,10 20.776,10 21,9.775999 21,9.5 21,9.224001 20.776,9 20.5,9 z m 2,0 C 22.224,9 21.999999,9.224001 22,9.5 22,9.775999 22.223999,10 22.5,10 22.776,10 23,9.775999 23,9.5 23,9.224001 22.776,9 22.5,9 z m 2,0 C 24.224,9 23.999999,9.224001 24,9.5 24,9.775999 24.223999,10 24.5,10 24.776,10 25,9.775999 25,9.5 25,9.224001 24.776,9 24.5,9 z m 2,0 C 26.224,9 25.999999,9.224001 26,9.5 26,9.775999 26.223999,10 26.5,10 26.776,10 27,9.775999 27,9.5 27,9.224001 26.776,9 26.5,9 z m 2,0 C 28.224,9 27.999999,9.224001 28,9.5 28,9.775999 28.223999,10 28.5,10 28.776,10 29,9.775999 29,9.5 29,9.224001 28.776,9 28.5,9 z m 2,0 C 30.224,9 30,9.224 30,9.5 30,9.776 30.224,10 30.5,10 30.776,10 31,9.776 31,9.5 31,9.224 30.776,9 30.5,9 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,11 20,10.775999 20,10.5 20,10.224001 19.776,10 19.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,11 22,10.775999 22,10.5 22,10.224001 21.776,10 21.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,11 24,10.775999 24,10.5 24,10.224001 23.776,10 23.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,11 26,10.775999 26,10.5 26,10.224001 25.776,10 25.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,11 28,10.775999 28,10.5 28,10.224001 27.776,10 27.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,11 30,10.775999 30,10.5 30,10.224001 29.776,10 29.5,10 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,12 19,11.775999 19,11.5 19,11.224001 18.776,11 18.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,12 21,11.775999 21,11.5 21,11.224001 20.776,11 20.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,12 23,11.775999 23,11.5 23,11.224001 22.776,11 22.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,12 25,11.775999 25,11.5 25,11.224001 24.776,11 24.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,12 27,11.775999 27,11.5 27,11.224001 26.776,11 26.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,12 29,11.775999 29,11.5 29,11.224001 28.776,11 28.5,11 z m 2,0 C 30.224,11 30,11.224 30,11.5 30,11.776 30.224,12 30.5,12 30.776,12 31,11.776 31,11.5 31,11.224 30.776,11 30.5,11 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,13 20,12.775999 20,12.5 20,12.224001 19.776,12 19.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,13 22,12.775999 22,12.5 22,12.224001 21.776,12 21.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,13 24,12.775999 24,12.5 24,12.224001 23.776,12 23.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,13 26,12.775999 26,12.5 26,12.224001 25.776,12 25.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,13 28,12.775999 28,12.5 28,12.224001 27.776,12 27.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,13 30,12.775999 30,12.5 30,12.224001 29.776,12 29.5,12 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,14 19,13.775999 19,13.5 19,13.224001 18.776,13 18.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,14 21,13.775999 21,13.5 21,13.224001 20.776,13 20.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,14 23,13.775999 23,13.5 23,13.224001 22.776,13 22.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,14 25,13.775999 25,13.5 25,13.224001 24.776,13 24.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,14 27,13.775999 27,13.5 27,13.224001 26.776,13 26.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,14 29,13.775999 29,13.5 29,13.224001 28.776,13 28.5,13 z m 2,0 C 30.224,13 30,13.224 30,13.5 30,13.776 30.224,14 30.5,14 30.776,14 31,13.776 31,13.5 31,13.224 30.776,13 30.5,13 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,15 20,14.775999 20,14.5 20,14.224001 19.776,14 19.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,15 22,14.775999 22,14.5 22,14.224001 21.776,14 21.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,15 24,14.775999 24,14.5 24,14.224001 23.776,14 23.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,15 26,14.775999 26,14.5 26,14.224001 25.776,14 25.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,15 28,14.775999 28,14.5 28,14.224001 27.776,14 27.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,15 30,14.775999 30,14.5 30,14.224001 29.776,14 29.5,14 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,16 19,15.775999 19,15.5 19,15.224001 18.776,15 18.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,16 21,15.775999 21,15.5 21,15.224001 20.776,15 20.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,16 23,15.775999 23,15.5 23,15.224001 22.776,15 22.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,16 25,15.775999 25,15.5 25,15.224001 24.776,15 24.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,16 27,15.775999 27,15.5 27,15.224001 26.776,15 26.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,16 29,15.775999 29,15.5 29,15.224001 28.776,15 28.5,15 z m 2,0 C 30.224,15 30,15.224 30,15.5 30,15.776 30.224,16 30.5,16 30.776,16 31,15.776 31,15.5 31,15.224 30.776,15 30.5,15 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,17 20,16.776 20,16.5 20,16.224001 19.776,16 19.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,17 22,16.776 22,16.5 22,16.224001 21.776,16 21.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,17 24,16.776 24,16.5 24,16.224001 23.776,16 23.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,17 26,16.776 26,16.5 26,16.224001 25.776,16 25.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,17 28,16.776 28,16.5 28,16.224001 27.776,16 27.5,16 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,17 30,16.775999 30,16.5 30,16.224001 29.776,16 29.5,16 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,18 19,17.776 19,17.5 19,17.224001 18.776,17 18.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,18 21,17.776 21,17.5 21,17.224001 20.776,17 20.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,18 23,17.776 23,17.5 23,17.224001 22.776,17 22.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,18 25,17.776 25,17.5 25,17.224001 24.776,17 24.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,18 27,17.776 27,17.5 27,17.224001 26.776,17 26.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,18 29,17.776 29,17.5 29,17.224001 28.776,17 28.5,17 z m 2,0 C 30.224,17 30,17.224 30,17.5 30,17.776 30.224,18 30.5,18 30.776,18 31,17.776 31,17.5 31,17.224 30.776,17 30.5,17 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,19 20,18.776 20,18.5 20,18.224001 19.776,18 19.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,19 22,18.776 22,18.5 22,18.224001 21.776,18 21.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,19 24,18.776 24,18.5 24,18.224001 23.776,18 23.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,19 26,18.776 26,18.5 26,18.224001 25.776,18 25.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,19 28,18.776 28,18.5 28,18.224001 27.776,18 27.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,19 30,18.776 30,18.5 30,18.224001 29.776,18 29.5,18 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 18.776,20 19,19.776 19,19.5 19,19.224001 18.776,19 18.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 20.776,20 21,19.776 21,19.5 21,19.224001 20.776,19 20.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,20 23,19.776 23,19.5 23,19.224001 22.776,19 22.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,20 25,19.776 25,19.5 25,19.224001 24.776,19 24.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,20 27,19.776 27,19.5 27,19.224001 26.776,19 26.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 28.776,20 29,19.776 29,19.5 29,19.224001 28.776,19 28.5,19 z m 2,0 C 30.224,19 30,19.224 30,19.5 30,19.776 30.224,20 30.5,20 30.776,20 31,19.776 31,19.5 31,19.224 30.776,19 30.5,19 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 19.776,21 20,20.776 20,20.5 20,20.224001 19.776,20 19.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 21.776,21 22,20.776 22,20.5 22,20.224001 21.776,20 21.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,21 24,20.776 24,20.5 24,20.224001 23.776,20 23.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,21 26,20.776 26,20.5 26,20.224001 25.776,20 25.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 27.776,21 28,20.776 28,20.5 28,20.224001 27.776,20 27.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 29.776,21 30,20.776 30,20.5 30,20.224001 29.776,20 29.5,20 z m -9,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 20.776,22 21,21.776 21,21.5 21,21.224001 20.776,21 20.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,22 23,21.776 23,21.5 23,21.224001 22.776,21 22.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,22 25,21.776 25,21.5 25,21.224001 24.776,21 24.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,22 27,21.776 27,21.5 27,21.224001 26.776,21 26.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 28.776,22 29,21.776 29,21.5 29,21.224001 28.776,21 28.5,21 z m -7,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 21.776,23 22,22.776 22,22.5 22,22.224001 21.776,22 21.5,22 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,23 24,22.776 24,22.5 24,22.224001 23.776,22 23.5,22 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,23 26,22.776 26,22.5 26,22.224001 25.776,22 25.5,22 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 27.776,23 28,22.776 28,22.5 28,22.224001 27.776,22 27.5,22 z m -5,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,24 23,23.776 23,23.5 23,23.224001 22.776,23 22.5,23 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,24 25,23.776 25,23.5 25,23.224001 24.776,23 24.5,23 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,24 27,23.776 27,23.5 27,23.224001 26.776,23 26.5,23 z m -3,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,25 24,24.776 24,24.5 24,24.224001 23.776,24 23.5,24 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,25 26,24.776 26,24.5 26,24.224001 25.776,24 25.5,24 z" - style="opacity:0.5;fill:url(#linearGradient3567-4);fill-opacity:1;stroke:none;display:inline" /> - <rect - ry="6.0500031" - rx="6.0000024" - y="2.5000026" - x="18.500008" - height="22.000008" - width="12.000005" - id="rect3575" - style="fill:none;stroke:url(#linearGradient3585-2);stroke-width:1.0000006;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> - </g> - </g> - </g> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer" - transform="translate(-9.6490002,-6.236078)" - style="display:inline"> - <g - id="g781" - transform="matrix(0.88131313,0,0,0.88131313,2.9517844,0.78404468)"> - <path - style="fill:#729fcf;fill-opacity:1;stroke:none" - d="m 22.365786,11.528391 c -4.16858,1.106752 -7.242777,4.906525 -7.242774,9.421848 0,4.51531 3.074196,8.318988 7.242774,9.42574 -3.007226,-1.349598 -5.168955,-5.062913 -5.168955,-9.42574 -1e-6,-4.362815 2.161728,-8.07225 5.168955,-9.421848 z m 5.009131,0 c 3.007227,1.349598 5.168955,5.059021 5.168955,9.421848 0,4.362827 -2.161729,8.076142 -5.168955,9.42574 4.16858,-1.106752 7.242777,-4.91043 7.242774,-9.42574 0,-4.515311 -3.074193,-8.315096 -7.242774,-9.421848 z" - id="path2419" /> - <path - id="path2421" - d="M 20.959247,6.236078 C 14.449633,7.9643721 9.6489964,13.898061 9.6490002,20.949142 c 0,7.05107 4.8006348,12.990862 11.3102468,14.719148 -4.696056,-2.107524 -8.071791,-7.906196 -8.071791,-14.719148 -2e-6,-6.812926 3.375734,-12.6055448 8.071791,-14.713064 z m 7.82221,0 c 4.696057,2.1075192 8.07179,7.900118 8.07179,14.713064 0,6.812952 -3.375735,12.611624 -8.07179,14.719148 6.509614,-1.728286 11.31025,-7.668078 11.310246,-14.719148 0,-7.051061 -4.80063,-12.9847699 -11.310246,-14.713064 z" - style="fill:#729fcf;fill-opacity:1;stroke:none" /> - </g> - </g> - <g - inkscape:groupmode="layer" - id="layer4" - inkscape:label="center" - style="display:none"> - <path - transform="matrix(0.2091112,0,0,0.2091112,15.430463,-165.87494)" - d="m 22,863.61249 a 23,23 0 1 1 -46,0 23,23 0 1 1 46,0 z" - sodipodi:ry="23" - sodipodi:rx="23" - sodipodi:cy="863.61249" - sodipodi:cx="-1" - id="path2417" - style="fill:#729fcf;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> - </g> -</svg> diff --git a/pulsecaster/data/pulsecaster.glade b/pulsecaster/data/pulsecaster.glade deleted file mode 100644 index f46c93c..0000000 --- a/pulsecaster/data/pulsecaster.glade +++ /dev/null @@ -1,471 +0,0 @@ -<?xml version="1.0"?> -<interface> - <requires lib="gtk+" version="2.16"/> - <!-- interface-naming-policy project-wide --> - <object class="GtkAboutDialog" id="about_dialog"> - <property name="border_width">5</property> - <property name="resizable">False</property> - <property name="window_position">center-always</property> - <property name="destroy_with_parent">True</property> - <property name="type_hint">normal</property> - <property name="has_separator">False</property> - <property name="authors"></property> - <child internal-child="vbox"> - <object class="GtkVBox" id="dialog-vbox1"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">2</property> - <child> - <placeholder/> - </child> - <child internal-child="action_area"> - <object class="GtkHButtonBox" id="dialog-action_area1"> - <property name="visible">True</property> - <property name="layout_style">end</property> - </object> - <packing> - <property name="expand">False</property> - <property name="pack_type">end</property> - <property name="position">0</property> - </packing> - </child> - </object> - </child> - </object> - <object class="GtkDialog" id="main_dialog"> - <property name="border_width">5</property> - <property name="default_width">300</property> - <property name="icon">icons/scalable/pulsecaster.svg</property> - <property name="type_hint">normal</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <object class="GtkVBox" id="dialog-vbox2"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">5</property> - <child> - <object class="GtkHBox" id="hbox1"> - <property name="visible">True</property> - <property name="spacing">10</property> - <child> - <object class="GtkImage" id="logo"> - <property name="visible">True</property> - <property name="xpad">10</property> - <property name="pixbuf">icons/48x48/pulsecaster-48.png</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="main_title"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="yalign">0.40000000596046448</property> - <property name="use_markup">True</property> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="padding">5</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox2"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">5</property> - <child> - <object class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="yalign">0</property> - <property name="xpad">10</property> - <property name="ypad">10</property> - <property name="label" translatable="yes"><i>Select the audio sources to mix, and a destination file for saving the resulting audio.</i></property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox5"> - <property name="visible">True</property> - <child> - <object class="GtkVBox" id="vbox1"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">5</property> - <property name="homogeneous">True</property> - <child> - <object class="GtkLabel" id="label3"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="xpad">10</property> - <property name="label" translatable="yes">Your voice:</property> - <property name="justify">right</property> - </object> - <packing> - <property name="expand">False</property> - <property name="padding">5</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label4"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="xpad">10</property> - <property name="label" translatable="yes">Subject's voice:</property> - <property name="justify">right</property> - </object> - <packing> - <property name="expand">False</property> - <property name="padding">5</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="combo_vbox"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">5</property> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox2"> - <property name="visible">True</property> - <child> - <object class="GtkLabel" id="label5"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="xpad">10</property> - <property name="label" translatable="yes">Destination file:</property> - <property name="justify">right</property> - </object> - <packing> - <property name="expand">False</property> - <property name="padding">5</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="destfile_label"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="use_markup">True</property> - <property name="ellipsize">middle</property> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkButton" id="open_button"> - <property name="label" translatable="yes">Browse...</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - </object> - <packing> - <property name="position">2</property> - </packing> - </child> - </object> - <packing> - <property name="position">2</property> - </packing> - </child> - <child internal-child="action_area"> - <object class="GtkHButtonBox" id="dialog-action_area2"> - <property name="visible">True</property> - <property name="layout_style">end</property> - <child> - <object class="GtkButton" id="about_button"> - <property name="label" translatable="yes">gtk-about</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - <property name="secondary">True</property> - </packing> - </child> - <child> - <object class="GtkButton" id="close_button"> - <property name="label" translatable="yes">gtk-close</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - <signal name="clicked" handler="gtk_main_quit"/> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkButton" id="record_button"> - <property name="label" translatable="yes">gtk-media-record</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="pack_type">end</property> - <property name="position">2</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="pack_type">end</property> - <property name="position">0</property> - </packing> - </child> - </object> - </child> - <action-widgets> - <action-widget response="0">about_button</action-widget> - <action-widget response="0">close_button</action-widget> - <action-widget response="0">record_button</action-widget> - </action-widgets> - </object> - <object class="GtkFileChooserDialog" id="file_chooser"> - <property name="border_width">5</property> - <property name="modal">True</property> - <property name="destroy_with_parent">True</property> - <property name="type_hint">normal</property> - <property name="has_separator">False</property> - <property name="do_overwrite_confirmation">True</property> - <property name="local_only">False</property> - <property name="action">save</property> - <child internal-child="vbox"> - <object class="GtkVBox" id="dialog-vbox4"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">2</property> - <child> - <placeholder/> - </child> - <child internal-child="action_area"> - <object class="GtkHButtonBox" id="dialog-action_area4"> - <property name="visible">True</property> - <property name="layout_style">end</property> - <child> - <object class="GtkButton" id="file_chooser_cancel_button"> - <property name="label" translatable="yes">gtk-cancel</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkButton" id="file_chooser_save_button"> - <property name="label" translatable="yes">gtk-save</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - <property name="xalign">0.43999999761581421</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="pack_type">end</property> - <property name="position">0</property> - </packing> - </child> - </object> - </child> - <action-widgets> - <action-widget response="0">file_chooser_cancel_button</action-widget> - <action-widget response="0">file_chooser_save_button</action-widget> - </action-widgets> - </object> - <object class="GtkWindow" id="warning"> - <property name="resizable">False</property> - <property name="modal">True</property> - <property name="window_position">center-on-parent</property> - <property name="destroy_with_parent">True</property> - <property name="urgency_hint">True</property> - <child> - <object class="GtkVBox" id="vbox1"> - <property name="visible">True</property> - <property name="border_width">10</property> - <property name="orientation">vertical</property> - <property name="spacing">5</property> - <child> - <object class="GtkHBox" id="hbox1"> - <property name="visible">True</property> - <child> - <object class="GtkImage" id="image1"> - <property name="visible">True</property> - <property name="yalign">0</property> - <property name="stock">gtk-dialog-warning</property> - <property name="icon-size">6</property> - </object> - <packing> - <property name="padding">5</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox2"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><big><big><b><i>Important notice</i></b></big></big></property> - <property name="use_markup">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label3"> - <property name="visible">True</property> - <property name="label" translatable="yes">This program can be used to record speech -from remote locations. You are responsible -for adhering to all applicable laws and -regulations when using this program. In -general you should not record other parties -without their consent.</property> - <property name="use_markup">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="skip_warn_checkbox"> - <property name="label" translatable="yes">_Do not show this again</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">5</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkHButtonBox" id="hbuttonbox1"> - <property name="visible">True</property> - <property name="spacing">10</property> - <property name="homogeneous">True</property> - <property name="layout_style">end</property> - <child> - <object class="GtkButton" id="dismiss_warning"> - <property name="label" translatable="yes">gtk-ok</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - </object> - </child> - </object> -</interface> diff --git a/pulsecaster/gconfig.py b/pulsecaster/gconfig.py deleted file mode 100644 index d956d42..0000000 --- a/pulsecaster/gconfig.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/python -# -# Copyright (C) 2009 Paul W. Frields -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Paul W. Frields <stickster@gmail.com> - - -import gconf -from config import * - -class PulseCasterGconf: - def __init__(self): - self.dirbase = '/apps/' + NAME - self.client = gconf.client_get_default() - if self.client.dir_exists(self.dirbase) is False: - self.client.add_dir(self.dirbase, gconf.CLIENT_PRELOAD_NONE) - - self.skip_warn = self.client.get_bool(self.dirbase + '/skip_warning') - if self.skip_warn is None or type(self.skip_warn) is not bool: - self.skip_warn = False - - self.vorbisq = self.client.get(self.dirbase + '/vorbisq') - if type(self.vorbisq) is not int: - self.vorbisq = 4 - self.client.set_int(self.dirbase + '/vorbisq', self.vorbisq) - - def change_warn(self, val): - if type(val) is not bool: - raise ValueError, "requires bool value" - self.client.set_bool(self.dirbase + '/skip_warning', val) diff --git a/pulsecaster/pulseaudio/PulseClient.py b/pulsecaster/pulseaudio/PulseClient.py deleted file mode 100644 index 6705080..0000000 --- a/pulsecaster/pulseaudio/PulseClient.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/python -# vi: et sw=2 -# -# PulseClient.py -# Copyright (C) 2009 Harry Karvonen -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Harry Karvonen <harry.karvonen@gmail.com> -# - -from lib_pulseaudio import * - -# This class contains all basic client features -class PulseClient: - def __init__(self, name, index = 0): - self.index = index - self.name = name - return - - ### - - def printDebug(self): - print "self.index:", self.index - print "self.name:", self.name - return - - ### - - def __str__(self): - return "Client-ID: " + str(self.index) + ", Name: \"" + self.name + "\"" - -################################################################################ - -# This class is used with Ctypes -class PulseClientCtypes(PulseClient): - def __init__(self, pa_client): - PulseClient.__init__(self, pa_client.name, pa_client.index) - - self.owner_module = pa_client.owner_module - self.driver = pa_client.driver - #self.proplist = pa_sink_input_info.proplist - return - - ### - - def printDebug(self): - print "PulseClientCtypes" - PulseClient.printDebug(self) - print "self.owner_module:", self.owner_module - print "self.driver:", self.driver - #print "self.proplist:", self.proplist - return - diff --git a/pulsecaster/pulseaudio/PulseObj.py b/pulsecaster/pulseaudio/PulseObj.py deleted file mode 100644 index 98c4105..0000000 --- a/pulsecaster/pulseaudio/PulseObj.py +++ /dev/null @@ -1,623 +0,0 @@ -#!/usr/bin/python -# vi: et sw=2 -# -# PulseObj.py -# Copyright (C) 2009 Harry Karvonen -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Harry Karvonen <harry.karvonen@gmail.com> -# - -from lib_pulseaudio import * -from PulseSink import PulseSinkInputInfo, PulseSinkInfo -from PulseSource import PulseSourceOutputInfo, PulseSourceInfo -from PulseClient import PulseClientCtypes - -################################################################################ -# -# Classes -# -################################################################################ - -class PulseObj: - "Basic PulseAudio object" - - ############################################################################## - # - # Init - # - ############################################################################## - - def __init__(self, server = None, retry = False, clientName = 'Unknown (Python)'): - "Initialise pulseaudio connection" - - # Variables - self.server = server - self.mainloop = None - self.mainloop_api = None - self.context = None - self.ret = None - self.retry = retry - self.operation = None - self.connected = False - self.action_done = False - self.data = None - - # Init - - # - # Callbacks - # - self.PA_SIGNAL_CB = PA_SIGNAL_CB_T(self.py_signal_cb) - - self.PA_STATE_CB = PA_STATE_CB_T(self.py_state_cb) - # - # Mainloop init - # - self.mainloop = pa_mainloop_new() - - self.mainloop_api = pa_mainloop_get_api(self.mainloop) - - # - # Signal binding - # - r = pa_signal_init(self.mainloop_api) - - if r != 0: - # FIXME - print "FIXME Do something. Something is wrong" - - # SIGINT - pa_signal_new(2, self.PA_SIGNAL_CB, None) - - # SIGTERM - pa_signal_new(15, self.PA_SIGNAL_CB, None) - - # - # Context creating - # - self.context = pa_context_new(self.mainloop_api, clientName) - - pa_context_set_state_callback(self.context, self.PA_STATE_CB, None) - - self.start_action() - - # - # Connect - # - if 0 > pa_context_connect(self.context, - self.server, - 0, - None): - if self.retry: - pa_context_disconnect(self.context) - return - self.pulse_context_error() - - self.pulse_iterate() - - return - - ############################################################################## - # - # Callback methods - # - # FIXME: rename methods better - # - ############################################################################## - - def py_signal_cb(self, api, e, sig, userdata): - #print "py_signal_cb:", api, e, sig, userdata - - if sig == 2: - self.pulse_disconnect() - elif sig == 15: - self.pulse_disconnect() - - return 0 - - ### - - def py_state_cb(self, c, b): - #print "py_state_cb:", c[0]._opaque_struct, b - state = pa_context_get_state(c); - - - if state == 0: - None - #print "py_state_cb: Unconnected" - - elif state == 1: - None - #print "py_state_cb: Connecting" - - elif state == 2: - None - #print "py_state_cb: Authorizing" - - elif state == 3: - None - #print "py_state_cb: Setting name" - - elif state == 4: - #print "py_state_cb: Ready" - self.complete_action() - self.connected = True - - elif state == 5: - None - #print "py_state_cb: Failed" - - elif state == 6: - None - #print "py_state_cb: Terminated" - if not self.retry: - import sys - sys.exit(pa_context_errno(c)) - - self.complete_action() - - else: - None - #print "py_state_cb: Unknown state", state - - - #print "py_state_cb:", pa_strerror(pa_context_errno(c)) - return 0 - - ### - - def py_client_cb(self, c, client_info, endofdata, userdata): - "Sink callback" - #print "py_client_cb:", c, client_info, endofdata, userdata - - if (endofdata): - self.complete_action() - return 0 - - if self.data == None: - self.data = [ PulseClientCtypes(client_info[0]) ] - else: - self.data.append(PulseClientCtypes(client_info[0])) - - return 0 - - ### - - def py_sink_input_cb(self, c, sink_input_info, endofdata, userdata): - "Sink input callback" - #print "py_sink_input_cb:", c, sink_input_info, endofdata, userdata - - if (endofdata): - self.complete_action() - return 0 - - if self.data == None: - self.data = [ PulseSinkInputInfo(sink_input_info[0]) ] - else: - self.data.append(PulseSinkInputInfo(sink_input_info[0])) - - return 0 - - ### - - def py_sink_cb(self, c, sink_info, endofdata, userdata): - "Sink callback" - #print "py_sink_cb:", c, sink_info, endofdata, userdata - - if (endofdata): - self.complete_action() - return 0 - - if self.data == None: - self.data = [ PulseSinkInfo(sink_info[0]) ] - else: - self.data.append(PulseSinkInfo(sink_info[0])) - - return 0 - ### - - def py_source_output_cb(self, c, source_output_info, endofdata, userdata): - "Source output callback" - #print "py_source_output_cb:", c, source_output_info, endofdata, userdata - - if (endofdata): - self.complete_action() - return 0 - - if self.data == None: - self.data = [ PulseSourceOutputInfo(source_output_info[0]) ] - else: - self.data.append(PulseSourceOutputInfo(source_output_info[0])) - - return 0 - - ### - - def py_source_cb(self, c, source_info, endofdata, userdata): - "Source callback" - #print "py_source_cb:", c, source_info, endofdata, userdata - - if (endofdata): - self.complete_action() - return 0 - - if self.data == None: - self.data = [ PulseSourceInfo(source_info[0]) ] - else: - self.data.append(PulseSourceInfo(source_info[0])) - - return 0 - ### - - def py_drain_cb(self, c, userdata): - #print "py_drain_cb: called" - return - - ### - - def py_subscribe_cb(self, c, event, index, userdata): - print 'py_subscribe_cb: called' - print 'py_subscribe_cb:', c, event, index, userdata - self.complete_action() - return 0 - - def py_context_success(self, c, success, userdata): - if success == 0: - None - #print "py_context_success: Failed" - else: - None - #print "py_context_success: Success" - - self.complete_action() - return 0 - - ############################################################################## - # - ############################################################################## - - def complete_action(self): - "Completed action" - #print "complete_action: Called" - self.action_done = True - return - - ### - - def start_action(self): - "Call every time when starting action" - #print "start_action: Called" - self.action_done = False - return - - ### - - def pulse_disconnect(self): - "Call when disconnect object" - - #print "pulse_disconnect: Disconnecting" - pa_context_disconnect(self.context) - pa_mainloop_free(self.mainloop) - return - - ### - - def pulse_context_error(self): - "Print context error msg" - - #print "pulse_context_error:", pa_strerror(pa_context_errno(self.context)) - self.pulse_disconnect() - return - - ### - - def pulse_sink_input_list(self): - "List all sink input" - #print "pulse_sink_input_list: Called"; - - return_data = None - - self.start_action() - - # Callback function - SINK_INPUT_LIST_CB = PA_SINK_INPUT_INFO_CB_T(self.py_sink_input_cb) - - self.operation = pa_context_get_sink_input_info_list(self.context, - SINK_INPUT_LIST_CB, - None) - self.pulse_iterate() - - #print "pulse_sink_input_list:", self.data - return_data = self.data - self.data = None - - return return_data - - ### - - def pulse_sink_list(self): - "List all sinks" - #print "pulse_sink_list: Called"; - - return_data = None - - self.start_action() - - # Callback function - SINK_LIST_CB = PA_SINK_INFO_CB_T(self.py_sink_cb) - - self.operation = pa_context_get_sink_info_list(self.context, - SINK_LIST_CB, - None) - self.pulse_iterate() - - #print "pulse_sink_list:", self.data - return_data = self.data - self.data = None - - return return_data - - ### - - def pulse_source_output_list(self): - "List all source outputs" - #print "pulse_source_output_list: Called"; - - return_data = None - - self.start_action() - - # Callback function - SOURCE_OUTPUT_LIST_CB = PA_SOURCE_OUTPUT_INFO_CB_T(self.py_source_output_cb) - - self.operation = pa_context_get_source_output_info_list(self.context, - SOURCE_OUTPUT_LIST_CB, - None) - self.pulse_iterate() - - #print "pulse_source_output_list:", self.data - return_data = self.data - self.data = None - - return return_data - - ### - - def pulse_source_list(self): - "List all sources" - #print "pulse_source_list: Called"; - - return_data = None - - self.start_action() - - # Callback function - SOURCE_LIST_CB = PA_SOURCE_INFO_CB_T(self.py_source_cb) - - self.operation = pa_context_get_source_info_list(self.context, - SOURCE_LIST_CB, - None) - self.pulse_iterate() - - #print "pulse_source_list:", self.data - return_data = self.data - self.data = None - - return return_data - - ### - def pulse_client_list(self): - "Fetch all clients" - - self.start_action() - - CLIENT_INFO_CB = PA_CLIENT_INFO_CB_T(self.py_client_cb) - - self.operation = pa_context_get_client_info_list(self.context, - CLIENT_INFO_CB, - None) - - self.pulse_iterate() - - #print "pulse_client_list:", self.data - return_data = self.data - self.data = None - - return return_data - - ### - - def pulse_sink_input_mute(self, index, mute): - "Mute one stream by index" - - self.start_action() - - CONTEXT_SUCCESS = PA_CONTEXT_SUCCESS_CB_T(self.py_context_success) - - self.operation = pa_context_set_sink_input_mute(self.context, - index, - mute, # Mute = 1 - CONTEXT_SUCCESS, - None) - - self.pulse_iterate() - - return - - ### - - def pulse_sink_mute(self, index, mute): - "Mute sink by index" - - self.start_action() - - CONTEXT_SUCCESS = PA_CONTEXT_SUCCESS_CB_T(self.py_context_success) - - self.operation = pa_context_set_sink_mute_by_index(self.context, - index, - mute, # Mute = 1 - CONTEXT_SUCCESS, - None) - - self.pulse_iterate() - - return - - ### - - def pulse_mute_stream(self, index): - self.pulse_sink_input_mute(index, 1) - return - - ### - - def pulse_unmute_stream(self, index): - self.pulse_sink_input_mute(index, 0) - return - - ### - - def pulse_mute_sink(self, index): - self.pulse_sink_mute(index, 1) - return - - ### - - def pulse_unmute_sink(self, index): - self.pulse_sink_mute(index, 0) - return - - ### - - def pulse_set_sink_input_volume(self, index, vol): - "Set volume by index" - self.start_action() - - #print "pulse_set_sink_input_volume:", index, "Vol:", vol - - #print vol.values - #for a in vol.toCtypes().values: - # print a - #return - - PA_CONTEXT_SUCCESS_CB = PA_CONTEXT_SUCCESS_CB_T(self.py_context_success) - - self.operation = pa_context_set_sink_input_volume(self.context, - index, - vol.toCtypes(), - PA_CONTEXT_SUCCESS_CB, - None) - - self.pulse_iterate() - - return - - ### - - def pulse_set_sink_volume(self, index, vol): - "Set volume by index" - self.start_action() - - #print "pulse_set_sink_volume:", index, "Vol:", vol - - PA_CONTEXT_SUCCESS_CB = PA_CONTEXT_SUCCESS_CB_T(self.py_context_success) - - self.operation = pa_context_set_sink_volume_by_index(self.context, - index, - vol.toCtypes(), - PA_CONTEXT_SUCCESS_CB, - None) - - self.pulse_iterate() - - return - - ### - - def pulse_context_subscribe(self, mask): - "Subscribe to event" - self.start_action() - print "pulse_context_subscribe:", mask - CONTEXT_SUCCESS = PA_CONTEXT_SUCCESS_CB_T(self.py_context_success) - - self.operation = pa_context_subscribe(self.context, - mask, - CONTEXT_SUCCESS, - None) - self.pulse_iterate() - return - - ### - - def pulse_context_set_subscribe_callback(self, callback): - "Set subscribe callback" - print "py_context_set_subscribe_callback:", callback - PA_CONTEXT_SUBSCRIBE_CB = PA_CONTEXT_SUBSCRIBE_CB_T(callback) - - # This returns a void, not a PA_OPERATION - pa_context_set_subscribe_callback(self.context, - PA_CONTEXT_SUBSCRIBE_CB, - None) - return - - ### - - def reconnect(self): - self.context = pa_context_new(self.mainloop_api, clientName) - - pa_context_set_state_callback(self.context, self.PA_STATE_CB, None) - - self.start_action() - - - if 0 > pa_context_connect(self.context, - self.server, - 0, - None): - if self.retry: - pa_context_disconnect(self.context) - #print "bar" - return - self.pulse_context_error() - #print "foo" - - self.pulse_iterate() - - return - - ### - - def pulse_iterate(self, times = 1): - "Runs queries" - #print "pulse_iterate: Called" - self.ret = pointer(c_int()) - - pa_mainloop_iterate(self.mainloop, times, self.ret) - - while not self.action_done: - pa_mainloop_iterate(self.mainloop, times, self.ret) - - return - - ### - - def pulse_run(self): - self.ret = pointer(c_int(0)) - - #pa_mainloop_iterate(self.mainloop, 11, self.ret) - pa_mainloop_run(self.mainloop, self.ret) - return diff --git a/pulsecaster/pulseaudio/PulseSink.py b/pulsecaster/pulseaudio/PulseSink.py deleted file mode 100644 index 15a6517..0000000 --- a/pulsecaster/pulseaudio/PulseSink.py +++ /dev/null @@ -1,213 +0,0 @@ -#!/usr/bin/python -# vi: et sw=2 -# -# PulseSink.py -# Copyright (C) 2009 Harry Karvonen -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Harry Karvonen <harry.karvonen@gmail.com> -# - -from lib_pulseaudio import * - -from PulseClient import PulseClient -from PulseVolume import PulseVolumeCtypes - -# This class contains all commons features from PulseSinkInputInfo and -# PulseSinkInfo -class PulseSink: - def __init__(self, index, name, mute, volume, client): - self.index = index - self.name = name - self.mute = mute - self.volume = volume - self.client = client - return - - # PROTOTYPE - def unmuteStream(self): - raise Exception("ABSTRACT METHOD CALLED") - return - - # PROTOTYPE - def muteStream(self): - raise Exception("ABSTRACT METHOD CALLED") - return - - # PROTOTYPE - def setVolume(self): - raise Exception("ABSTRACT METHOD CALLED") - return - - def printDebug(self): - print "self.index:", self.index - print "self.name:", self.name - print "self.mute:", self.mute - print "self.volume:", self.volume - print "self.client:", self.client - return - -################################################################################ - -class PulseSinkInfo(PulseSink): - def __init__(self, pa_sink_info): - PulseSink.__init__(self, pa_sink_info.index, - pa_sink_info.name, - pa_sink_info.mute, - PulseVolumeCtypes(pa_sink_info.volume), - PulseClient("Selected Sink")) - - self.description = pa_sink_info.description - self.sample_spec = pa_sink_info.sample_spec - self.channel_map = pa_sink_info.channel_map - self.owner_module = pa_sink_info.owner_module - self.monitor_source = pa_sink_info.monitor_source - self.monitor_source_name = pa_sink_info.monitor_source_name - self.latency = pa_sink_info.latency - self.driver = pa_sink_info.driver - self.flags = pa_sink_info.flags - self.proplist = pa_sink_info.proplist - self.configured_latency = pa_sink_info.configured_latency - - return - - ### - # - # Define PROTOTYPE functions - - def unmuteStream(self, pulseInterface): - pulseInterface.pulse_unmute_sink(self.index) - - self.mute = 0 - return - - ### - - def muteStream(self, pulseInterface): - pulseInterface.pulse_mute_sink(self.index) - - self.mute = 1 - return - - ### - - def setVolume(self, pulseInterface, volume): - pulseInterface.pulse_set_sink_volume(self.index, volume) - - self.volume = volume - return - - ### - - def printDebug(self): - print "PulseSinkInfo" - PulseSink.printDebug(self) - print "self.description", self.description - print "self.sample_spec", self.sample_spec - print "self.channel_map", self.channel_map - print "self.owner_module", self.owner_module - print "self.monitor_source", self.monitor_source - print "self.monitor_source_name", self.monitor_source_name - print "self.latency", self.latency - print "self.driver", self.driver - print "self.flags", self.flags - print "self.proplist", self.proplist - print "self.configured_latency", self.configured_latency - return - - ### - - def __str__(self): - return "ID: " + str(self.index) + ", Name: \"" + \ - self.name + "\"" - -################################################################################ - -class PulseSinkInputInfo(PulseSink): - def __init__(self, pa_sink_input_info): - PulseSink.__init__(self, pa_sink_input_info.index, - pa_sink_input_info.name, - pa_sink_input_info.mute, - PulseVolumeCtypes(pa_sink_input_info.volume), - PulseClient("Unknown client")) - self.owner_module = pa_sink_input_info.owner_module - self.client_id = pa_sink_input_info.client - self.sink = pa_sink_input_info.sink - self.sample_spec = pa_sink_input_info.sample_spec - self.channel_map = pa_sink_input_info.channel_map - self.buffer_usec = pa_sink_input_info.buffer_usec - self.sink_usec = pa_sink_input_info.sink_usec - self.resample_method = pa_sink_input_info.resample_method - self.driver = pa_sink_input_info.driver - #self.proplist = pa_sink_input_info.proplist - - return - - ### - - def setClient(self, c): - self.client = c - - ### - # - # Define PROTOTYPE functions - - def unmuteStream(self, pulseInterface): - pulseInterface.pulse_unmute_stream(self.index) - - self.mute = 0 - return - - ### - - def muteStream(self, pulseInterface): - pulseInterface.pulse_mute_stream(self.index) - - self.mute = 1 - return - - ### - - def setVolume(self, pulseInterface, volume): - pulseInterface.pulse_set_sink_input_volume(self.index, volume) - - self.volume = volume - return - - ### - - def printDebug(self): - print "PulseSinkInputInfo" - PulseSink.printDebug(self) - - print "self.owner_module:", self.owner_module - print "self.client_id:", self.client_id - print "self.sink:", self.sink - print "self.sample_spec:", self.sample_spec - print "self.channel_map:", self.channel_map - print "self.buffer_usec:", self.buffer_usec - print "self.sink_usec:", self.sink_usec - print "self.resample_method:", self.resample_method - print "self.driver:", self.driver - - ### - - def __str__(self): - if self.client: - return "ID: " + str(self.index) + ", Name: \"" + \ - self.name + "\", mute: " + str(self.mute) + ", " + str(self.client) - return "ID: " + str(self.index) + ", Name: \"" + \ - self.name + "\", mute: " + str(self.mute) diff --git a/pulsecaster/pulseaudio/PulseSource.py b/pulsecaster/pulseaudio/PulseSource.py deleted file mode 100644 index e99eaaf..0000000 --- a/pulsecaster/pulseaudio/PulseSource.py +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/python -# vi: et sw=2 -# -# PulseSource.py -# Copyright (C) 2009 Harry Karvonen, Paul W. Frields -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Harry Karvonen <harry.karvonen@gmail.com> -# Paul W. Frields <stickster@gmail.com> -# - -from lib_pulseaudio import * - -from PulseClient import PulseClient -from PulseVolume import PulseVolumeCtypes - -# This class contains all commons features from PulseSourceInputInfo and -# PulseSourceInfo -class PulseSource: - def __init__(self, index, name, mute, volume, client): - self.index = index - self.name = name - self.mute = mute - self.volume = volume - self.client = client - return - - # PROTOTYPE - def unmuteStream(self): - raise Exception("ABSTRACT METHOD CALLED") - return - - # PROTOTYPE - def muteStream(self): - raise Exception("ABSTRACT METHOD CALLED") - return - - # PROTOTYPE - def setVolume(self): - raise Exception("ABSTRACT METHOD CALLED") - return - - def printDebug(self): - print "self.index:", self.index - print "self.name:", self.name - print "self.mute:", self.mute - print "self.volume:", self.volume - print "self.client:", self.client - return - -################################################################################ - -class PulseSourceInfo(PulseSource): - def __init__(self, pa_source_info): - PulseSource.__init__(self, pa_source_info.index, - pa_source_info.name, - pa_source_info.mute, - PulseVolumeCtypes(pa_source_info.volume), - PulseClient("Selected Source")) - - self.description = pa_source_info.description - self.sample_spec = pa_source_info.sample_spec - self.channel_map = pa_source_info.channel_map - self.owner_module = pa_source_info.owner_module - self.monitor_of_sink = pa_source_info.monitor_of_sink - self.monitor_of_sink_name = pa_source_info.monitor_of_sink_name - self.latency = pa_source_info.latency - self.driver = pa_source_info.driver - self.flags = pa_source_info.flags - self.proplist = pa_source_info.proplist - self.configured_latency = pa_source_info.configured_latency - - return - - ### - # - # Define PROTOTYPE functions - - def unmuteStream(self, pulseInterface): - pulseInterface.pulse_unmute_source(self.index) - - self.mute = 0 - return - - ### - - def muteStream(self, pulseInterface): - pulseInterface.pulse_mute_source(self.index) - - self.mute = 1 - return - - ### - - def setVolume(self, pulseInterface, volume): - pulseInterface.pulse_set_source_volume(self.index, volume) - - self.volume = volume - return - - ### - - def printDebug(self): - print "PulseSourceInfo" - PulseSource.printDebug(self) - print "self.description", self.description - print "self.sample_spec", self.sample_spec - print "self.channel_map", self.channel_map - print "self.owner_module", self.owner_module - print "self.monitor_of_sink", self.monitor_of_sink - print "self.monitor_of_sink_name", self.monitor_of_sink_name - print "self.latency", self.latency - print "self.driver", self.driver - print "self.flags", self.flags - print "self.proplist", self.proplist - print "self.configured_latency", self.configured_latency - return - - ### - - def __str__(self): - return "ID: " + str(self.index) + ", Name: \"" + \ - self.name + "\"" - -################################################################################ - -class PulseSourceOutputInfo(PulseSource): - def __init__(self, pa_source_output_info): - PulseSource.__init__(self, pa_source_output_info.index, - pa_source_output_info.name, - pa_source_output_info.mute, - PulseVolumeCtypes(pa_source_output_info.volume), - PulseClient("Unknown client")) - self.owner_module = pa_source_output_info.owner_module - self.client_id = pa_source_output_info.client - self.source = pa_source_output_info.source - self.sample_spec = pa_source_output_info.sample_spec - self.channel_map = pa_source_output_info.channel_map - self.buffer_usec = pa_source_output_info.buffer_usec - self.source_usec = pa_source_output_info.source_usec - self.resample_method = pa_source_output_info.resample_method - self.driver = pa_source_output_info.driver - #self.proplist = pa_source_output_info.proplist - - return - - ### - - def setClient(self, c): - self.client = c - - ### - - def printDebug(self): - print "PulseSourceInputInfo" - PulseSource.printDebug(self) - - print "self.owner_module:", self.owner_module - print "self.client_id:", self.client_id - print "self.source:", self.source - print "self.sample_spec:", self.sample_spec - print "self.channel_map:", self.channel_map - print "self.buffer_usec:", self.buffer_usec - print "self.source_usec:", self.source_usec - print "self.resample_method:", self.resample_method - print "self.driver:", self.driver - - ### - - def __str__(self): - if self.client: - return "ID: " + str(self.index) + ", Name: \"" + \ - self.name + "\", mute: " + str(self.mute) + ", " + str(self.client) - return "ID: " + str(self.index) + ", Name: \"" + \ - self.name + "\", mute: " + str(self.mute) - diff --git a/pulsecaster/pulseaudio/PulseVolume.py b/pulsecaster/pulseaudio/PulseVolume.py deleted file mode 100644 index 1ff6b7a..0000000 --- a/pulsecaster/pulseaudio/PulseVolume.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/python -# vi: et sw=2 -# -# PulseVolume.py -# Copyright (C) 2009 Harry Karvonen -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Harry Karvonen <harry.karvonen@gmail.com> -# - -from lib_pulseaudio import * -import math - -# This contains all basic volume features -class PulseVolume: - def __init__(self, vol = 0, channels = 2): - self.channels = channels - - if vol > 100 or vol < 0: - print "WARNING: Volume is invalid!" - vol = 0 - - self.values = [vol] * self.channels - - return - - ############################## - # - # Type conversions - # - #def fromCtypes(self, pa_cvolume): - # self.channels = pa_cvolume.channels - # self.values = map(lambda x: (math.ceil(float(x) * 100 / PA_VOLUME_NORM)), - # pa_cvolume.values[0:self.channels]) - # return self - - def toCtypes(self): - ct = PA_CVOLUME() - ct.channels = self.channels - - for x in range(0, self.channels): - ct.values[x] = (self.values[x] * PA_VOLUME_NORM) / 100 - - return ct - - ### - - def printDebug(self): - print "PulseVolume" - print "self.channels:", self.channels - print "self.values:", self.values - #print "self.proplist:", self.proplist - - ### - - def incVolume(self, vol): - "Increment volume level (mono only)" - vol += sum(self.values) / len(self.values) - - vol = int(vol) - - if vol > 100: - vol = 100 - elif vol < 0: - vol = 0 - - self.setVolume(vol) - - return - - ### - - def setVolume(self, vol, balance = None): - if not balance: - self.values = [vol] * self.channels - else: - self.values[balance] = vol - - return - - ### - - def getVolume(self): - "Return mono volume" - return int(sum(self.values) / len(self.values)) - - ### - - def __str__(self): - return "Channels: " + str(self.channels) + \ - ", values: \"" + str(map(lambda x: str(x) + "%", self.values)) + "\"" - -################################################################################ - -class PulseVolumeCtypes(PulseVolume): - def __init__(self, pa_cvolume): - self.channels = pa_cvolume.channels - self.values = map(lambda x: (math.ceil(float(x) * 100 / PA_VOLUME_NORM)), - pa_cvolume.values[0:self.channels]) - return - diff --git a/pulsecaster/pulseaudio/__init__.py b/pulsecaster/pulseaudio/__init__.py deleted file mode 100644 index 8fa7217..0000000 --- a/pulsecaster/pulseaudio/__init__.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/python -# vi: et sw=2 -# -# __init__.py -# Copyright (C) 2009 Harry Karvonen -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Harry Karvonen <harry.karvonen@gmail.com> -# - - - -from PulseObj import * -from PulseVolume import * -from PulseClient import * -from PulseSink import * diff --git a/pulsecaster/pulseaudio/lib_pulseaudio.py b/pulsecaster/pulseaudio/lib_pulseaudio.py deleted file mode 100644 index 95a26d7..0000000 --- a/pulsecaster/pulseaudio/lib_pulseaudio.py +++ /dev/null @@ -1,733 +0,0 @@ -#!/usr/bin/python -# vi: et sw=2 -# -# lib_pulseaudio.py -# Copyright (C) 2009 Harry Karvonen -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Provides pulseaudio interface for python -# -# Author: Harry Karvonen <harry.karvonen@gmail.com> -# - -from ctypes import * - -pulse = CDLL("libpulse.so.0"); - -################################################################################ -# -# Constrants -# -################################################################################ - -PA_CHANNELS_MAX = 32 -PA_VOLUME_NORM = 0x10000 - -# sample types -( - PA_SAMPLE_U8, - PA_SAMPLE_ALAW, - PA_SAMPLE_ULAW, - PA_SAMPLE_S16LE, - PA_SAMPLE_S16BE, - PA_SAMPLE_FLOAT32LE, - PA_SAMPLE_FLOAT32BE, - PA_SAMPLE_S32LE, - PA_SAMPLE_S32BE, - PA_SAMPLE_S24LE, - PA_SAMPLE_S24BE, - PA_SAMPLE_S24_32LE, - PA_SAMPLE_S24_32BE, - PA_SAMPLE_MAX, - PA_SAMPLE_INVALID -) = map(c_int, xrange(15)) - -# channel positions -( - PA_CHANNEL_POSITION_INVALID, - PA_CHANNEL_POSITION_MONO, - PA_CHANNEL_POSITION_LEFT, - PA_CHANNEL_POSITION_RIGHT, - PA_CHANNEL_POSITION_CENTER, - PA_CHANNEL_POSITION_FRONT_LEFT, - PA_CHANNEL_POSITION_FRONT_RIGHT, - PA_CHANNEL_POSITION_FRONT_CENTER, - PA_CHANNEL_POSITION_REAR_CENTER, - PA_CHANNEL_POSITION_REAR_LEFT, - PA_CHANNEL_POSITION_REAR_RIGHT, - PA_CHANNEL_POSITION_LFE, - PA_CHANNEL_POSITION_SUBWOOFER, - PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, - PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, - PA_CHANNEL_POSITION_SIDE_LEFT, - PA_CHANNEL_POSITION_SIDE_RIGHT, - PA_CHANNEL_POSITION_AUX0, - PA_CHANNEL_POSITION_AUX1, - PA_CHANNEL_POSITION_AUX2, - PA_CHANNEL_POSITION_AUX3, - PA_CHANNEL_POSITION_AUX4, - PA_CHANNEL_POSITION_AUX5, - PA_CHANNEL_POSITION_AUX6, - PA_CHANNEL_POSITION_AUX7, - PA_CHANNEL_POSITION_AUX8, - PA_CHANNEL_POSITION_AUX9, - PA_CHANNEL_POSITION_AUX10, - PA_CHANNEL_POSITION_AUX11, - PA_CHANNEL_POSITION_AUX12, - PA_CHANNEL_POSITION_AUX13, - PA_CHANNEL_POSITION_AUX14, - PA_CHANNEL_POSITION_AUX15, - PA_CHANNEL_POSITION_AUX16, - PA_CHANNEL_POSITION_AUX17, - PA_CHANNEL_POSITION_AUX18, - PA_CHANNEL_POSITION_AUX19, - PA_CHANNEL_POSITION_AUX20, - PA_CHANNEL_POSITION_AUX21, - PA_CHANNEL_POSITION_AUX22, - PA_CHANNEL_POSITION_AUX23, - PA_CHANNEL_POSITION_AUX24, - PA_CHANNEL_POSITION_AUX25, - PA_CHANNEL_POSITION_AUX26, - PA_CHANNEL_POSITION_AUX27, - PA_CHANNEL_POSITION_AUX28, - PA_CHANNEL_POSITION_AUX29, - PA_CHANNEL_POSITION_AUX30, - PA_CHANNEL_POSITION_AUX31, - PA_CHANNEL_POSITION_TOP_CENTER, - PA_CHANNEL_POSITION_TOP_FRONT_LEFT, - PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, - PA_CHANNEL_POSITION_TOP_FRONT_CENTER, - PA_CHANNEL_POSITION_TOP_REAR_LEFT, - PA_CHANNEL_POSITION_TOP_REAR_RIGHT, - PA_CHANNEL_POSITION_TOP_REAR_CENTER, - PA_CHANNEL_POSITION_MAX -) = map(c_int, xrange(57)) - -# stream states -( - PA_STREAM_UNCONNECTED, - PA_STREAM_CREATING, - PA_STREAM_READY, - PA_STREAM_FAILED, - PA_STREAM_TERMINATED -) = map(c_int, xrange(5)) - -# stream directions -( - PA_STREAM_NODIRECTION, - PA_STREAM_PLAYBACK, - PA_STREAM_RECORD, - PA_STREAM_UPLOAD -) = map(c_int, xrange(4)) - -# stream flags -( - PA_STREAM_START_CORKED, - PA_STREAM_INTERPOLATE_TIMING, - PA_STREAM_NOT_MONOTONIC, - PA_STREAM_AUTO_TIMING_UPDATE, - PA_STREAM_NO_REMAP_CHANNELS, - PA_STREAM_NO_REMIX_CHANNELS, - PA_STREAM_FIX_FORMAT, - PA_STREAM_FIX_RATE, - PA_STREAM_FIX_CHANNELS, - PA_STREAM_DONT_MOVE, - PA_STREAM_VARIABLE_RATE, - PA_STREAM_PEAK_DETECT, - PA_STREAM_START_MUTED, - PA_STREAM_ADJUST_LATENCY, - PA_STREAM_EARLY_REQUESTS, - PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND, - PA_STREAM_START_UNMUTED, - PA_STREAM_FAIL_ON_SUSPEND -) = map(c_int, xrange(18)) - -# subscription event masks -PA_SUBSCRIPTION_MASK_NULL = 0x0000 -PA_SUBSCRIPTION_MASK_SINK = 0x0001 -PA_SUBSCRIPTION_MASK_SOURCE = 0x0002 -PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004 -PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008 -PA_SUBSCRIPTION_MASK_MODULE = 0x0010 -PA_SUBSCRIPTION_MASK_CLIENT = 0x0020 -PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040 -PA_SUBSCRIPTION_MASK_SERVER = 0x0080 -PA_SUBSCRIPTION_MASK_CARD = 0x0200 -PA_SUBSCRIPTION_MASK_ALL = 0x02ff - -# subscription event types -PA_SUBSCRIPTION_EVENT_SINK = 0x0000 -PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001 -PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002 -PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003 -PA_SUBSCRIPTION_EVENT_MODULE = 0x0004 -PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005 -PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006 -PA_SUBSCRIPTION_EVENT_SERVER = 0x0007 -PA_SUBSCRIPTION_EVENT_CARD = 0x0009 -PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000F -PA_SUBSCRIPTION_EVENT_NEW = 0x0000 -PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010 -PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020 -PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030 - -################################################################################ -# -# Structs -# -################################################################################ - -class PA_IO_EVENT(Structure): - _fields_ = [("_opaque_struct", c_int)] - -class PA_MAINLOOP(Structure): - _fields_ = [("_opaque_struct", c_int)] - -class PA_MAINLOOP_API(Structure): - _fields_ = [("_opaque_struct", c_int)] - -class PA_SIGNAL_EVENT(Structure): - _fields_ = [("_opaque_struct", c_int)] - -class PA_CONTEXT(Structure): - _fields_ = [("_opaque_struct", c_int)] - -class PA_OPERATION(Structure): - _fields_ = [("_opaque_struct", c_int)] - -class PA_STREAM(Structure): - _fields_ = [("_opaque_struct", c_int)] - -class PA_SAMPLE_SPEC(Structure): - _fields_ = [ - ("format", c_int), # FIXME check this - ("rate", c_uint32), - ("channels", c_uint8) - ] - -class PA_CHANNEL_MAP(Structure): - _fields_ = [ - ("channels", c_uint8), - ("map", c_int * PA_CHANNELS_MAX) - ] - -class PA_CVOLUME(Structure): - _fields_ = [ - ("channels", c_uint8), - ("values", c_uint32 * PA_CHANNELS_MAX) - ] - -class PA_BUFFER_ATTR(Structure): - _fields_ = [ - ("maxlength", c_uint32), - ("tlength", c_uint32), - ("prebuf", c_uint32), - ("minreq", c_uint32), - ("fragsize", c_uint32) - ] - -PA_USEC_T = c_uint64 - -class PA_SERVER_INFO(Structure): - _fields_ = [ - ('user_name', c_char_p), - ('host_name', c_char_p), - ('server_version', c_char_p), - ('server_name', c_char_p), - ('sample_spec', PA_SAMPLE_SPEC), - ('default_sink_name', c_char_p), - ('default_source_name', c_char_p), - ('cookie', c_uint32), - ('channel_map', PA_CHANNEL_MAP) - ] - -class PA_SINK_INPUT_INFO(Structure): - __slots__ = [ - 'index', - 'name', - 'owner_module', - 'client', - 'sink', - 'sample_spec', - 'channel_map', - 'volume', - 'buffer_usec', - 'sink_usec', - 'resample_method', - 'driver', - 'mute', - ] - _fields_ = [ - ("index", c_uint32), - ("name", c_char_p), - ("owner_module", c_uint32), - ("client", c_uint32), - ("sink", c_uint32), - ("sample_spec", PA_SAMPLE_SPEC), - ("channel_map", PA_CHANNEL_MAP), - ("volume", PA_CVOLUME), - ("buffer_usec", PA_USEC_T), - ("sink_usec", PA_USEC_T), - ("resample_method", c_char_p), - ("driver", c_char_p), - ("mute", c_int) - #("proplist", POINTER(c_int)) - ] - -class PA_SINK_INFO(Structure): - _fields_ = [ - ("name", c_char_p), - ("index", c_uint32), - ("description", c_char_p), - ("sample_spec", PA_SAMPLE_SPEC), - ("channel_map", PA_CHANNEL_MAP), - ("owner_module", c_uint32), - ("volume", PA_CVOLUME), - ("mute", c_int), - ("monitor_source", c_uint32), - ("monitor_source_name", c_char_p), - ("latency", PA_USEC_T), - ("driver", c_char_p), - ("flags", c_int), - ("proplist", POINTER(c_int)), - ("configured_latency", PA_USEC_T) - ] - -class PA_SOURCE_OUTPUT_INFO(Structure): - __slots__ = [ - 'index', - 'name', - 'owner_module', - 'client', - 'source', - 'sample_spec', - 'channel_map', - 'volume', - 'buffer_usec', - 'sink_usec', - 'resample_method', - 'driver', - 'mute', - ] - _fields_ = [ - ("index", c_uint32), - ("name", c_char_p), - ("owner_module", c_uint32), - ("client", c_uint32), - ("source", c_uint32), - ("sample_spec", PA_SAMPLE_SPEC), - ("channel_map", PA_CHANNEL_MAP), - ("volume", PA_CVOLUME), - ("buffer_usec", PA_USEC_T), - ("sink_usec", PA_USEC_T), - ("resample_method", c_char_p), - ("driver", c_char_p), - ("mute", c_int) - #("proplist", POINTER(c_int)) - ] - -class PA_SOURCE_INFO(Structure): - _fields_ = [ - ("name", c_char_p), - ("index", c_uint32), - ("description", c_char_p), - ("sample_spec", PA_SAMPLE_SPEC), - ("channel_map", PA_CHANNEL_MAP), - ("owner_module", c_uint32), - ("volume", PA_CVOLUME), - ("mute", c_int), - ("monitor_of_sink", c_uint32), - ("monitor_of_sink_name", c_char_p), - ("latency", PA_USEC_T), - ("driver", c_char_p), - ("flags", c_int), - ("proplist", POINTER(c_int)), - ("configured_latency", PA_USEC_T) - ] - -class PA_CLIENT_INFO(Structure): - _fields_ = [ - ("index", c_uint32), - ("name", c_char_p), - ("owner_module", c_uint32), - ("driver", c_char_p) - #("proplist", POINTER(c_int)) - ] - -################################################################################ -# -# Callback types -# -################################################################################ - -#PA_IO_EVENT_CB_T = CFUNCTYPE(c_void_p, -# POINTER(PA_MAINLOOP_API), -# POINTER(PA_IO_EVENT), -# c_int, -# c_int, -# c_void_p) - -# SIGNAL -PA_SIGNAL_CB_T = CFUNCTYPE(c_void_p, - POINTER(PA_MAINLOOP_API), - POINTER(PA_SIGNAL_EVENT), - c_int, - c_void_p) - -# STATE -PA_STATE_CB_T = CFUNCTYPE(c_int, - POINTER(PA_CONTEXT), - c_void_p) - -# CLIENT -PA_CLIENT_INFO_CB_T = CFUNCTYPE(c_void_p, - POINTER(PA_CONTEXT), - POINTER(PA_CLIENT_INFO), - c_int, - c_void_p) -# SINK INPUT -PA_SINK_INPUT_INFO_CB_T = CFUNCTYPE(c_int, #FIXME wrong type - POINTER(PA_CONTEXT), - POINTER(PA_SINK_INPUT_INFO), - c_int, - c_void_p) - -# SINK -PA_SINK_INFO_CB_T = CFUNCTYPE(c_int, #FIXME wrong type - POINTER(PA_CONTEXT), - POINTER(PA_SINK_INFO), - c_int, - c_void_p) -# SOURCE OUTPUT -PA_SOURCE_OUTPUT_INFO_CB_T = CFUNCTYPE(c_int, #FIXME wrong type - POINTER(PA_CONTEXT), - POINTER(PA_SOURCE_OUTPUT_INFO), - c_int, - c_void_p) - -# SOURCE -PA_SOURCE_INFO_CB_T = CFUNCTYPE(c_int, #FIXME wrong type - POINTER(PA_CONTEXT), - POINTER(PA_SOURCE_INFO), - c_int, - c_void_p) -# CONTEXT -PA_CONTEXT_DRAIN_CB_T = CFUNCTYPE(c_void_p, - POINTER(PA_CONTEXT), - c_void_p) - -PA_CONTEXT_SUCCESS_CB_T = CFUNCTYPE(c_void_p, - POINTER(PA_CONTEXT), - c_int, - c_void_p) - -PA_CONTEXT_SUBSCRIBE_CB_T = CFUNCTYPE(c_void_p, - POINTER(PA_CONTEXT), - c_int, - c_uint32, - c_void_p) - -################################################################################ -# -# Functions -# -################################################################################ - -# -# pa_strerror -pa_strerror = pulse.pa_strerror -pa_strerror.restype = c_char_p -pa_strerror.argtypes = [ - c_int -] - -# -# pa_mainloop_* -pa_mainloop_new = pulse.pa_mainloop_new -pa_mainloop_new.restype = POINTER(PA_MAINLOOP) -pa_mainloop_new.argtypes = [ -] - -pa_mainloop_get_api = pulse.pa_mainloop_get_api -pa_mainloop_get_api.restype = POINTER(PA_MAINLOOP_API) -pa_mainloop_get_api.argtypes = [ - POINTER(PA_MAINLOOP) -] - -pa_mainloop_run = pulse.pa_mainloop_run -pa_mainloop_run.restype = c_int -pa_mainloop_run.argtypes = [ - POINTER(PA_MAINLOOP), - POINTER(c_int) -] - -pa_mainloop_iterate = pulse.pa_mainloop_iterate -pa_mainloop_iterate.restype = c_int -pa_mainloop_iterate.argtypes = [ - POINTER(PA_MAINLOOP), - c_int, - POINTER(c_int) -] - -pa_mainloop_quit = pulse.pa_mainloop_quit -pa_mainloop_quit.restype = c_int -pa_mainloop_quit.argtypes = [ - POINTER(PA_MAINLOOP), - c_int -] - -pa_mainloop_dispatch = pulse.pa_mainloop_dispatch -pa_mainloop_dispatch.restype = c_int -pa_mainloop_dispatch.argtypes = [ - POINTER(PA_MAINLOOP) -] - -pa_mainloop_free = pulse.pa_mainloop_run -pa_mainloop_free.restype = c_int -pa_mainloop_free.argtypes = [ - POINTER(PA_MAINLOOP) -] - -# -# pa_signal_* -pa_signal_init = pulse.pa_signal_init -pa_signal_init.restype = c_int -pa_signal_init.argtypes = [ - POINTER(PA_MAINLOOP_API) -] - -pa_signal_new = pulse.pa_signal_new -pa_signal_new.restype = POINTER(PA_SIGNAL_EVENT) -pa_signal_new.argtypes = [ - c_int, - PA_SIGNAL_CB_T, - c_void_p -] - -# -# pa_context_* -pa_context_errno = pulse.pa_context_errno -pa_context_errno.restype = c_int -pa_context_errno.argtypes = [ - POINTER(PA_CONTEXT) -] - -pa_context_new = pulse.pa_context_new -pa_context_new.restype = POINTER(PA_CONTEXT) -pa_context_new.argtypes = [ - POINTER(PA_MAINLOOP_API), - c_char_p -] - - -pa_context_set_state_callback = pulse.pa_context_set_state_callback -pa_context_set_state_callback.restype = None -pa_context_set_state_callback.argtypes = [ - POINTER(PA_CONTEXT), - PA_STATE_CB_T, - c_void_p -] - -pa_context_connect = pulse.pa_context_connect -pa_context_connect.restype = c_int -pa_context_connect.argtypes = [ - POINTER(PA_CONTEXT), - c_char_p, - c_int, #FIXME | isn't correct - POINTER(c_int) -] - -pa_context_get_state = pulse.pa_context_get_state -pa_context_get_state.restype = c_int; -pa_context_get_state.argtypes = [ - POINTER(PA_CONTEXT) -] - -pa_context_drain = pulse.pa_context_drain -pa_context_drain.restype = POINTER(PA_OPERATION) -pa_context_drain.argtypes = [ - POINTER(PA_CONTEXT), - PA_CONTEXT_DRAIN_CB_T, - c_void_p -] - -pa_context_disconnect = pulse.pa_context_disconnect -pa_context_disconnect.restype = c_int; -pa_context_disconnect.argtypes = [ - POINTER(PA_CONTEXT) -] - -# -# pa_context_*_sink_* -pa_context_get_sink_input_info_list = pulse.pa_context_get_sink_input_info_list -pa_context_get_sink_input_info_list.restype = POINTER(c_int) -pa_context_get_sink_input_info_list.argtypes = [ - POINTER(PA_CONTEXT), - PA_SINK_INPUT_INFO_CB_T, - c_void_p -] - -pa_context_get_sink_info_list = pulse.pa_context_get_sink_info_list -pa_context_get_sink_info_list.restype = POINTER(c_int) -pa_context_get_sink_info_list.argtypes = [ - POINTER(PA_CONTEXT), - PA_SINK_INFO_CB_T, - c_void_p -] - -pa_context_set_sink_mute_by_index = pulse.pa_context_set_sink_mute_by_index -pa_context_set_sink_mute_by_index.restype = POINTER(c_int) -pa_context_set_sink_mute_by_index.argtypes = [ - POINTER(PA_CONTEXT), - c_uint32, - c_int, - PA_CONTEXT_SUCCESS_CB_T, - c_void_p -] - -pa_context_set_sink_input_mute = pulse.pa_context_set_sink_input_mute -pa_context_set_sink_input_mute.restype = POINTER(c_int) -pa_context_set_sink_input_mute.argtypes = [ - POINTER(PA_CONTEXT), - c_uint32, - c_int, - PA_CONTEXT_SUCCESS_CB_T, - c_void_p -] - -pa_context_set_sink_volume_by_index = pulse.pa_context_set_sink_volume_by_index -pa_context_set_sink_volume_by_index.restype = POINTER(c_int) -pa_context_set_sink_volume_by_index.argtypes = [ - POINTER(PA_CONTEXT), - c_uint32, - POINTER(PA_CVOLUME), - PA_CONTEXT_SUCCESS_CB_T, - c_void_p -] - -pa_context_set_sink_input_volume = pulse.pa_context_set_sink_input_volume -pa_context_set_sink_input_volume.restype = POINTER(c_int) -pa_context_set_sink_input_volume.argtypes = [ - POINTER(PA_CONTEXT), - c_uint32, - POINTER(PA_CVOLUME), - PA_CONTEXT_SUCCESS_CB_T, - c_void_p -] - -# -# pa_context_*_source_* -pa_context_get_source_output_info_list = pulse.pa_context_get_source_output_info_list -pa_context_get_source_output_info_list.restype = POINTER(c_int) -pa_context_get_source_output_info_list.argtypes = [ - POINTER(PA_CONTEXT), - PA_SOURCE_OUTPUT_INFO_CB_T, - c_void_p -] - -pa_context_get_source_info_list = pulse.pa_context_get_source_info_list -pa_context_get_source_info_list.restype = POINTER(c_int) -pa_context_get_source_info_list.argtypes = [ - POINTER(PA_CONTEXT), - PA_SOURCE_INFO_CB_T, - c_void_p -] - -pa_context_set_source_mute_by_index = pulse.pa_context_set_source_mute_by_index -pa_context_set_source_mute_by_index.restype = POINTER(c_int) -pa_context_set_source_mute_by_index.argtypes = [ - POINTER(PA_CONTEXT), - c_uint32, - c_int, - PA_CONTEXT_SUCCESS_CB_T, - c_void_p -] - -pa_context_set_source_volume_by_index = pulse.pa_context_set_source_volume_by_index -pa_context_set_source_volume_by_index.restype = POINTER(c_int) -pa_context_set_source_volume_by_index.argtypes = [ - POINTER(PA_CONTEXT), - c_uint32, - POINTER(PA_CVOLUME), - PA_CONTEXT_SUCCESS_CB_T, - c_void_p -] - -# -# pa_context_*_client_* - -pa_context_get_client_info_list = pulse.pa_context_get_client_info_list -pa_context_get_client_info_list.restype = POINTER(c_int) -pa_context_get_client_info_list.argtypes = [ - POINTER(PA_CONTEXT), - PA_CLIENT_INFO_CB_T, - c_void_p -] -pa_context_get_client_info = pulse.pa_context_get_client_info -pa_context_get_client_info.restype = POINTER(c_int) -pa_context_get_client_info.argtypes = [ - POINTER(PA_CONTEXT), - c_uint32, - PA_CLIENT_INFO_CB_T, - c_void_p -] - -# -# pa_context_*_subscribe* -pa_context_set_subscribe_callback = pulse.pa_context_set_subscribe_callback -pa_context_set_subscribe_callback.restype = c_int -pa_context_set_subscribe_callback.argtypes = [ - POINTER(PA_CONTEXT), - PA_CONTEXT_SUBSCRIBE_CB_T, - c_void_p -] - -pa_context_subscribe = pulse.pa_context_subscribe -pa_context_subscribe.restype = POINTER(PA_OPERATION) -pa_context_subscribe.argtypes = [ - POINTER(PA_CONTEXT), - c_int, - PA_CONTEXT_SUCCESS_CB_T, - c_void_p -] - -# -# pa_operation_* -pa_operation_unref = pulse.pa_operation_unref -pa_operation_unref.restype = c_int -pa_operation_unref.argtypes = [ - POINTER(PA_OPERATION) -] - -# -# pa_stream_* -pa_stream_connect_record = pulse.pa_stream_connect_record -pa_stream_connect_record.restype = c_int -pa_stream_connect_record.argtypes = [ - POINTER(PA_STREAM), - c_char_p, - POINTER(PA_BUFFER_ATTR), - c_int # original pa_stream_flags_t -] - -pa_stream_peek = pulse.pa_stream_peek -pa_stream_peek.restype = c_int -pa_stream_peek.argtypes = [ - POINTER(PA_STREAM), - POINTER(c_void_p), # original is void **data, no idea if this works - POINTER(c_size_t) -] - diff --git a/pulsecaster/ui.py b/pulsecaster/ui.py deleted file mode 100644 index 67829e1..0000000 --- a/pulsecaster/ui.py +++ /dev/null @@ -1,239 +0,0 @@ -#!/usr/bin/python -# -# Copyright (C) 2009 Paul W. Frields -# -# 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 3 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, see <http://www.gnu.org/licenses/>. -# -# -# Author: Paul W. Frields <stickster@gmail.com> - - -from config import * -import gconfig -from pulseaudio.PulseObj import PulseObj -import gtk -#import gtk.glade -import os -import dbus -import gobject -import dbus.mainloop.glib -import pygst -pygst.require('0.10') -import gst - -# FIXME -fname = os.getcwd() + '/data/pulsecaster.glade' -logofile = os.getcwd() + '/data/icons/scalable/pulsecaster.svg' -_debug = True - -def _debugPrint(text): - if _debug: - print (text) - -class PulseCasterUI: - def __init__(self): - self.builder = gtk.Builder() - self.builder.add_from_file(fname) - self.logo = gtk.gdk.pixbuf_new_from_file(logofile) - self.gconfig = gconfig.PulseCasterGconf() - - self.warning = self.builder.get_object('warning') - self.dismiss = self.builder.get_object('dismiss_warning') - self.swckbox = self.builder.get_object('skip_warn_checkbox') - self.swckbox.set_active(int(self.gconfig.skip_warn)) - self.dismiss.connect('clicked', self.hideWarn) - - # Main dialog basics - self.main = self.builder.get_object('main_dialog') - self.main.set_title(NAME) - self.main_title = self.builder.get_object('main_title') - self.main_title.set_label('<big><big><big><b><i>' + - NAME + '</i></b></big></big></big>') - self.main.connect('delete_event', self.on_close) - self.about_button = self.builder.get_object('about_button') - self.about_button.connect('clicked', self.showAbout) - self.close = self.builder.get_object('close_button') - self.close.connect('clicked', self.on_close) - self.record = self.builder.get_object('record_button') - self.record_id = self.record.connect('clicked', self.on_record) - - # About dialog basics - self.about = self.builder.get_object('about_dialog') - self.about.connect('delete_event', self.hideAbout) - self.about.connect('response', self.hideAbout) - self.about.set_name(NAME) - self.about.set_version(VERSION) - self.about.set_copyright(COPYRIGHT) - self.about.set_comments(DESCRIPTION) - self.about.set_license(LICENSE_TEXT) - self.about.set_website(URL) - self.about.set_website_label(URL) - self.authors = [AUTHOR + ' <' + AUTHOR_EMAIL + '>'] - for contrib in CONTRIBUTORS: - self.authors.append(contrib) - self.about.set_authors(self.authors) - self.about.set_logo(self.logo) - self.about.set_program_name(NAME) - - # Create PulseAudio backing - self.pa = PulseObj(clientName=NAME) - - # Create and populate combo boxes - self.combo_vbox = self.builder.get_object('combo_vbox') - self.user_vox = gtk.combo_box_new_text() - self.subject_vox = gtk.combo_box_new_text() - self.combo_vbox.add(self.user_vox) - self.combo_vbox.add(self.subject_vox) - self.user_vox.connect('button-press-event', self.repop_sources) - self.subject_vox.connect('button-press-event', self.repop_sources) - - # Fill the combo boxes initially - self.repop_sources() - self.listener = PulseCasterListener(self) - - self.destfile_label = self.builder.get_object('destfile_label') - self.file_chooser = self.builder.get_object('file_chooser') - self.open_button = self.builder.get_object('open_button') - self.open_button.connect('button-press-event', self.showFileChooser) - self.file_chooser_cancel_button = self.builder.get_object('file_chooser_cancel_button') - self.file_chooser_cancel_button.connect('clicked', self.hideFileChooser) - self.file_chooser_save_button = self.builder.get_object('file_chooser_save_button') - self.file_chooser_save_button.connect('clicked', self.updateFileSinkPath) - self.filesinkpath = os.path.join(os.getenv('HOME'), 'podcast.ogg') - self.file_chooser.set_filename(self.filesinkpath) - self.destfile_label.set_text(self.filesinkpath) - - def repop_sources(self, *args): - self.sources = self.pa.pulse_source_list() - l = self.user_vox.get_model() - l.clear() - l = self.subject_vox.get_model() - l.clear() - self.uservoxes = [] - self.subjectvoxes = [] - for source in self.sources: - if source.monitor_of_sink_name == None: - self.uservoxes.append((source.name, source.description)) - self.user_vox.append_text(source.description) - else: - self.subjectvoxes.append((source.name, source.description)) - self.subject_vox.append_text(source.description) - self.user_vox.set_active(0) - self.subject_vox.set_active(0) - self.combo_vbox.reorder_child(self.user_vox, 0) - self.combo_vbox.reorder_child(self.subject_vox, 1) - self.combo_vbox.show_all() - - if self.gconfig.skip_warn is False: - self.warning.show() - else: - self.hideWarn() - - def on_record(self, *args): - # Get filename - # Check whether filename exists, if so, overwrite? y/n - filesinkpath = self.destfile_label.get_text() - if filesinkpath is None: - return - # Set up GStreamer stuff - self.combiner = gst.Pipeline('PulseCasterCombinePipe') - self.lsource = gst.element_factory_make('pulsesrc', 'lsrc') - self.lsource.set_property('device', - self.uservoxes[self.user_vox.get_active()][0]) - self.rsource = gst.element_factory_make('pulsesrc', 'rsrc') - self.rsource.set_property('device', - self.subjectvoxes[self.subject_vox.get_active()][0]) - - self.adder = gst.element_factory_make('adder', 'mix') - self.encoder = gst.element_factory_make('vorbisenc', 'enc') - self.muxer = gst.element_factory_make('oggmux', 'mux') - self.filesink = gst.element_factory_make('filesink', 'fsink') - self.filesink.set_property('location', filesinkpath) - - self.combiner.add(self.lsource, - self.rsource, - self.adder, - self.encoder, - self.muxer, - self.filesink) - gst.element_link_many(self.lsource, - self.adder, - self.encoder, - self.muxer, - self.filesink) - gst.element_link_many(self.rsource, self.adder) - - # FIXME: Dim elements other than the 'record' widget - self.record.set_label(gtk.STOCK_MEDIA_STOP) - self.record.disconnect(self.record_id) - self.stop_id = self.record.connect('clicked', self.on_stop) - self.record.show() - self.combiner.set_state(gst.STATE_PLAYING) - - def on_stop(self, *args): - self.combiner.set_state(gst.STATE_NULL) - self.record.set_label(gtk.STOCK_MEDIA_RECORD) - self.record.disconnect(self.stop_id) - self.record_id = self.record.connect('clicked', self.on_record) - self.record.show() - - def on_close(self, *args): - try: - self.pa.disconnect() - except: - pass - gtk.main_quit() - - def hideWarn(self, *args): - self.gconfig.change_warn(self.swckbox.get_active()) - self.warning.hide() - self.main.show() - - def showAbout(self, *args): - self.about.show() - - def hideAbout(self, *args): - self.about.hide() - - def showFileChooser(self, *args): - self.file_chooser.set_filename(self.filesinkpath) - self.file_chooser.show() - - def hideFileChooser(self, *args): - self.file_chooser.hide() - - def updateFileSinkPath(self, *args): - self.hideFileChooser() - self.filesinkpath = self.file_chooser.get_filename() - self.destfile_label.set_text(self.filesinkpath) - - -class PulseCasterListener: - def __init__(self, ui): - dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) - self.bus = dbus.SystemBus() - - self.bus.add_signal_receiver(ui.repop_sources, - signal_name='DeviceAdded', - dbus_interface='org.freedesktop.Hal.Manager', - path='/org/freedesktop/Hal/Manager') - self.bus.add_signal_receiver(ui.repop_sources, - signal_name='DeviceRemoved', - dbus_interface='org.freedesktop.Hal.Manager', - path='/org/freedesktop/Hal/Manager') - - -if __name__ == '__main__': - pulseCaster = PulseCasterUI() - gtk.main() |