New paparazzicenter in Python (#1811)

This is the result of a student project to develop a new paparazzi center based on Python/Qt.
See http://wiki.paparazziuav.org/wiki/Paparazzi_Center/Evolutions for the main idea and development process.
It can be tested by running the main paparazzi launcher with the -python option. I more convenient way might be added later.
This PR is mostly a way to not loose this work, and other people are encourage to improve it in many aspects (HMI, functionalities, ...).
This commit is contained in:
Gautier Hattenberger
2016-07-19 22:52:15 +02:00
committed by Felix Ruess
parent 1ce9bcfb58
commit 9763a70ca9
58 changed files with 10571 additions and 1 deletions
+44
View File
@@ -0,0 +1,44 @@
<!ELEMENT cache (system|data)*>
<!ELEMENT system (window|filters)*>
<!ELEMENT window (x|y|width|height)*>
<!ELEMENT x (#PCDATA)>
<!ATTLIST x
value CDATA #REQUIRED>
<!ELEMENT y (#PCDATA)>
<!ATTLIST y
value CDATA #REQUIRED>
<!ELEMENT width (#PCDATA)>
<!ATTLIST width
value CDATA #REQUIRED>
<!ELEMENT height (#PCDATA)>
<!ATTLIST height
value CDATA #REQUIRED>
<!ELEMENT filters (level|info|warning|error)*>
<!ELEMENT level (#PCDATA)>
<!ATTLIST level
value CDATA #REQUIRED>
<!ELEMENT info (#PCDATA)>
<!ATTLIST info
value CDATA #REQUIRED>
<!ELEMENT warning (#PCDATA)>
<!ATTLIST warning
value CDATA #REQUIRED>
<!ELEMENT error (#PCDATA)>
<!ATTLIST error
value CDATA #REQUIRED>
<!ELEMENT data (set|config|target|device|session)*>
<!ELEMENT set (#PCDATA)>
<!ATTLIST set
value CDATA #REQUIRED>
<!ELEMENT config (#PCDATA)>
<!ATTLIST config
value CDATA #REQUIRED>
<!ELEMENT target (#PCDATA)>
<!ATTLIST target
value CDATA #REQUIRED>
<!ELEMENT device (#PCDATA)>
<!ATTLIST device
value CDATA #REQUIRED>
<!ELEMENT session (#PCDATA)>
<!ATTLIST session
value CDATA #REQUIRED>
+69
View File
@@ -0,0 +1,69 @@
###############################################################################
# Welcome in the future Paparazzi Center ! #
###############################################################################
1) Run instructions :
To run the new Paparazzi Center, you need :
> A Linux or IOS system
> A correctly installed version of Paparazzi UAV software
> Python 3.4 (install package 'python3')
> PyQt5 (install package 'python3-pyqt5')
First "git pull" my part of code or copy the current "./sw/supervision/python"
version into your own "./sw/supervision" directory. No installation nor
compilation is needed.
Then, make the 'main.py' file executable ('chmod +x main.py') and launch the
program in a terminal ('./main.py') or from the paparazzi launcher (soon).
###############################################################################
2) Feedback :
I'm an intern student at the ENAC and my mission is to reconceive the Paparazzi
Center in Python/Qt to make it more intuitive and 'maintainable' (that can
evolve easily). So I'd really like to have your feeling about my propositions !
If you have any question or comment about it, please contact me by
Github (my pseudo is 'floienac' and I use Gitter) or by mail
('f.bitard@gmail.com').
I'd be glad to be criticized, especially if you're directly concerned as a
final user or a developer of Paparazzi UAV.
Thanks by advance :)
Florian BITARD - intern student at the ENAC's drones lab
(February to June 2016)
http://wiki.paparazziuav.org/wiki/Paparazzi_Center/Evolutions
###############################################################################
3) GNU License :
As this new Paparazzi Center is a free and open source software part, feel
free to correct bugs, improve the functions and add new ones to it.
# Paparazzi center utilities
#
# Copyright (C) 2016 ENAC, Florian BITARD (intern student)
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi 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 paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
+103
View File
@@ -0,0 +1,103 @@
# Paparazzi center utilities
#
# Copyright (C) 2016 ENAC, Florian BITARD (intern student)
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi 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 paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################
# [Imports]
import ui.set_manager as manager
import ui.popup as popup
import PyQt5.QtWidgets as Widgets
import logging
import os
###############################################################################
# [Constants]
LOGGER = logging.getLogger("[DIALOGS]")
UI_DIR = "ui"
DATA_CHANGED_POPUP_TYPE = "data changed"
DATA_CHANGED_POPUP_HTML = "data_changed.html"
CREDITS_POPUP_TYPE = "credits"
CREDITS_POPUP_HTML = "credits.html"
TUTORIAL_POPUP_TYPE = "tutorial"
TUTORIAL_POPUP_HTML = "tutorial.html"
###############################################################################
# [SettingsManager class]
class SettingsManager(Widgets.QDialog):
"""Class to manage the settings manager HMI."""
def __init__(self):
super(SettingsManager, self).__init__()
self.ui = manager.Ui_Dialog()
self.ui.setupUi(self)
###############################################################################
# [SettingsManager class]
class Popup(Widgets.QDialog):
"""Class to manage the settings manager HMI."""
def __init__(self, popup_type=None):
super(Popup, self).__init__()
self.ui = popup.Ui_Dialog()
self.ui.setupUi(self)
self.ui.textBrowser.setOpenExternalLinks(True)
self.type = popup_type
self.set_popup_details()
def set_popup_details(self):
"""
-> Set the title, the text and the dialog buttons of the popup window
according to its type.
"""
if self.type == DATA_CHANGED_POPUP_TYPE:
self.setWindowTitle("/!\ Some unsaved data found !")
self.ui.buttonBox.setStandardButtons(
Widgets.QDialogButtonBox.Cancel | Widgets.QDialogButtonBox.Save)
html_file = DATA_CHANGED_POPUP_HTML
elif self.type == CREDITS_POPUP_TYPE:
self.setWindowTitle("Paparazzi UAV Center credits "
"(Python/Qt version)")
self.ui.buttonBox.setStandardButtons(Widgets.QDialogButtonBox.Close)
html_file = CREDITS_POPUP_HTML
elif self.type == TUTORIAL_POPUP_TYPE:
self.setWindowTitle("Tutorials and documents")
self.ui.buttonBox.setStandardButtons(Widgets.QDialogButtonBox.Close)
html_file = TUTORIAL_POPUP_HTML
else:
self.setWindowTitle("Popup without specific type.")
html_file = "none.html"
try:
html_config_path = os.path.join(UI_DIR, html_file)
with open(html_config_path, 'r') as popup_html_content:
self.ui.textBrowser.setHtml(popup_html_content.read())
except FileNotFoundError:
print("Popup HTML configuration file not found ! "
"('%s' should be in 'ui' directory.)" % html_file)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg7698" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs7700">
<linearGradient id="linearGradient3140" y2="31.211" gradientUnits="userSpaceOnUse" x2="23.576" gradientTransform="matrix(.41578 -.41749 .51898 .51462 -15.747 2.6504)" y1="25.357" x1="23.576">
<stop id="stop2541" style="stop-color:#181818" offset="0"/>
<stop id="stop2543" style="stop-color:#dbdbdb" offset=".13483"/>
<stop id="stop2545" style="stop-color:#a4a4a4" offset=".20224"/>
<stop id="stop2547" style="stop-color:#fff" offset=".26966"/>
<stop id="stop2549" style="stop-color:#8d8d8d" offset=".44650"/>
<stop id="stop2551" style="stop-color:#959595" offset=".57114"/>
<stop id="stop2553" style="stop-color:#cecece" offset=".72038"/>
<stop id="stop2555" style="stop-color:#181818" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3142" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.868 .69303)" y1="24.99" x1="30.038">
<stop id="stop2559" style="stop-color:#565656" offset="0"/>
<stop id="stop2561" style="stop-color:#9a9a9a" offset=".5"/>
<stop id="stop2563" style="stop-color:#545454" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3144" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.983 .80921)" y1="24.99" x1="30.038">
<stop id="stop2567" style="stop-color:#b1b1b1" offset="0"/>
<stop id="stop2569" style="stop-color:#fff" offset=".5"/>
<stop id="stop2571" style="stop-color:#8f8f8f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3146" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.466 .28929)" y1="24.99" x1="30.038">
<stop id="stop2575" style="stop-color:#565656" offset="0"/>
<stop id="stop2577" style="stop-color:#9a9a9a" offset=".5"/>
<stop id="stop2579" style="stop-color:#545454" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3148" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.581 .40547)" y1="24.99" x1="30.038">
<stop id="stop2583" style="stop-color:#b1b1b1" offset="0"/>
<stop id="stop2585" style="stop-color:#fff" offset=".5"/>
<stop id="stop2587" style="stop-color:#8f8f8f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3150" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.062 -.11641)" y1="24.99" x1="30.038">
<stop id="stop2591" style="stop-color:#565656" offset="0"/>
<stop id="stop2593" style="stop-color:#9a9a9a" offset=".5"/>
<stop id="stop2595" style="stop-color:#545454" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3152" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.177 -.00021970)" y1="24.99" x1="30.038">
<stop id="stop2599" style="stop-color:#b1b1b1" offset="0"/>
<stop id="stop2601" style="stop-color:#fff" offset=".5"/>
<stop id="stop2603" style="stop-color:#8f8f8f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3154" y2="26.03" gradientUnits="userSpaceOnUse" x2="9" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.637 .46249)" y1="29.057" x1="9">
<stop id="stop2607" style="stop-color:#ece5a5" offset="0"/>
<stop id="stop2609" style="stop-color:#fcfbf2" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3156" y2="41.392" gradientUnits="userSpaceOnUse" x2="9.5221" gradientTransform="matrix(.37638 .036153 0.0367 .37487 -2.2183 -1.1331)" y1="37.372" x1="5.5179">
<stop id="stop2613" style="stop-color:#dbce48" offset="0"/>
<stop id="stop2615" style="stop-color:#c5b625" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3735" y2="2.001" gradientUnits="userSpaceOnUse" x2="2" y1="18.001" x1="2">
<stop id="stop3106-1" style="stop-color:#969696" offset="0"/>
<stop id="stop3108-2" style="stop-color:#bebebe" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3737" y2="17.001" gradientUnits="userSpaceOnUse" x2="6" y1="4.001" x1="6">
<stop id="stop3602-9" style="stop-color:#fff" offset="0"/>
<stop id="stop3604-4" style="stop-color:#e6e6e6" offset="1"/>
</linearGradient>
</defs>
<g id="g3433">
<g id="layer1-3" transform="translate(0 -2.001)">
<path id="path2855" style="stroke-linejoin:round;stroke:url(#linearGradient3735);stroke-linecap:round;fill:url(#linearGradient3737)" d="m0.54277 2.501 12.957 0.01 0.042 14.99h-12.999l-1e-8 -15z"/>
<g id="g4198" style="fill:#999" transform="matrix(1.0195 0 0 1 29.21 6.7744)">
<path id="path6035" style="opacity:.7;fill:#686868" d="m-25.666-1.7733h1.1241v1h-1.1241v-1z"/>
<path id="path6033" style="opacity:.7;fill:#686868" d="m-24.388-1.7733h1.0606v1h-1.0606v-1z"/>
<path id="path6031" style="opacity:.7;fill:#686868" d="m-23.175-1.7733h0.93368v1h-0.93368v-1z"/>
<path id="path6029" style="opacity:.7;fill:#686868" d="m-22.088-1.7733h0.41011v1h-0.41011v-1z"/>
<path id="path6027" style="opacity:.7;fill:#686868" d="m-21.525-1.7733h0.91782v1h-0.91782v-1z"/>
<path id="path6025" style="opacity:.7;fill:#686868" d="m-20.454-1.7733h2.3775v1h-2.3775v-1z"/>
<path id="path6017" style="opacity:.7;fill:#686868" d="m-25.666 4.2267h1.1241v1h-1.1241v-1z"/>
<path id="path6015" style="opacity:.7;fill:#686868" d="m-24.388 4.2267h1.0606v1h-1.0606v-1z"/>
<path id="path6013" style="opacity:.7;fill:#686868" d="m-23.175 4.2267h0.93368v1h-0.93368v-1z"/>
<path id="path6011" style="opacity:.7;fill:#686868" d="m-22.088 4.2267h0.41011v1h-0.41011v-1z"/>
<path id="path6009" style="opacity:.7;fill:#686868" d="m-21.525 4.2267h0.91781v1h-0.91781v-1z"/>
<path id="path5999" style="opacity:.7;fill:#686868" d="m-25.666 0.22666h1.7428v1h-1.7428v-1z"/>
<path id="path5997" style="opacity:.7;fill:#686868" d="m-23.764 0.22666h0.83849v1h-0.83849v-1z"/>
<path id="path5995" style="opacity:.7;fill:#686868" d="m-22.766 0.22666h0.39424v1h-0.39424v-1z"/>
<path id="path5993" style="opacity:.7;fill:#686868" d="m-22.213 0.22666h0.75916v1h-0.75916v-1z"/>
<path id="path5991" style="opacity:.7;fill:#686868" d="m-21.295 0.22666h0.75916v1h-0.75916v-1z"/>
<path id="path5989" style="opacity:.7;fill:#686868" d="m-20.376 0.22666h1.2193v1h-1.2193v-1z"/>
<path id="path5981" style="opacity:.7;fill:#686868" d="m-25.666 2.2267h1.9967v1h-1.9967v-1z"/>
<path id="path5979" style="opacity:.7;fill:#686868" d="m-23.512 2.2267h2.1395v1h-2.1395v-1z"/>
<path id="path5977" style="opacity:.7;fill:#686868" d="m-21.216 2.2267h0.85436v1h-0.85436v-1z"/>
<path id="path5975" style="opacity:.7;fill:#686868" d="m-20.205 2.2267h2.0125v1h-2.0125v-1z"/>
<path id="path2916" style="opacity:.7;fill:#686868" d="m-25.666 6.2267h1.1241v1h-1.1241v-1z"/>
<path id="path2918" style="opacity:.7;fill:#686868" d="m-24.388 6.2267h1.0606v1h-1.0606v-1z"/>
<path id="path2920" style="opacity:.7;fill:#686868" d="m-23.175 6.2267h0.93368v1h-0.93368v-1z"/>
</g>
<path id="path2422" style="opacity:.15;fill:#0c0c0c;fill-rule:evenodd" d="m13.297 7.7055c-0.08415-0.04997-0.14927-0.03697-0.19229-0.0092l-5.7296 3.6801-1.0545 0.67922-0.03247 0.01374-1.2485 2.8377 3.0941 0.094 0.02569-0.01734 1.0613-0.67562 5.7281-3.7118c0.171-0.111-0.101-0.848-0.611-1.656-0.383-0.606-0.789-1.0846-1.041-1.2345z"/>
</g>
<g id="g8626" transform="matrix(.70258 0 0 .70426 5.0317 1.6629)">
<path id="path3041" style="stroke-linejoin:round;stroke:#0c0c0c;stroke-width:.60798;fill:url(#linearGradient3140)" d="m2.0488 11.037c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81045 0.80363 1.2602 1.6413 1.0576 1.9306-0.0007708 0.0011 0.01977 0.01774 0.01898 0.01882l10.138-10.18c0.258-0.2581-0.213-1.1432-1.051-1.9744-0.838-0.8311-1.728-1.295-1.986-1.0366l-10.138 10.18z"/>
<path id="path3043" style="opacity:.8;stroke-linejoin:round;stroke:#e28ccd;stroke-width:.60798;fill:#ffb6ed" d="m10.565 2.4841c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.000769 0.0011 0.01977 0.017738 0.01898 0.018821l1.552-1.5571c0.409-0.4086-0.029-1.0928-0.981-2.0447-0.813-0.8055-1.674-1.2696-1.96-1.0619l-0.02525 0.025356-1.6218 1.6271z"/>
<path id="path3045" style="opacity:.6;fill:#0c0c0c" d="m2.0488 11.037c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.0007714 0.0011 0.01977 0.01774 0.01898 0.01882l6.982-7.0109 0.02525-0.025356c0.00079-0.00108-0.01975-0.01772-0.01898-0.01882 0.203-0.2885-0.247-1.1262-1.058-1.9298-0.812-0.8056-1.6734-1.2697-1.9599-1.062l-0.025251 0.025355-6.982 7.0109z"/>
<path id="path3047" style="fill:url(#linearGradient3142)" d="m9.1785 3.8767c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.000771 0.0011 0.01977 0.017736 0.01898 0.01882l0.12626-0.12678c0.00079-0.00108-0.01975-0.01772-0.01898-0.01882 0.203-0.2892-0.246-1.1269-1.057-1.9305-0.812-0.8056-1.6737-1.2697-1.9602-1.062l-0.12626 0.12678z"/>
<path id="path3049" style="fill:url(#linearGradient3144)" d="m9.0628 3.9929c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.000771 0.0011 0.01977 0.017738 0.01898 0.018822l0.126-0.1268c0.00079-0.00108-0.01975-0.017721-0.01898-0.018821 0.203-0.2892-0.247-1.1269-1.058-1.9305-0.812-0.8056-1.6734-1.2697-1.9599-1.062l-0.1263 0.1268z"/>
<path id="path3051" style="fill:url(#linearGradient3146)" d="m9.5806 3.473c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81045 0.80363 1.2602 1.6413 1.0576 1.9306-0.000773 0.0011 0.01977 0.017737 0.01898 0.01882l0.12626-0.12678c0.000791-0.00108-0.01975-0.017721-0.01898-0.01882 0.202-0.2892-0.247-1.1269-1.058-1.9306-0.812-0.8055-1.6736-1.2696-1.9601-1.0619l-0.1263 0.1268z"/>
<path id="path3053" style="fill:url(#linearGradient3148)" d="m9.4649 3.5891c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81045 0.80363 1.2602 1.6413 1.0576 1.9306-0.000769 0.0011 0.01977 0.017737 0.01898 0.018821l0.12626-0.12678c0.00079-0.00108-0.01975-0.01772-0.01898-0.01882 0.203-0.2892-0.247-1.1269-1.057-1.9305-0.813-0.8055-1.6743-1.2696-1.9608-1.0619l-0.1263 0.1267z"/>
<path id="path3055" style="fill:url(#linearGradient3150)" d="m9.9846 3.0673c0.2864-0.2077 1.1484 0.2564 1.9604 1.0619 0.81045 0.80363 1.2602 1.6413 1.0576 1.9306-0.00077 0.0011 0.01977 0.017738 0.01898 0.018821l0.126-0.1268c0.000792-0.00108-0.01975-0.017721-0.01898-0.018821 0.202-0.2892-0.247-1.1269-1.058-1.9306-0.812-0.8055-1.674-1.2696-1.96-1.0619l-0.1264 0.1268z"/>
<path id="path3057" style="fill:url(#linearGradient3152)" d="m9.8689 3.1835c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.000771 0.0011 0.01977 0.017737 0.01898 0.018821l0.12626-0.12678c0.000789-0.00108-0.01975-0.017722-0.01898-0.018821 0.203-0.2892-0.247-1.1269-1.057-1.9306-0.813-0.8055-1.674-1.2696-1.9608-1.0619l-0.1263 0.1268z"/>
<path id="path3059" style="fill-rule:evenodd;stroke:url(#linearGradient3156);stroke-width:.60798;fill:url(#linearGradient3154)" d="m0.25981 15.794 4.7719-1.7255 0.039308-0.03926c0.2026-0.289-0.2524-1.127-1.0629-1.93-0.8124-0.806-1.6727-1.268-1.9592-1.06l-1.7891 4.755z"/>
<path id="path3061" style="fill-rule:evenodd;stroke:#0c0c0c;stroke-width:.60798;fill:#0c0c0c" d="m0.74443 14.506-0.48521 1.283 1.3014-0.473c-0.1137-0.134-0.2193-0.268-0.3544-0.402-0.1555-0.154-0.30705-0.281-0.46177-0.408z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2395" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2397">
<linearGradient id="linearGradient2427" y2="31.138" gradientUnits="userSpaceOnUse" x2="-93.088" gradientTransform="matrix(.42104 -.10139 .10080 .42350 44.055 -5.0894)" y1="2.0691" x1="-86.129">
<stop id="stop2266" style="stop-color:#d7e866" offset="0"/>
<stop id="stop2268" style="stop-color:#8cab2a" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2431" y2="39.78" gradientUnits="userSpaceOnUse" x2="20.494" gradientTransform="matrix(.41388 0 0 .41629 -1.7222 -1.7776)" y1="7.044" x1="20.494">
<stop id="stop3402" style="stop-color:#fff" offset="0"/>
<stop id="stop3404" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path1542" style="stroke-linejoin:round;stroke:#699536;stroke-linecap:round;stroke-width:1.0028;fill:url(#linearGradient2427)" d="m12.262 0.50446c-0.232-0.02365-0.462 0.09048-0.581 0.30958l-5.0718 9.333-3.2606-2.6075c-0.2904-0.1597-0.6528-0.057-0.8115 0.2352l-1.4622 1.8882c-0.1587 0.29213-0.051938 0.6565 0.2385 0.81613 0 0 5.9534 4.9457 5.9608 4.9493 0.068071 0.03741 0.13926 0.05624 0.21162 0.06544 0.23638 0.03004 0.47828-0.08166 0.59979-0.30532l6.8394-12.586c0.1587-0.29213 0.05194-0.6565-0.2385-0.81613l-2.194-1.2118c-0.073-0.03986-0.153-0.06176-0.23-0.06964z"/>
<path id="path2429" style="opacity:.4;stroke:url(#linearGradient2431);stroke-linecap:round;stroke-width:1.0028;fill:none" d="m12.312 1.6562-5.312 9.8128a0.15035 0.15035 0 0 1 0 0.031 0.15035 0.15035 0 0 1 -0.03125 0.03125 0.15035 0.15035 0 0 1 -0.03125 0 0.15035 0.15035 0 0 1 -0.03125 0.03125 0.15035 0.15035 0 0 1 -0.03125 0 0.15035 0.15035 0 0 1 -0.03125 0 0.15035 0.15035 0 0 1 -0.03125 -0.03125 0.15035 0.15035 0 0 1 -0.03125 0l-3.6562-2.906c-0.32388 0.40246-0.60092 0.77792-0.96875 1.25 0.1123 0.093077 1.303 1.09 2.625 2.1875 0.6912 0.57379 1.3815 1.1568 1.9062 1.5938 0.26235 0.21848 0.4994 0.39983 0.65625 0.53125 0.050142 0.04201 0.088455 0.06296 0.125 0.09375 0.052555-0.09355 0.10901-0.18055 0.25-0.4375 0.19196-0.34986 0.43971-0.83698 0.75-1.4062 0.62059-1.1385 1.4445-2.6103 2.25-4.0938 0.80552-1.4834 1.5812-2.9751 2.1875-4.0938 0.30316-0.55933 0.56868-1.0087 0.75-1.3438 0.14198-0.26236 0.21072-0.36449 0.25-0.4375-0.055-0.0314-0.1-0.0615-0.218-0.125-0.172-0.0919-0.379-0.1999-0.594-0.3126-0.215-0.1126-0.432-0.2271-0.594-0.3124-0.067-0.0354-0.141-0.0375-0.188-0.0626z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3251" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3253">
<linearGradient id="linearGradient2406" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(.74324 0 0 .74322 -38.23 10.609)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2411" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.36857 0 0 .36857 -.84577 -.84577)" y1="44.98" x1="18.379">
<stop id="stop2492" style="stop-color:#791235" offset="0"/>
<stop id="stop2494" style="stop-color:#dd3b27" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2409" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 .87966 -1.1611 0 12.633 -21.084)" r="20.397">
<stop id="stop3244" style="stop-color:#f8b17e" offset="0"/>
<stop id="stop3246" style="stop-color:#e35d4f" offset=".26238"/>
<stop id="stop3248" style="stop-color:#c6262e" offset=".66094"/>
<stop id="stop3250" style="stop-color:#690b54" offset="1"/>
</radialGradient>
</defs>
<g id="layer1">
<g id="g3275">
<path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2411);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2409)" d="m8 0.50183c-4.1372 0-7.4982 3.361-7.4982 7.4982 0.00003 4.137 3.361 7.498 7.4982 7.498 4.137 0 7.498-3.361 7.498-7.498 0-4.1372-3.361-7.4982-7.498-7.4982z"/>
<path id="path2463" style="opacity:.4;stroke:url(#linearGradient2406);fill:none" d="m14.5 7.9998c0 3.5902-2.91 6.5002-6.4999 6.5002s-6.5001-2.91-6.5001-6.5002c0-3.5898 2.9102-6.4998 6.5001-6.4998s6.4999 2.91 6.4999 6.4998z"/>
</g>
<path id="path3360" style="opacity:.2" d="m3 8h10v-2h-10v2z"/>
<path id="path3249" style="fill:#fff" d="m3 9h10v-2h-10v2z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg7384" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata90">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title>Gnome Symbolic Icon Theme</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<title id="title9167">Gnome Symbolic Icon Theme</title>
<g id="layer9" transform="translate(-321,-257)">
<path id="path18112" style="color:#bebebe;enable-background:new;fill:#bebebe" d="m328.92 257.09c-0.5255-0.0286-1.0382 0.28305-1.4375 0.96875l-6.25 11.594c-0.53 0.97 0.05 2.35 1.1 2.35h13.156c0.98172 0 1.9031-1.1594 1.2188-2.3438l-6.32-11.54c-0.39872-0.64617-0.94325-1.0026-1.4688-1.0312zm-0.0313 3.9375c0.54448-0.0172 1.0485 0.48677 1.0312 1.0312v3.9375c0.007 0.52831-0.47163 1.0142-1 1.0142-0.52836 0-1.0075-0.48593-1-1.0142v-3.9375c-0.008-0.4666 0.3541-0.91253 0.8125-1 0.0511-0.0145 0.10345-0.025 0.15625-0.0313zm-0.9687 6.9688h2v2h-2v-2z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4002" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs4004">
<linearGradient id="linearGradient3645" y2="15" xlink:href="#linearGradient3587-6-5-3" gradientUnits="userSpaceOnUse" x2="7.9995" gradientTransform="translate(-.99952 1)" y1="1" x1="7.9995"/>
<linearGradient id="linearGradient3653" y2="12" xlink:href="#linearGradient3587-6-5-3" gradientUnits="userSpaceOnUse" x2="8.9995" gradientTransform="translate(1.0005 1)" y1="3" x1="8.9995"/>
<linearGradient id="linearGradient3587-6-5-3">
<stop id="stop3589-9-2-2" offset="0"/>
<stop id="stop3591-7-4-73" style="stop-color:#363636" offset="1"/>
</linearGradient>
</defs>
<path id="path3655" style="opacity:.6;block-progression:tb;text-indent:0;color:#000000;text-transform:none;fill:#fff" d="m4.2192 5.0003-0.03125 0.03125c-0.13929 0.056469-0.26082 0.1559-0.34375 0.28125l-3 4.25c-0.18164 0.25295-0.18164 0.62205 0 0.875l3 4.25c0.082937 0.12535 0.20446 0.22478 0.34375 0.28125l0.03125 0.03125h0.125 0.15625c0.020821 0.000868 0.041679 0.000868 0.0625 0h9.9375 0.5v-0.5-9-0.5h-0.5-9.875-0.0625c-0.020821-0.0008682-0.041679-0.0008682-0.0625 0h-0.1875-0.09375zm0.9375 1h8.8438v8h-8.8125c-0.031927-0.06831-0.074226-0.13176-0.125-0.1875l-2.6875-3.8125 2.6875-3.8125c0.039807-0.057709 0.071467-0.12103 0.09375-0.1875z"/>
<path id="path3657" style="opacity:.6;block-progression:tb;text-indent:0;color:#bebebe;enable-background:new;text-transform:none;fill:#fff" d="m7.0036 7.0006h1c0.01037-0.00012 0.02079-0.00046 0.03125 0 0.25495 0.0112 0.50987 0.12858 0.6875 0.3125l1.2812 1.2812 1.3125-1.2812c0.26562-0.2305 0.44667-0.3055 0.6875-0.3125h1v1c0 0.28647-0.03434 0.55065-0.25 0.75l-1.2812 1.2813 1.25 1.25c0.18819 0.18817 0.28124 0.45345 0.28125 0.71875v1h-1c-0.2653-0.00001-0.53059-0.0931-0.71875-0.28125l-1.2812-1.2812-1.2812 1.2812c-0.18816 0.18819-0.45346 0.28125-0.71875 0.28125h-1v-1c-0.000003-0.26529 0.09306-0.53058 0.28125-0.71875l1.2812-1.25-1.2812-1.2813c-0.21074-0.19463-0.30316-0.46925-0.28125-0.75v-1z"/>
<path id="path2836" style="opacity:.7;block-progression:tb;text-indent:0;color:#000000;text-transform:none;fill:url(#linearGradient3645)" d="m4.2192 4-0.03125 0.03125c-0.1393 0.0565-0.2608 0.1559-0.3438 0.2813l-2.7002 4.25c-0.18164 0.25295-0.18164 0.62205 0 0.875l2.7002 4.25c0.082937 0.12535 0.20446 0.22478 0.34375 0.28125l0.0312 0.031h0.125 0.15625c0.020821 0.000868 0.041679 0.000868 0.0625 0h9.9375 0.5v-0.5-9-0.5h-0.5-9.875-0.0625c-0.020821-0.0008682-0.041679-0.0008682-0.0625 0h-0.1875-0.09375zm0.9375 1h8.8438v8h-8.8125c-0.031927-0.06831-0.074226-0.13176-0.125-0.1875l-2.687-3.812 2.6875-3.8125c0.0398-0.0577 0.0714-0.121 0.0937-0.1875z"/>
<path id="path10839" style="opacity:.7;block-progression:tb;text-indent:0;color:#bebebe;enable-background:new;text-transform:none;fill:url(#linearGradient3653)" d="m7.0036 6.0002h1c0.01037-0.00012 0.02079-0.00046 0.03125 0 0.25495 0.0112 0.50987 0.12858 0.6875 0.3125l1.2812 1.2812 1.3125-1.2812c0.26562-0.2305 0.44667-0.3055 0.6875-0.3125h1v1c0 0.28647-0.03434 0.55065-0.25 0.75l-1.2812 1.2812 1.25 1.25c0.18819 0.18817 0.28124 0.45345 0.28125 0.71875v1h-1c-0.2653-0.00001-0.53059-0.0931-0.71875-0.28125l-1.2812-1.2812-1.2813 1.2812c-0.18816 0.18819-0.45346 0.28125-0.71875 0.28125h-1v-1c-0.000003-0.26529 0.09306-0.53058 0.28125-0.71875l1.2811-1.2495-1.2812-1.2813c-0.21074-0.19463-0.30316-0.46925-0.28125-0.75v-1z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3691" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3693">
<linearGradient id="linearGradient4884" y2="224.68" gradientUnits="userSpaceOnUse" x2="31.341" y1="235.03" x1="31.341">
<stop id="stop4024-2-8" style="stop-color:#555753" offset="0"/>
<stop id="stop4026-8-3" style="stop-color:#babdb6" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3655" y2="225" gradientUnits="userSpaceOnUse" x2="23.5" y1="225" x1="34.5">
<stop id="stop2605-6" style="stop-color:#bb2b12" offset="0"/>
<stop id="stop2607-3" style="stop-color:#cd7233" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3663" y2="229" gradientUnits="userSpaceOnUse" x2="35.5" y1="229" x1="24.5">
<stop id="stop2612-7" style="stop-color:#f0c178" offset="0"/>
<stop id="stop2614-5" style="stop-color:#e18941" offset=".5"/>
<stop id="stop2616-9" style="stop-color:#ec4f18" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<g id="g4946" style="enable-background:new" transform="matrix(0,1,1,0,-219,-21.5)">
<g id="g4873" style="stroke:url(#linearGradient4884)">
<path id="path2932-4" style="stroke-linejoin:round;stroke-width:4;stroke:url(#linearGradient3655);stroke-linecap:round;enable-background:new;fill:none" d="m32 221-5.5 5.5 5.5 5.5"/>
</g>
<path id="path2932" style="stroke-linejoin:round;stroke:url(#linearGradient3663);stroke-linecap:round;stroke-width:2;fill:none" d="m32 221-5.5 5.5 5.5 5.5"/>
<path id="path2932-0-9-9" style="opacity:.4;stroke:#fff;stroke-linecap:round;enable-background:new;fill:none" d="m31.4 232-5.5-5.5 5.5-5.5"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

+25
View File
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2461" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2463">
<linearGradient id="linearGradient2457" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.36857 0 0 .36857 -.84577 -.84577)" y1="44.98" x1="18.379">
<stop id="stop2788" style="stop-color:#1f4b6a" offset="0"/>
<stop id="stop2790" style="stop-color:#4083c2" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2455" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 .87966 -1.1611 0 12.633 -21.084)" r="20.397">
<stop id="stop2778" style="stop-color:#8badea" offset="0"/>
<stop id="stop2780" style="stop-color:#6396cd" offset=".26238"/>
<stop id="stop2782" style="stop-color:#3b7caf" offset=".66094"/>
<stop id="stop2784" style="stop-color:#194c70" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2452" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(.74324 0 0 .74322 -38.23 10.609)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path2449" style="stroke-linejoin:round;stroke:url(#linearGradient2457);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2455)" d="m8 0.50183c-4.1372 0-7.4982 3.361-7.4982 7.4982 0.00003 4.137 3.361 7.498 7.4982 7.498 4.137 0 7.498-3.361 7.498-7.498 0-4.1372-3.361-7.4982-7.498-7.4982z"/>
<path id="path2451" style="opacity:.4;stroke:url(#linearGradient2452);fill:none" d="m14.5 7.9998c0 3.5902-2.91 6.5002-6.4999 6.5002s-6.5001-2.91-6.5001-6.5002c0-3.5898 2.9102-6.4998 6.5001-6.4998s6.4999 2.91 6.4999 6.4998z"/>
<path id="path3536" style="fill:#fff" d="m5.8809 7.6039c0.1112 0.2727 0.2329 0.4926 0.4614 0.176 0.291-0.1922 1.259-1.0222 1.1895-0.2449-0.2635 1.4439-0.5972 2.876-0.8384 4.323-0.2804 0.798 0.4546 1.481 1.1726 0.94 0.7716-0.361 1.4257-0.923 2.0961-1.441-0.1034-0.231-0.1794-0.565-0.4273-0.248-0.3352 0.171-1.0517 0.943-1.2144 0.337 0.2258-1.561 0.6984-3.0746 0.9775-4.6254 0.2848-0.7194-0.2609-1.5917-1.002-0.976-0.8996 0.4419-1.6391 1.1342-2.415 1.7593zm3.1923-5.3491c-0.936-0.0124-1.3641 1.536-0.46 1.9183 0.7319 0.2706 1.4868-0.5111 1.281-1.2531-0.07-0.3879-0.4276-0.6943-0.821-0.6652z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3247" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3249">
<linearGradient id="linearGradient2401" y2="34.225" gradientUnits="userSpaceOnUse" x2="24.104" gradientTransform="matrix(.70965 0 0 .70537 -8.945 -8.2363)" y1="15.181" x1="24.104">
<stop id="stop2266" style="stop-color:#d7e866" offset="0"/>
<stop id="stop2268" style="stop-color:#8cab2a" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3190" y2="16.004" gradientUnits="userSpaceOnUse" x2="8" x1="8">
<stop id="stop3182" style="stop-color:#fff" offset="0"/>
<stop id="stop3184" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path2262" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#699536;fill:url(#linearGradient2401)" d="m5.5 5.5v-5h5v5h5v5h-5v5h-5v-5h-5v-5h5z"/>
<path id="path3188" style="opacity:.4;stroke:url(#linearGradient3190);fill:none" d="m6.5 1.5v4c-0.00481 0.55028-0.44972 0.99519-1 1h-4v3h4c0.55028 0.00481 0.99519 0.44972 1 1v4h3v-4c0.00481-0.55028 0.44972-0.99519 1-1h4v-3h-4c-0.5503-0.0048-0.9952-0.4497-1-1v-4h-3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3247" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3249">
<linearGradient id="linearGradient2401" y2="29.707" gradientUnits="userSpaceOnUse" x2="23.878" gradientTransform="matrix(.70965 0 0 .70537 -8.945 -8.2363)" y1="18.765" x1="23.878">
<stop id="stop3945" style="stop-color:#e35d4f" offset="0"/>
<stop id="stop3947" style="stop-color:#c6262e" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3190" y2="16.004" gradientUnits="userSpaceOnUse" x2="8" x1="8">
<stop id="stop3182" style="stop-color:#fff" offset="0"/>
<stop id="stop3184" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path2262" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#a53738;fill:url(#linearGradient2401)" d="m15.5 5.5v5h-15v-5h15z"/>
<path id="path3188" style="opacity:.4;stroke:url(#linearGradient3190);fill:none" d="m1.5 6.5v3h13v-3h-13z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2829" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2831">
<linearGradient id="linearGradient3615">
<stop id="stop3617" style="stop-color:#eeeeec" offset="0"/>
<stop id="stop3619" style="stop-color:#babdb6" offset=".69580"/>
<stop id="stop3621" style="stop-color:#a1a59b" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2782">
<stop id="stop2784" style="stop-color:#fff" offset="0"/>
<stop id="stop2786" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3627" y2="45.849" xlink:href="#linearGradient3615" gradientUnits="userSpaceOnUse" x2="-11.448" gradientTransform="matrix(.36755 0 0 .36638 8.2056 -1.7938)" y1="10.344" x1="-11.448"/>
<linearGradient id="linearGradient3629" y2="52.94" xlink:href="#linearGradient2782" gradientUnits="userSpaceOnUse" x2="10.44" gradientTransform="matrix(.29583 0 0 .33661 8.2499 -1.1702)" y1="9.9657" x1="10.44"/>
<linearGradient id="linearGradient3635" y2="45.849" xlink:href="#linearGradient3615" gradientUnits="userSpaceOnUse" x2="-11.448" gradientTransform="matrix(.36755 0 0 .36638 16.206 -1.7938)" y1="10.344" x1="-11.448"/>
<linearGradient id="linearGradient3637" y2="52.94" xlink:href="#linearGradient2782" gradientUnits="userSpaceOnUse" x2="10.44" gradientTransform="matrix(.29583 0 0 .33661 16.25 -1.1702)" y1="9.9657" x1="10.44"/>
</defs>
<g id="layer1">
<path id="path3623" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#888a86;stroke-linecap:round;stroke-width:1.0007;fill:url(#linearGradient3627)" d="m1.5004 1.5004v12.999h4.9993v-12.999h-4.9993z"/>
<path id="path3625" style="opacity:0.41;stroke-opacity:.97255;stroke:url(#linearGradient3629);stroke-linecap:round;stroke-width:1.0013;fill:none" d="m2.5007 2.5007v10.999l2.9983-0.0154v-10.983h-2.9983z"/>
<path id="path3631" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#888a86;stroke-linecap:round;stroke-width:1.0007;fill:url(#linearGradient3635)" d="m9.5004 1.5004v12.999h4.9993v-12.999h-4.9993z"/>
<path id="path3633" style="opacity:0.41;stroke-opacity:.97255;stroke:url(#linearGradient3637);stroke-linecap:round;stroke-width:1.0013;fill:none" d="m10.501 2.5007v10.999l2.9983-0.0154v-10.983h-2.9983z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2397" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2399">
<linearGradient id="linearGradient2395" y2="43.878" gradientUnits="userSpaceOnUse" x2="18.037" gradientTransform="matrix(.42222 0 0 .38297 -3.1322 -1.1011)" y1="14.511" x1="18.037">
<stop id="stop2266" style="stop-color:#d7e866" offset="0"/>
<stop id="stop2268" style="stop-color:#8cab2a" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2392" y2="46.874" gradientUnits="userSpaceOnUse" x2="13.759" gradientTransform="matrix(.35126 0 0 .34884 -.99223 -.37226)" y1="14.66" x1="34.404">
<stop id="stop4224" style="stop-color:#fff" offset="0"/>
<stop id="stop4226" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path3375" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#548820;stroke-linecap:round;fill:url(#linearGradient2395)" d="m1.5 14.5v-13l13 6.5-13 6.5z"/>
<path id="path2294" style="opacity:0.41;stroke:url(#linearGradient2392);stroke-linecap:round;fill:none" d="m2.5 12.878v-9.778l9.841 4.9-9.841 4.878z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2528" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2530">
<linearGradient id="linearGradient2406" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(.74324 0 0 .74322 -38.23 10.609)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2411" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.36857 0 0 .36857 -.84577 -.84577)" y1="44.98" x1="18.379">
<stop id="stop2492" style="stop-color:#791235" offset="0"/>
<stop id="stop2494" style="stop-color:#dd3b27" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2409" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 .87966 -1.1611 0 12.633 -21.084)" r="20.397">
<stop id="stop3244" style="stop-color:#f8b17e" offset="0"/>
<stop id="stop3246" style="stop-color:#e35d4f" offset=".26238"/>
<stop id="stop3248" style="stop-color:#c6262e" offset=".66094"/>
<stop id="stop3250" style="stop-color:#690b54" offset="1"/>
</radialGradient>
</defs>
<g id="layer1">
<g id="g2552">
<path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2411);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2409)" d="m8 0.50183c-4.1372 0-7.4982 3.361-7.4982 7.4982 0.00003 4.137 3.361 7.498 7.4982 7.498 4.137 0 7.498-3.361 7.498-7.498 0-4.1372-3.361-7.4982-7.498-7.4982z"/>
<path id="path2463" style="opacity:.4;stroke:url(#linearGradient2406);fill:none" d="m14.5 7.9998c0 3.5902-2.91 6.5002-6.4999 6.5002s-6.5001-2.91-6.5001-6.5002c0-3.5898 2.9102-6.4998 6.5001-6.4998s6.4999 2.91 6.4999 6.4998z"/>
</g>
<path id="path3243" style="opacity:.2;fill-rule:evenodd" d="m5.2625 3l-1.2625 1.2625 2.6047 2.5913c0.08 0.081 0.08 0.2114 0 0.2924l-2.6047 2.5913 1.2625 1.2625 2.5913-2.5914c0.081-0.08 0.2114-0.08 0.2924 0l2.5918 2.5914 1.262-1.2625-2.5914-2.5913c-0.08-0.081-0.08-0.2114 0-0.2924l2.5914-2.5913-1.262-1.2625-2.5918 2.5914c-0.081 0.08-0.2114 0.08-0.2924 0l-2.5913-2.5914z"/>
<path id="path3256" style="fill:#fff;fill-rule:evenodd" d="m5.2625 4l-1.2625 1.2625 2.6047 2.5913c0.08 0.081 0.08 0.2114 0 0.2924l-2.6047 2.5918 1.2625 1.262 2.5913-2.5914c0.081-0.08 0.2114-0.08 0.2924 0l2.5918 2.5914 1.262-1.262-2.5914-2.5918c-0.08-0.081-0.08-0.2114 0-0.2924l2.5914-2.5913-1.262-1.2625-2.5918 2.5914c-0.081 0.08-0.2114 0.08-0.2924 0l-2.5913-2.5914z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2987" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16px" width="16px" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs id="defs2989">
<linearGradient id="linearGradient2880" y2="44" gradientUnits="userSpaceOnUse" x2="16.143" gradientTransform="matrix(.23078 0 0 .15386 2.4612 4.8074)" y1="4" x1="16.143">
<stop id="stop2225-6-4-7-2" style="stop-color:#fff" offset="0"/>
<stop id="stop2229-2-5-5-8" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2883" y2="24.628" gradientUnits="userSpaceOnUse" x2="20.055" gradientTransform="matrix(.30476 0 0 .32156 .68572 1.0807)" y1="15.298" x1="16.626">
<stop id="stop2687-1-9-0-2" style="stop-color:#fff" offset="0"/>
<stop id="stop2689-5-4-3-1" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2886" y2="16" xlink:href="#linearGradient3680-6" gradientUnits="userSpaceOnUse" x2="16" gradientTransform="matrix(.34286 0 0 .36364 -.42808 -.81818)" y1="27.045" x1="16"/>
<linearGradient id="linearGradient3680-6">
<stop id="stop3682-4" style="stop-color:#dcdcdc" offset="0"/>
<stop id="stop3684-8" style="stop-color:#fff" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2890" y2="26" xlink:href="#linearGradient3680-6" gradientUnits="userSpaceOnUse" x2="20" gradientTransform="matrix(.375 0 0 0.375 -.74978 -0.5)" y1="28" x1="20"/>
<linearGradient id="linearGradient2894" y2="47.279" gradientUnits="userSpaceOnUse" x2="12.213" gradientTransform="matrix(.28855 0 0 .25608 1.0743 2.6116)" y1="2.9165" x1="12.579">
<stop id="stop2240-1-6-7-0" style="stop-color:#fff" offset="0"/>
<stop id="stop2242-7-3-7-2" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2897" y2="33.296" gradientUnits="userSpaceOnUse" x2="23.071" gradientTransform="matrix(.33032 0 0 .32624 .074248 1.9649)" y1="36.047" x1="23.071">
<stop id="stop2225-6-4-7" style="stop-color:#fff" offset="0"/>
<stop id="stop2229-2-5-5" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2900" gradientUnits="userSpaceOnUse" cy="8.4498" cx="7.4957" gradientTransform="matrix(0 .47178 -.86826 -1.9907e-8 15.337 1.0829)" r="20">
<stop id="stop3790-0-0" style="stop-color:#505050" offset="0"/>
<stop id="stop3792-0-2" style="stop-color:#141414" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2902" y2="44" gradientUnits="userSpaceOnUse" x2="16.143" gradientTransform="matrix(.28207 0 0 .20514 1.2304 3.5766)" y1="4" x1="16.143">
<stop id="stop3796-3-0" style="stop-color:#323232" offset="0"/>
<stop id="stop3798-8-6" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2983" y2="43.865" gradientUnits="userSpaceOnUse" y1="7.96" gradientTransform="matrix(.33330 0 0 .32429 .00075427 .06858)" x2="24" x1="24">
<stop id="stop4324-9-7" style="stop-color:#f0f0f0" offset="0"/>
<stop id="stop2860-4-4" style="stop-color:#d7d7d8" offset=".085525"/>
<stop id="stop2862-5-9" style="stop-color:#b2b2b3" offset=".92166"/>
<stop id="stop4326-1-1" style="stop-color:#979798" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2985" y2="2.8765" gradientUnits="userSpaceOnUse" y1="44.96" gradientTransform="matrix(.31912 0 0 .29298 .34112 1.4648)" x2="10.014" x1="10.014">
<stop id="stop4334-7-6" style="stop-color:#595959" offset="0"/>
<stop id="stop4336-8-0" style="stop-color:#b3b3b3" offset="1"/>
</linearGradient>
</defs>
<metadata id="metadata2992">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1">
<rect id="rect2551-5-8" style="stroke-linejoin:round;fill-rule:evenodd;stroke:url(#linearGradient2985);stroke-linecap:round;stroke-width:1.0021;fill:url(#linearGradient2983)" rx="1" ry="1" height="11.998" width="14.998" y="2.5011" x=".50107"/>
<rect id="rect1314-3-3" style="stroke-linejoin:round;color:#000000;stroke:url(#linearGradient2902);stroke-linecap:round;fill:url(#radialGradient2900)" rx="0" ry="0" height="8" width="11" y="4.5" x="2.5"/>
<rect id="rect2221-3-8" style="opacity:.4;stroke-linejoin:round;stroke:url(#linearGradient2897);stroke-linecap:round;stroke-width:1.0021;fill:none" rx="0" ry="0" height="9.9979" width="12.998" y="3.5011" x="1.501"/>
<rect id="rect2556-8-5" style="opacity:.8;stroke-linejoin:round;stroke:url(#linearGradient2894);stroke-linecap:round;stroke-width:1.0037;fill:none" height="9.9963" width="12.996" y="3.5019" x="1.5019"/>
<path id="path3651-2" style="fill:url(#linearGradient2890)" d="m9.0002 10v-0.75h-3v0.75h3z"/>
<path id="path3653-7" style="fill:url(#linearGradient2886)" d="m3.6862 9-0.6857-0.7273 1.5428-1.2727-1.5428-1.2727 0.6857-0.7273 2.3143 2-2.3143 2z"/>
<path id="path3333-3-0" style="opacity:.2;fill:url(#linearGradient2883);fill-rule:evenodd" d="m1.6667 3c-0.3683 0-0.6667 0.3149-0.6667 0.7034v5.145c0.0009545 0.043283 0.018837 0.084214 0.049602 0.11286 0.030769 0.028643 0.071495 0.04238 0.1123 0.037874l13.714-2.2911c0.071-0.0117 0.123-0.0754 0.124-0.1507v-2.8539c0-0.3885-0.298-0.7034-0.667-0.7034h-12.667z"/>
<rect id="rect1314-3-3-9" style="opacity:.1;stroke-linejoin:round;color:#000000;stroke:url(#linearGradient2880);stroke-linecap:round;fill:none" rx="0" ry="0" height="6" width="9" y="5.5" x="3.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

+155
View File
@@ -0,0 +1,155 @@
# Paparazzi center utilities
#
# Copyright (C) 2016 ENAC, Florian BITARD (intern student)
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi 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 paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################
# [Imports]
import lib.gui as gui
import PyQt5.QtCore as Core
import re
###############################################################################
# [Constants]
DEFAULT_FONT_QCOLOR = gui.generate_qcolor("black")
DEFAULT_BACKGROUND_QCOLOR = gui.generate_qcolor("white")
DEFAULT_LOGGER_FONT_QCOLOR = gui.generate_qcolor("blue")
ALL_MESSAGES_LEVEL = "all"
CUSTOM_MESSAGES_LEVEL = "custom"
MINIMAL_MESSAGES_LEVEL = "minimal"
PROCESS_MESSAGE_TYPE = "process"
APPLICATION_MESSAGE_TYPE = "application"
ERROR_FLAG = "error"
WARNING_FLAG = "warning"
INFO_FLAG = "info"
DEFAULT_FLAG = "default"
BACKGROUNDS_COLORS = {ERROR_FLAG: "red",
WARNING_FLAG: "yellow",
INFO_FLAG: "green",
DEFAULT_FLAG: "white"}
FONTS_COLORS = {ERROR_FLAG: "red",
WARNING_FLAG: "orange",
INFO_FLAG: "blue",
DEFAULT_FLAG: "black"}
ERROR_REGEX = re.compile(r"[Ee][Rr]{2}[Oo][Rr][ :]")
WARNING_REGEX = re.compile(r"[Ww][Aa][Rr][Nn][Ii][Nn][Gg][ :]")
INFO_REGEX = re.compile(r"[Ii][Nn][Ff][Oo][ :]")
def analyse_log_line(line):
if ERROR_REGEX.search(line) is not None:
flag = ERROR_FLAG
elif WARNING_REGEX.search(line) is not None:
flag = WARNING_FLAG
elif INFO_REGEX.search(line) is not None:
flag = INFO_FLAG
else:
flag = DEFAULT_FLAG
return line, flag
###############################################################################
# [Console class]
class Console(Core.QObject):
""" Class to define a Console object."""
def __init__(self, q_text_edit_widget):
super(Console, self).__init__()
self.edit = q_text_edit_widget
def write(self, line, font_color=DEFAULT_FONT_QCOLOR,
backgroud_color=DEFAULT_BACKGROUND_QCOLOR):
self.edit.setTextColor(font_color)
self.edit.setTextBackgroundColor(backgroud_color)
self.edit.append(line)
###############################################################################
# [LogFilter class]
class LogFilter(object):
"""Class to define a LogFilter object to manage the messages written in the
integrated console."""
def __init__(self, init_level_str, init_default_bool, init_info_bool,
init_warning_bool, init_error_bool):
"""
-> 'level' sets what sort of messages to display in the console and is
linked to the HMI radio-button choice.
-> 'info', 'warning' and 'error' are booleans to set what logs to
display in the console and is linked to the HMI check-boxes.
"""
self.level = init_level_str
self.default = init_default_bool
self.info = init_info_bool
self.warning = init_warning_bool
self.error = init_error_bool
def __repr__(self):
string = "\t| level = {!s:<10} | default = {!s:<5} | info = {!s:<5} |"\
" warning = {!s:<5} | error = {!s:<5} |"
format_string = string.format(self.level, self.default, self.info,
self.warning, self.error)
return format_string
def set_level(self, level):
"""
:param level:
-> level = 'minimum' (only important messages)
'basic' (customized messages)
'all' (all messages emitted by Makefiles and compilers).
"""
self.level = level
def set_sensitivity_filter(self, default, info, warning, error):
"""
:param default:
:param info:
:param warning:
:param error:
-> info, warnings and error are booleans.
"""
self.default = default
self.info = info
self.warning = warning
self.error = error
def write_line_decision(self, flag):
if flag == ERROR_FLAG and self.error:
return True
elif flag == WARNING_FLAG and self.warning:
return True
elif flag == INFO_FLAG and self.info:
return True
elif flag == DEFAULT_FLAG and self.default:
return True
else:
return False
+161
View File
@@ -0,0 +1,161 @@
# Paparazzi center utilities
#
# Copyright (C) 2016 ENAC, Florian BITARD (intern student)
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi 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 paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################
# [Imports]
###############################################################################
# [Configuration class]
class Configuration(object):
"""Class to define a Configuration (old aircraft) object."""
def __init__(self, name, config_id, airframes, targets):
# Necessary parameters :
self.name = name
self.id = config_id
self.airframes = airframes
# Not necessary parameters :
self.settings = []
self.modules = []
self.flight_plan = []
self.radio = []
self.telemetry = []
self.color = []
self.targets = targets
def __repr__(self):
string = "| name = {!s:<25} | id = {!s:<3} | airframe = {!s:<65} |" + \
"targets = {!s:<250} | color = {!s:<15} | " + \
"radio = {!s:<40} | telemetry = {!s:<45} | " + \
"flight_plan = {!s:<75} | settings = {!s:<265} | " + \
"modules = {!s:<265} |"
format_string = string.format(self.name, self.id, self.airframes,
[_ for _ in self.targets.values()],
self.color, self.radio,
self.telemetry, self.flight_plan,
self.settings, self.modules)
return format_string
###############################################################################
# [Set class]
class Set(object):
"""Class to define a Set (old configuration) object."""
def __init__(self, name):
self.name = name
self.configs_names = []
def __repr__(self):
string = "| name = {!s:<75} | configs_names = {!s:<680} |"
format_string = string.format(self.name, self.configs_names)
return format_string
def is_config_in_set(self, config):
return config.id in self.configs_names
###############################################################################
# [Target class]
class Target(object):
"""Class to define a Target object."""
def __init__(self, name, board, ):
self.name = name
self.board = board
self.subsystems = None
self.defines = None
def __repr__(self):
string = "| name = {!s:<15} | board = {!s:<20} |"
format_string = string.format(self.name, self.board)
return format_string
###############################################################################
# [Device class]
class Device(object):
"""Class to define a Device (old flash mode) object."""
def __init__(self, name, variable_name="", variable_value=""):
self.name = name
self.variable = (variable_name, variable_value)
self.boards_regex = []
def __repr__(self):
string = "| name = {!s:<25} | variable = {!s:<35} | " + \
"boards_regex = {!s:<125} |"
format_string = string.format(self.name, self.variable,
self.boards_regex)
return format_string
###############################################################################
# [Session class]
class Session(object):
"""Class to define a Session object."""
def __init__(self, name, programs):
self.name = name
self.programs = programs
def __repr__(self):
string = "| name = {!s:<30} | programs = {!s:<1300} |"
format_string = string.format(self.name,
[_ for _ in self.programs.values()])
return format_string
###############################################################################
# [Program class]
class Program(object):
"""Class to define a Program (old tool) object."""
def __init__(self, name, command, options):
self.name = name
self.command = command
self.options = options
def __repr__(self):
string = "\t| name = {!s:<30} | command = {!s:<60} | options = {!s:<70} |"
format_string = string.format(self.name, self.command, self.options)
return format_string
###############################################################################
# [Cache class]
class Cache(object):
"""Class to define a Cache (old %gconf) object."""
def __init__(self, last_update_time):
self.last_update = last_update_time
self.main_window_shape = (0, 0)
self.last_set = None
self.last_configuration = None
self.last_target = None
self.last_session = None
self.last_device = None
@@ -0,0 +1,15 @@
<cache>
- <system>
- <window>
- <geometry value="100 100 1026 448" />
- </window>
- <filters value="all 2 2 2 2" />
- </system>
- <data>
- <set value="conf_example.xml" />
- <config value="Microjet" />
- <target value="sim" />
- <device value=" __Default__ " />
- <session value="Simulation" />
- </data>
-</cache>
+91
View File
@@ -0,0 +1,91 @@
# Paparazzi center utilities
#
# Copyright (C) 2016 ENAC, Florian BITARD (intern student)
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi 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 paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################
# [Imports]
import os
from sys import platform as os_name
import logging
###############################################################################
# [Constants]
LOGGER = logging.getLogger("[ENV]")
OS = os_name
SRC_NAME = "PAPARAZZI_SRC"
HERE_TO_SRC = "../../../.."
CONF_NAME = "PAPARAZZI_CONF"
HOME_TO_CONF = "conf"
HOME_NAME = "PAPARAZZI_HOME"
HOME_TO_VAR = "var"
IVY_BUS_NAME = "IVY_BUS"
def get_src_dir(src_name):
current_dir = os.path.dirname(os.path.abspath(__file__))
src_dir = os.path.normpath(os.path.join(current_dir, HERE_TO_SRC))
return os.getenv(src_name, src_dir)
PAPARAZZI_SRC = get_src_dir(SRC_NAME)
LOGGER.debug("%s=%s", SRC_NAME, PAPARAZZI_SRC)
def get_home_dir(home_name):
return os.getenv(home_name, get_src_dir(SRC_NAME))
PAPARAZZI_HOME = get_home_dir(HOME_NAME)
LOGGER.info("%s=%s", HOME_NAME, PAPARAZZI_HOME)
def get_conf_dir(conf_name):
conf_dir = os.path.join(PAPARAZZI_HOME, HOME_TO_CONF)
if os.path.exists(conf_dir):
return os.getenv(conf_name, conf_dir)
else:
LOGGER.error("'%s' directory doesn't exist !", conf_dir)
PAPARAZZI_CONF = get_conf_dir(CONF_NAME)
def get_ivy_bus(ivy_bus_name):
supposed_ivy_bus = os.getenv(ivy_bus_name)
if supposed_ivy_bus is not None:
return supposed_ivy_bus
elif OS == 'linux':
return "127.255.255.255:2010"
elif OS == 'linux2':
return "127.255.255.255:2010"
elif OS == 'darwin':
return "224.5.6.7:8910"
LOGGER.error("Unknown Ivy bus for the current OS !")
IVY_BUS = get_ivy_bus(IVY_BUS_NAME)
LOGGER.debug("%s=%s", HOME_NAME, PAPARAZZI_HOME)
RUN_VERSION_EXE_NAME = "paparazzi_version"
RUN_VERSION_EXE = os.path.join(PAPARAZZI_HOME, RUN_VERSION_EXE_NAME)
BUILD_VERSION_FILE_NAME = "build_version.txt"
BUILD_VERSION_FILE = os.path.join(PAPARAZZI_HOME, HOME_TO_VAR,
BUILD_VERSION_FILE_NAME)
+69
View File
@@ -0,0 +1,69 @@
# Paparazzi center utilities
#
# Copyright (C) 2016 ENAC, Florian BITARD (intern student)
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi 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 paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################
# [Imports]
import PyQt5.QtGui as Gui
###############################################################################
# [Constants]
NORMAL_CURSOR_SHAPE = "normal"
WAIT_CURSOR_SHAPE = "wait"
###############################################################################
# [Functions]
def generate_qcolor(color):
qcolor = Gui.QColor()
qcolor.setNamedColor(color)
return qcolor
def generate_widget_palette(widget, qcolor):
qpalette = Gui.QPalette(widget.palette())
qpalette.setColor(Gui.QPalette.Background, qcolor)
return qpalette
def generate_qcursor(shape):
qcursor = Gui.QCursor()
if shape == WAIT_CURSOR_SHAPE:
qcursor.setShape(16)
elif shape == NORMAL_CURSOR_SHAPE:
qcursor.setShape(0)
else:
qcursor.setShape(0)
return qcursor
def generate_qpixmap(picture_path=""):
return Gui.QPixmap(picture_path)
def generate_qicon(icon_path=None):
if icon_path is not None:
return Gui.QIcon(icon_path)
else:
return Gui.QIcon()
+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/env python3
# Paparazzi center utilities
#
# Copyright (C) 2016 ENAC, Florian BITARD (intern student)
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi 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 paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################
# [Imports]
import lib.environment as env
import hmi
import PyQt5.QtWidgets as Widgets
import sys
import os
###############################################################################
# [Main function]
def main():
"""Main program : creates the main window and starts the main loop."""
# Set the environment variables (useful for some processes) :
os.putenv(env.HOME_NAME, env.PAPARAZZI_HOME)
os.putenv(env.SRC_NAME, env.PAPARAZZI_SRC)
app = Widgets.QApplication(sys.argv)
# TODO : SET APPLICATION ICON IN THE LAUNCHER (UBUNTU : UNITY)
main_window = hmi.Hmi()
main_window.init_all_hmi()
main_window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
File diff suppressed because it is too large Load Diff
+238
View File
@@ -0,0 +1,238 @@
# Paparazzi center utilities
#
# Copyright (C) 2016 ENAC, Florian BITARD (intern student)
#
# This file is part of paparazzi.
#
# paparazzi is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# paparazzi 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 paparazzi; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################
# [Imports]
import lib.environment as env
import lib.console as cs
import PyQt5.QtCore as Core
import logging
import os
import signal
###############################################################################
# [Constants]
LOGGER = logging.getLogger("[PROCESSES]")
AC_MAKEFILE_NAME = "Makefile.ac"
CONF_FLAG_NAME = "AIRCRAFT"
DEVICE_FLAG_NAME = "FLASH_MODE"
DEFAULT_EXIT_CODE = 2
INTERRUPTED_EXIT_CODE = -1
SUCCESS_EXIT_CODE = 0
CLEAN = "clean"
BUILD = "build"
UPLOAD = "upload"
PROGRAM = "program"
TOOL = "tool"
CLEAN_TARGET_KEY = "clean_ac"
BUILD_TARGET_KEY = ".compile"
UPLOAD_TARGET_KEY = ".upload"
CONF_FLAG = "@" + CONF_FLAG_NAME
TARGET_FLAG = "@TARGET"
CONF_ID_FLAG = "@AC_ID"
###############################################################################
# [Stream class]
class LoggerStream(Core.QObject):
""" Class to define a Stream object."""
logger_log_sent = Core.pyqtSignal(str, str, str)
def __init__(self):
super(LoggerStream, self).__init__()
# Reimplemented method in order to write the logs in the console :
def write(self, line):
log, flag = cs.analyse_log_line(line)
log_type = cs.APPLICATION_MESSAGE_TYPE
self.logger_log_sent.emit(log, flag, log_type)
###############################################################################
# [Process class]
class Process(Core.QObject):
"""Class to upload the built code to a device."""
process_killed = Core.pyqtSignal()
process_log_sent = Core.pyqtSignal(str, str, str)
def __init__(self, process_type,
configuration=None, target=None, device=None, program=None):
"""
:param process_type:
:param configuration:
:param target:
:param device:
:param program:
-> Declare a Process object as a QObject derivative.
-> Give it a name and the necessary parameters for its type.
-> Generate a command for the system call by the Popen object that
manages the subprocess and allows to redirect the output.
-> The process runs into an independent thread.
-> A queue is used to collect the logs from the Popen output and
an other one is used to send it to the QTextEdit integrated console.
-> Logs flags are collected for information.
-> Exit code is initialized to default value. Must change in case of
normal exit, error or user interruption.
"""
super(Process, self).__init__()
self.type = process_type
self.name = None
self.config = configuration
self.target = target
self.device = device
self.program = program
if self.type == CLEAN:
self.command = self.generate_make_command(CLEAN_TARGET_KEY)
self.name = " - ".join([self.type.upper(),
self.config.name])
elif self.type == BUILD:
self.command = self.generate_make_command(BUILD_TARGET_KEY)
self.name = " - ".join([self.type.upper(), self.config.name,
self.target.name])
elif self.type == UPLOAD:
self.command = self.generate_make_command(UPLOAD_TARGET_KEY)
self.name = " - ".join([self.type.upper(), self.config.name,
self.target.name, self.device.name])
else:
self.command = self.generate_program_command()
self.name = " - ".join([self.type.upper(),
self.program.name])
self.subprocess = Core.QProcess()
self.subprocess.setProcessChannelMode(Core.QProcess.MergedChannels)
self.subprocess.setReadChannel(Core.QProcess.StandardOutput)
self.process_killed.connect(self.emergency_stop)
self.exit_code = DEFAULT_EXIT_CODE
self.flags = {cs.ERROR_FLAG: 0,
cs.WARNING_FLAG: 0,
cs.INFO_FLAG: 0}
def generate_make_command(self, target_key):
"""
:param target_key:
-> Generate a system command to compile files by a Makefile and
putting the right arguments if given.
"""
if self.config is not None:
aircraft_term = CONF_FLAG_NAME + "=" + self.config.name
if self.target is not None:
target_key = self.target.name + target_key
command_terms = ["make", "-C", env.PAPARAZZI_HOME, "-f",
AC_MAKEFILE_NAME,
aircraft_term, target_key]
if self.device is not None and self.device.variable[1]:
device_term = DEVICE_FLAG_NAME + "=" + self.device.variable[1]
command_terms.insert(-1, device_term)
return " ".join(command_terms)
def generate_program_command(self):
"""
-> Generate a system command to run a program and add its options
if it has some.
"""
if self.program is not None:
full_command = os.path.join(env.PAPARAZZI_HOME,
self.program.command)
for option in self.program.options:
if type(option) is tuple:
flag, value = option
if value == CONF_FLAG:
full_command += " " + flag + " " + self.config.name
elif value == TARGET_FLAG:
full_command += " " + flag + " " + self.target.name
elif value == CONF_ID_FLAG:
full_command += " " + flag + " " + self.config.id
else:
full_command += " " + flag + " " + value
else:
full_command += " " + option
return full_command
def check_before_start(self):
# TODO IF NECESSARY !!!
return self == self
def start(self):
"""
-> Start the thread => start the worker => call the run method.
"""
LOGGER.info("'%s' process running ... (command='%s')",
self.name, self.command)
self.subprocess.start(self.command)
self.subprocess.readyReadStandardOutput.connect(self.send_text)
self.subprocess.finished.connect(self.finish_process)
def send_text(self):
"""
-> Analyse an process output line to find a flag in it.
-> Send the item by the sending queue object.
-> Collect the flag found.
"""
q_byte_array = self.subprocess.readAllStandardOutput()
string = str(q_byte_array, encoding="utf-8").strip()
for line in string.split("\n"):
log, flag = cs.analyse_log_line(line)
log_type = cs.PROCESS_MESSAGE_TYPE
self.process_log_sent.emit(log, flag, log_type)
if flag != cs.DEFAULT_FLAG:
self.flags[flag] += 1
def finish_process(self):
"""
-> If the process finished, get the exit code.
-> Else, the process crashed...
"""
if self.subprocess.exitStatus() == Core.QProcess.NormalExit:
self.exit_code = self.subprocess.exitCode()
LOGGER.info("'%s' process finished with exit code %s.\n",
self.name, self.exit_code)
else:
self.exit_code = INTERRUPTED_EXIT_CODE
LOGGER.error("'%s' process crashed, probably stopped by user !\n",
self.name)
def emergency_stop(self):
"""
-> Kill the subprocess by getting its ProcessID.
"""
os.kill(self.subprocess.pid(), signal.SIGKILL)
+16
View File
@@ -0,0 +1,16 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<header>
<img src="icons/penguin_icon.png" alt="Paparazzi UAV icon unreachable..."/>
<h1 align="center">Paparazzi Center</h1>
<p align="center"><i>(Python/Qt version)</i></p>
</header>
<p align="center">Copyright (C) 2007-2008 ENAC, Pascal Brisset</p>
<p align="center">License GPLv2</p>
<p align="center"><a href="http://paparazziuav.org">http://paparazziuav.org</a></p>
</body>
</html>
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<header>
<b>/!\ WARNING :</b>
</header>
<p>Values have been modified locally but not into the original XML files...</p>
<p>Do you want to save or ignore them ?</p>
</body>
</html>
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg7698" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs7700">
<linearGradient id="linearGradient3140" y2="31.211" gradientUnits="userSpaceOnUse" x2="23.576" gradientTransform="matrix(.41578 -.41749 .51898 .51462 -15.747 2.6504)" y1="25.357" x1="23.576">
<stop id="stop2541" style="stop-color:#181818" offset="0"/>
<stop id="stop2543" style="stop-color:#dbdbdb" offset=".13483"/>
<stop id="stop2545" style="stop-color:#a4a4a4" offset=".20224"/>
<stop id="stop2547" style="stop-color:#fff" offset=".26966"/>
<stop id="stop2549" style="stop-color:#8d8d8d" offset=".44650"/>
<stop id="stop2551" style="stop-color:#959595" offset=".57114"/>
<stop id="stop2553" style="stop-color:#cecece" offset=".72038"/>
<stop id="stop2555" style="stop-color:#181818" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3142" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.868 .69303)" y1="24.99" x1="30.038">
<stop id="stop2559" style="stop-color:#565656" offset="0"/>
<stop id="stop2561" style="stop-color:#9a9a9a" offset=".5"/>
<stop id="stop2563" style="stop-color:#545454" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3144" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.983 .80921)" y1="24.99" x1="30.038">
<stop id="stop2567" style="stop-color:#b1b1b1" offset="0"/>
<stop id="stop2569" style="stop-color:#fff" offset=".5"/>
<stop id="stop2571" style="stop-color:#8f8f8f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3146" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.466 .28929)" y1="24.99" x1="30.038">
<stop id="stop2575" style="stop-color:#565656" offset="0"/>
<stop id="stop2577" style="stop-color:#9a9a9a" offset=".5"/>
<stop id="stop2579" style="stop-color:#545454" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3148" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.581 .40547)" y1="24.99" x1="30.038">
<stop id="stop2583" style="stop-color:#b1b1b1" offset="0"/>
<stop id="stop2585" style="stop-color:#fff" offset=".5"/>
<stop id="stop2587" style="stop-color:#8f8f8f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3150" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.062 -.11641)" y1="24.99" x1="30.038">
<stop id="stop2591" style="stop-color:#565656" offset="0"/>
<stop id="stop2593" style="stop-color:#9a9a9a" offset=".5"/>
<stop id="stop2595" style="stop-color:#545454" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3152" y2="30" gradientUnits="userSpaceOnUse" x2="30.038" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.177 -.00021970)" y1="24.99" x1="30.038">
<stop id="stop2599" style="stop-color:#b1b1b1" offset="0"/>
<stop id="stop2601" style="stop-color:#fff" offset=".5"/>
<stop id="stop2603" style="stop-color:#8f8f8f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3154" y2="26.03" gradientUnits="userSpaceOnUse" x2="9" gradientTransform="matrix(.40402 -.40569 .60738 .60227 -17.637 .46249)" y1="29.057" x1="9">
<stop id="stop2607" style="stop-color:#ece5a5" offset="0"/>
<stop id="stop2609" style="stop-color:#fcfbf2" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3156" y2="41.392" gradientUnits="userSpaceOnUse" x2="9.5221" gradientTransform="matrix(.37638 .036153 0.0367 .37487 -2.2183 -1.1331)" y1="37.372" x1="5.5179">
<stop id="stop2613" style="stop-color:#dbce48" offset="0"/>
<stop id="stop2615" style="stop-color:#c5b625" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3735" y2="2.001" gradientUnits="userSpaceOnUse" x2="2" y1="18.001" x1="2">
<stop id="stop3106-1" style="stop-color:#969696" offset="0"/>
<stop id="stop3108-2" style="stop-color:#bebebe" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3737" y2="17.001" gradientUnits="userSpaceOnUse" x2="6" y1="4.001" x1="6">
<stop id="stop3602-9" style="stop-color:#fff" offset="0"/>
<stop id="stop3604-4" style="stop-color:#e6e6e6" offset="1"/>
</linearGradient>
</defs>
<g id="g3433">
<g id="layer1-3" transform="translate(0 -2.001)">
<path id="path2855" style="stroke-linejoin:round;stroke:url(#linearGradient3735);stroke-linecap:round;fill:url(#linearGradient3737)" d="m0.54277 2.501 12.957 0.01 0.042 14.99h-12.999l-1e-8 -15z"/>
<g id="g4198" style="fill:#999" transform="matrix(1.0195 0 0 1 29.21 6.7744)">
<path id="path6035" style="opacity:.7;fill:#686868" d="m-25.666-1.7733h1.1241v1h-1.1241v-1z"/>
<path id="path6033" style="opacity:.7;fill:#686868" d="m-24.388-1.7733h1.0606v1h-1.0606v-1z"/>
<path id="path6031" style="opacity:.7;fill:#686868" d="m-23.175-1.7733h0.93368v1h-0.93368v-1z"/>
<path id="path6029" style="opacity:.7;fill:#686868" d="m-22.088-1.7733h0.41011v1h-0.41011v-1z"/>
<path id="path6027" style="opacity:.7;fill:#686868" d="m-21.525-1.7733h0.91782v1h-0.91782v-1z"/>
<path id="path6025" style="opacity:.7;fill:#686868" d="m-20.454-1.7733h2.3775v1h-2.3775v-1z"/>
<path id="path6017" style="opacity:.7;fill:#686868" d="m-25.666 4.2267h1.1241v1h-1.1241v-1z"/>
<path id="path6015" style="opacity:.7;fill:#686868" d="m-24.388 4.2267h1.0606v1h-1.0606v-1z"/>
<path id="path6013" style="opacity:.7;fill:#686868" d="m-23.175 4.2267h0.93368v1h-0.93368v-1z"/>
<path id="path6011" style="opacity:.7;fill:#686868" d="m-22.088 4.2267h0.41011v1h-0.41011v-1z"/>
<path id="path6009" style="opacity:.7;fill:#686868" d="m-21.525 4.2267h0.91781v1h-0.91781v-1z"/>
<path id="path5999" style="opacity:.7;fill:#686868" d="m-25.666 0.22666h1.7428v1h-1.7428v-1z"/>
<path id="path5997" style="opacity:.7;fill:#686868" d="m-23.764 0.22666h0.83849v1h-0.83849v-1z"/>
<path id="path5995" style="opacity:.7;fill:#686868" d="m-22.766 0.22666h0.39424v1h-0.39424v-1z"/>
<path id="path5993" style="opacity:.7;fill:#686868" d="m-22.213 0.22666h0.75916v1h-0.75916v-1z"/>
<path id="path5991" style="opacity:.7;fill:#686868" d="m-21.295 0.22666h0.75916v1h-0.75916v-1z"/>
<path id="path5989" style="opacity:.7;fill:#686868" d="m-20.376 0.22666h1.2193v1h-1.2193v-1z"/>
<path id="path5981" style="opacity:.7;fill:#686868" d="m-25.666 2.2267h1.9967v1h-1.9967v-1z"/>
<path id="path5979" style="opacity:.7;fill:#686868" d="m-23.512 2.2267h2.1395v1h-2.1395v-1z"/>
<path id="path5977" style="opacity:.7;fill:#686868" d="m-21.216 2.2267h0.85436v1h-0.85436v-1z"/>
<path id="path5975" style="opacity:.7;fill:#686868" d="m-20.205 2.2267h2.0125v1h-2.0125v-1z"/>
<path id="path2916" style="opacity:.7;fill:#686868" d="m-25.666 6.2267h1.1241v1h-1.1241v-1z"/>
<path id="path2918" style="opacity:.7;fill:#686868" d="m-24.388 6.2267h1.0606v1h-1.0606v-1z"/>
<path id="path2920" style="opacity:.7;fill:#686868" d="m-23.175 6.2267h0.93368v1h-0.93368v-1z"/>
</g>
<path id="path2422" style="opacity:.15;fill:#0c0c0c;fill-rule:evenodd" d="m13.297 7.7055c-0.08415-0.04997-0.14927-0.03697-0.19229-0.0092l-5.7296 3.6801-1.0545 0.67922-0.03247 0.01374-1.2485 2.8377 3.0941 0.094 0.02569-0.01734 1.0613-0.67562 5.7281-3.7118c0.171-0.111-0.101-0.848-0.611-1.656-0.383-0.606-0.789-1.0846-1.041-1.2345z"/>
</g>
<g id="g8626" transform="matrix(.70258 0 0 .70426 5.0317 1.6629)">
<path id="path3041" style="stroke-linejoin:round;stroke:#0c0c0c;stroke-width:.60798;fill:url(#linearGradient3140)" d="m2.0488 11.037c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81045 0.80363 1.2602 1.6413 1.0576 1.9306-0.0007708 0.0011 0.01977 0.01774 0.01898 0.01882l10.138-10.18c0.258-0.2581-0.213-1.1432-1.051-1.9744-0.838-0.8311-1.728-1.295-1.986-1.0366l-10.138 10.18z"/>
<path id="path3043" style="opacity:.8;stroke-linejoin:round;stroke:#e28ccd;stroke-width:.60798;fill:#ffb6ed" d="m10.565 2.4841c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.000769 0.0011 0.01977 0.017738 0.01898 0.018821l1.552-1.5571c0.409-0.4086-0.029-1.0928-0.981-2.0447-0.813-0.8055-1.674-1.2696-1.96-1.0619l-0.02525 0.025356-1.6218 1.6271z"/>
<path id="path3045" style="opacity:.6;fill:#0c0c0c" d="m2.0488 11.037c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.0007714 0.0011 0.01977 0.01774 0.01898 0.01882l6.982-7.0109 0.02525-0.025356c0.00079-0.00108-0.01975-0.01772-0.01898-0.01882 0.203-0.2885-0.247-1.1262-1.058-1.9298-0.812-0.8056-1.6734-1.2697-1.9599-1.062l-0.025251 0.025355-6.982 7.0109z"/>
<path id="path3047" style="fill:url(#linearGradient3142)" d="m9.1785 3.8767c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.000771 0.0011 0.01977 0.017736 0.01898 0.01882l0.12626-0.12678c0.00079-0.00108-0.01975-0.01772-0.01898-0.01882 0.203-0.2892-0.246-1.1269-1.057-1.9305-0.812-0.8056-1.6737-1.2697-1.9602-1.062l-0.12626 0.12678z"/>
<path id="path3049" style="fill:url(#linearGradient3144)" d="m9.0628 3.9929c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.000771 0.0011 0.01977 0.017738 0.01898 0.018822l0.126-0.1268c0.00079-0.00108-0.01975-0.017721-0.01898-0.018821 0.203-0.2892-0.247-1.1269-1.058-1.9305-0.812-0.8056-1.6734-1.2697-1.9599-1.062l-0.1263 0.1268z"/>
<path id="path3051" style="fill:url(#linearGradient3146)" d="m9.5806 3.473c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81045 0.80363 1.2602 1.6413 1.0576 1.9306-0.000773 0.0011 0.01977 0.017737 0.01898 0.01882l0.12626-0.12678c0.000791-0.00108-0.01975-0.017721-0.01898-0.01882 0.202-0.2892-0.247-1.1269-1.058-1.9306-0.812-0.8055-1.6736-1.2696-1.9601-1.0619l-0.1263 0.1268z"/>
<path id="path3053" style="fill:url(#linearGradient3148)" d="m9.4649 3.5891c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81045 0.80363 1.2602 1.6413 1.0576 1.9306-0.000769 0.0011 0.01977 0.017737 0.01898 0.018821l0.12626-0.12678c0.00079-0.00108-0.01975-0.01772-0.01898-0.01882 0.203-0.2892-0.247-1.1269-1.057-1.9305-0.813-0.8055-1.6743-1.2696-1.9608-1.0619l-0.1263 0.1267z"/>
<path id="path3055" style="fill:url(#linearGradient3150)" d="m9.9846 3.0673c0.2864-0.2077 1.1484 0.2564 1.9604 1.0619 0.81045 0.80363 1.2602 1.6413 1.0576 1.9306-0.00077 0.0011 0.01977 0.017738 0.01898 0.018821l0.126-0.1268c0.000792-0.00108-0.01975-0.017721-0.01898-0.018821 0.202-0.2892-0.247-1.1269-1.058-1.9306-0.812-0.8055-1.674-1.2696-1.96-1.0619l-0.1264 0.1268z"/>
<path id="path3057" style="fill:url(#linearGradient3152)" d="m9.8689 3.1835c0.28654-0.20771 1.148 0.25639 1.9603 1.0619 0.81044 0.80363 1.2602 1.6413 1.0576 1.9306-0.000771 0.0011 0.01977 0.017737 0.01898 0.018821l0.12626-0.12678c0.000789-0.00108-0.01975-0.017722-0.01898-0.018821 0.203-0.2892-0.247-1.1269-1.057-1.9306-0.813-0.8055-1.674-1.2696-1.9608-1.0619l-0.1263 0.1268z"/>
<path id="path3059" style="fill-rule:evenodd;stroke:url(#linearGradient3156);stroke-width:.60798;fill:url(#linearGradient3154)" d="m0.25981 15.794 4.7719-1.7255 0.039308-0.03926c0.2026-0.289-0.2524-1.127-1.0629-1.93-0.8124-0.806-1.6727-1.268-1.9592-1.06l-1.7891 4.755z"/>
<path id="path3061" style="fill-rule:evenodd;stroke:#0c0c0c;stroke-width:.60798;fill:#0c0c0c" d="m0.74443 14.506-0.48521 1.283 1.3014-0.473c-0.1137-0.134-0.2193-0.268-0.3544-0.402-0.1555-0.154-0.30705-0.281-0.46177-0.408z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2395" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2397">
<linearGradient id="linearGradient2427" y2="31.138" gradientUnits="userSpaceOnUse" x2="-93.088" gradientTransform="matrix(.42104 -.10139 .10080 .42350 44.055 -5.0894)" y1="2.0691" x1="-86.129">
<stop id="stop2266" style="stop-color:#d7e866" offset="0"/>
<stop id="stop2268" style="stop-color:#8cab2a" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2431" y2="39.78" gradientUnits="userSpaceOnUse" x2="20.494" gradientTransform="matrix(.41388 0 0 .41629 -1.7222 -1.7776)" y1="7.044" x1="20.494">
<stop id="stop3402" style="stop-color:#fff" offset="0"/>
<stop id="stop3404" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path1542" style="stroke-linejoin:round;stroke:#699536;stroke-linecap:round;stroke-width:1.0028;fill:url(#linearGradient2427)" d="m12.262 0.50446c-0.232-0.02365-0.462 0.09048-0.581 0.30958l-5.0718 9.333-3.2606-2.6075c-0.2904-0.1597-0.6528-0.057-0.8115 0.2352l-1.4622 1.8882c-0.1587 0.29213-0.051938 0.6565 0.2385 0.81613 0 0 5.9534 4.9457 5.9608 4.9493 0.068071 0.03741 0.13926 0.05624 0.21162 0.06544 0.23638 0.03004 0.47828-0.08166 0.59979-0.30532l6.8394-12.586c0.1587-0.29213 0.05194-0.6565-0.2385-0.81613l-2.194-1.2118c-0.073-0.03986-0.153-0.06176-0.23-0.06964z"/>
<path id="path2429" style="opacity:.4;stroke:url(#linearGradient2431);stroke-linecap:round;stroke-width:1.0028;fill:none" d="m12.312 1.6562-5.312 9.8128a0.15035 0.15035 0 0 1 0 0.031 0.15035 0.15035 0 0 1 -0.03125 0.03125 0.15035 0.15035 0 0 1 -0.03125 0 0.15035 0.15035 0 0 1 -0.03125 0.03125 0.15035 0.15035 0 0 1 -0.03125 0 0.15035 0.15035 0 0 1 -0.03125 0 0.15035 0.15035 0 0 1 -0.03125 -0.03125 0.15035 0.15035 0 0 1 -0.03125 0l-3.6562-2.906c-0.32388 0.40246-0.60092 0.77792-0.96875 1.25 0.1123 0.093077 1.303 1.09 2.625 2.1875 0.6912 0.57379 1.3815 1.1568 1.9062 1.5938 0.26235 0.21848 0.4994 0.39983 0.65625 0.53125 0.050142 0.04201 0.088455 0.06296 0.125 0.09375 0.052555-0.09355 0.10901-0.18055 0.25-0.4375 0.19196-0.34986 0.43971-0.83698 0.75-1.4062 0.62059-1.1385 1.4445-2.6103 2.25-4.0938 0.80552-1.4834 1.5812-2.9751 2.1875-4.0938 0.30316-0.55933 0.56868-1.0087 0.75-1.3438 0.14198-0.26236 0.21072-0.36449 0.25-0.4375-0.055-0.0314-0.1-0.0615-0.218-0.125-0.172-0.0919-0.379-0.1999-0.594-0.3126-0.215-0.1126-0.432-0.2271-0.594-0.3124-0.067-0.0354-0.141-0.0375-0.188-0.0626z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3251" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3253">
<linearGradient id="linearGradient2406" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(.74324 0 0 .74322 -38.23 10.609)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2411" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.36857 0 0 .36857 -.84577 -.84577)" y1="44.98" x1="18.379">
<stop id="stop2492" style="stop-color:#791235" offset="0"/>
<stop id="stop2494" style="stop-color:#dd3b27" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2409" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 .87966 -1.1611 0 12.633 -21.084)" r="20.397">
<stop id="stop3244" style="stop-color:#f8b17e" offset="0"/>
<stop id="stop3246" style="stop-color:#e35d4f" offset=".26238"/>
<stop id="stop3248" style="stop-color:#c6262e" offset=".66094"/>
<stop id="stop3250" style="stop-color:#690b54" offset="1"/>
</radialGradient>
</defs>
<g id="layer1">
<g id="g3275">
<path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2411);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2409)" d="m8 0.50183c-4.1372 0-7.4982 3.361-7.4982 7.4982 0.00003 4.137 3.361 7.498 7.4982 7.498 4.137 0 7.498-3.361 7.498-7.498 0-4.1372-3.361-7.4982-7.498-7.4982z"/>
<path id="path2463" style="opacity:.4;stroke:url(#linearGradient2406);fill:none" d="m14.5 7.9998c0 3.5902-2.91 6.5002-6.4999 6.5002s-6.5001-2.91-6.5001-6.5002c0-3.5898 2.9102-6.4998 6.5001-6.4998s6.4999 2.91 6.4999 6.4998z"/>
</g>
<path id="path3360" style="opacity:.2" d="m3 8h10v-2h-10v2z"/>
<path id="path3249" style="fill:#fff" d="m3 9h10v-2h-10v2z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg7384" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata90">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title>Gnome Symbolic Icon Theme</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<title id="title9167">Gnome Symbolic Icon Theme</title>
<g id="layer9" transform="translate(-321,-257)">
<path id="path18112" style="color:#bebebe;enable-background:new;fill:#bebebe" d="m328.92 257.09c-0.5255-0.0286-1.0382 0.28305-1.4375 0.96875l-6.25 11.594c-0.53 0.97 0.05 2.35 1.1 2.35h13.156c0.98172 0 1.9031-1.1594 1.2188-2.3438l-6.32-11.54c-0.39872-0.64617-0.94325-1.0026-1.4688-1.0312zm-0.0313 3.9375c0.54448-0.0172 1.0485 0.48677 1.0312 1.0312v3.9375c0.007 0.52831-0.47163 1.0142-1 1.0142-0.52836 0-1.0075-0.48593-1-1.0142v-3.9375c-0.008-0.4666 0.3541-0.91253 0.8125-1 0.0511-0.0145 0.10345-0.025 0.15625-0.0313zm-0.9687 6.9688h2v2h-2v-2z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4002" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs4004">
<linearGradient id="linearGradient3645" y2="15" xlink:href="#linearGradient3587-6-5-3" gradientUnits="userSpaceOnUse" x2="7.9995" gradientTransform="translate(-.99952 1)" y1="1" x1="7.9995"/>
<linearGradient id="linearGradient3653" y2="12" xlink:href="#linearGradient3587-6-5-3" gradientUnits="userSpaceOnUse" x2="8.9995" gradientTransform="translate(1.0005 1)" y1="3" x1="8.9995"/>
<linearGradient id="linearGradient3587-6-5-3">
<stop id="stop3589-9-2-2" offset="0"/>
<stop id="stop3591-7-4-73" style="stop-color:#363636" offset="1"/>
</linearGradient>
</defs>
<path id="path3655" style="opacity:.6;block-progression:tb;text-indent:0;color:#000000;text-transform:none;fill:#fff" d="m4.2192 5.0003-0.03125 0.03125c-0.13929 0.056469-0.26082 0.1559-0.34375 0.28125l-3 4.25c-0.18164 0.25295-0.18164 0.62205 0 0.875l3 4.25c0.082937 0.12535 0.20446 0.22478 0.34375 0.28125l0.03125 0.03125h0.125 0.15625c0.020821 0.000868 0.041679 0.000868 0.0625 0h9.9375 0.5v-0.5-9-0.5h-0.5-9.875-0.0625c-0.020821-0.0008682-0.041679-0.0008682-0.0625 0h-0.1875-0.09375zm0.9375 1h8.8438v8h-8.8125c-0.031927-0.06831-0.074226-0.13176-0.125-0.1875l-2.6875-3.8125 2.6875-3.8125c0.039807-0.057709 0.071467-0.12103 0.09375-0.1875z"/>
<path id="path3657" style="opacity:.6;block-progression:tb;text-indent:0;color:#bebebe;enable-background:new;text-transform:none;fill:#fff" d="m7.0036 7.0006h1c0.01037-0.00012 0.02079-0.00046 0.03125 0 0.25495 0.0112 0.50987 0.12858 0.6875 0.3125l1.2812 1.2812 1.3125-1.2812c0.26562-0.2305 0.44667-0.3055 0.6875-0.3125h1v1c0 0.28647-0.03434 0.55065-0.25 0.75l-1.2812 1.2813 1.25 1.25c0.18819 0.18817 0.28124 0.45345 0.28125 0.71875v1h-1c-0.2653-0.00001-0.53059-0.0931-0.71875-0.28125l-1.2812-1.2812-1.2812 1.2812c-0.18816 0.18819-0.45346 0.28125-0.71875 0.28125h-1v-1c-0.000003-0.26529 0.09306-0.53058 0.28125-0.71875l1.2812-1.25-1.2812-1.2813c-0.21074-0.19463-0.30316-0.46925-0.28125-0.75v-1z"/>
<path id="path2836" style="opacity:.7;block-progression:tb;text-indent:0;color:#000000;text-transform:none;fill:url(#linearGradient3645)" d="m4.2192 4-0.03125 0.03125c-0.1393 0.0565-0.2608 0.1559-0.3438 0.2813l-2.7002 4.25c-0.18164 0.25295-0.18164 0.62205 0 0.875l2.7002 4.25c0.082937 0.12535 0.20446 0.22478 0.34375 0.28125l0.0312 0.031h0.125 0.15625c0.020821 0.000868 0.041679 0.000868 0.0625 0h9.9375 0.5v-0.5-9-0.5h-0.5-9.875-0.0625c-0.020821-0.0008682-0.041679-0.0008682-0.0625 0h-0.1875-0.09375zm0.9375 1h8.8438v8h-8.8125c-0.031927-0.06831-0.074226-0.13176-0.125-0.1875l-2.687-3.812 2.6875-3.8125c0.0398-0.0577 0.0714-0.121 0.0937-0.1875z"/>
<path id="path10839" style="opacity:.7;block-progression:tb;text-indent:0;color:#bebebe;enable-background:new;text-transform:none;fill:url(#linearGradient3653)" d="m7.0036 6.0002h1c0.01037-0.00012 0.02079-0.00046 0.03125 0 0.25495 0.0112 0.50987 0.12858 0.6875 0.3125l1.2812 1.2812 1.3125-1.2812c0.26562-0.2305 0.44667-0.3055 0.6875-0.3125h1v1c0 0.28647-0.03434 0.55065-0.25 0.75l-1.2812 1.2812 1.25 1.25c0.18819 0.18817 0.28124 0.45345 0.28125 0.71875v1h-1c-0.2653-0.00001-0.53059-0.0931-0.71875-0.28125l-1.2812-1.2812-1.2813 1.2812c-0.18816 0.18819-0.45346 0.28125-0.71875 0.28125h-1v-1c-0.000003-0.26529 0.09306-0.53058 0.28125-0.71875l1.2811-1.2495-1.2812-1.2813c-0.21074-0.19463-0.30316-0.46925-0.28125-0.75v-1z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3691" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3693">
<linearGradient id="linearGradient4884" y2="224.68" gradientUnits="userSpaceOnUse" x2="31.341" y1="235.03" x1="31.341">
<stop id="stop4024-2-8" style="stop-color:#555753" offset="0"/>
<stop id="stop4026-8-3" style="stop-color:#babdb6" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3655" y2="225" gradientUnits="userSpaceOnUse" x2="23.5" y1="225" x1="34.5">
<stop id="stop2605-6" style="stop-color:#bb2b12" offset="0"/>
<stop id="stop2607-3" style="stop-color:#cd7233" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3663" y2="229" gradientUnits="userSpaceOnUse" x2="35.5" y1="229" x1="24.5">
<stop id="stop2612-7" style="stop-color:#f0c178" offset="0"/>
<stop id="stop2614-5" style="stop-color:#e18941" offset=".5"/>
<stop id="stop2616-9" style="stop-color:#ec4f18" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<g id="g4946" style="enable-background:new" transform="matrix(0,1,1,0,-219,-21.5)">
<g id="g4873" style="stroke:url(#linearGradient4884)">
<path id="path2932-4" style="stroke-linejoin:round;stroke-width:4;stroke:url(#linearGradient3655);stroke-linecap:round;enable-background:new;fill:none" d="m32 221-5.5 5.5 5.5 5.5"/>
</g>
<path id="path2932" style="stroke-linejoin:round;stroke:url(#linearGradient3663);stroke-linecap:round;stroke-width:2;fill:none" d="m32 221-5.5 5.5 5.5 5.5"/>
<path id="path2932-0-9-9" style="opacity:.4;stroke:#fff;stroke-linecap:round;enable-background:new;fill:none" d="m31.4 232-5.5-5.5 5.5-5.5"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2461" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2463">
<linearGradient id="linearGradient2457" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.36857 0 0 .36857 -.84577 -.84577)" y1="44.98" x1="18.379">
<stop id="stop2788" style="stop-color:#1f4b6a" offset="0"/>
<stop id="stop2790" style="stop-color:#4083c2" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2455" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 .87966 -1.1611 0 12.633 -21.084)" r="20.397">
<stop id="stop2778" style="stop-color:#8badea" offset="0"/>
<stop id="stop2780" style="stop-color:#6396cd" offset=".26238"/>
<stop id="stop2782" style="stop-color:#3b7caf" offset=".66094"/>
<stop id="stop2784" style="stop-color:#194c70" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2452" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(.74324 0 0 .74322 -38.23 10.609)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path2449" style="stroke-linejoin:round;stroke:url(#linearGradient2457);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2455)" d="m8 0.50183c-4.1372 0-7.4982 3.361-7.4982 7.4982 0.00003 4.137 3.361 7.498 7.4982 7.498 4.137 0 7.498-3.361 7.498-7.498 0-4.1372-3.361-7.4982-7.498-7.4982z"/>
<path id="path2451" style="opacity:.4;stroke:url(#linearGradient2452);fill:none" d="m14.5 7.9998c0 3.5902-2.91 6.5002-6.4999 6.5002s-6.5001-2.91-6.5001-6.5002c0-3.5898 2.9102-6.4998 6.5001-6.4998s6.4999 2.91 6.4999 6.4998z"/>
<path id="path3536" style="fill:#fff" d="m5.8809 7.6039c0.1112 0.2727 0.2329 0.4926 0.4614 0.176 0.291-0.1922 1.259-1.0222 1.1895-0.2449-0.2635 1.4439-0.5972 2.876-0.8384 4.323-0.2804 0.798 0.4546 1.481 1.1726 0.94 0.7716-0.361 1.4257-0.923 2.0961-1.441-0.1034-0.231-0.1794-0.565-0.4273-0.248-0.3352 0.171-1.0517 0.943-1.2144 0.337 0.2258-1.561 0.6984-3.0746 0.9775-4.6254 0.2848-0.7194-0.2609-1.5917-1.002-0.976-0.8996 0.4419-1.6391 1.1342-2.415 1.7593zm3.1923-5.3491c-0.936-0.0124-1.3641 1.536-0.46 1.9183 0.7319 0.2706 1.4868-0.5111 1.281-1.2531-0.07-0.3879-0.4276-0.6943-0.821-0.6652z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3247" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3249">
<linearGradient id="linearGradient2401" y2="34.225" gradientUnits="userSpaceOnUse" x2="24.104" gradientTransform="matrix(.70965 0 0 .70537 -8.945 -8.2363)" y1="15.181" x1="24.104">
<stop id="stop2266" style="stop-color:#d7e866" offset="0"/>
<stop id="stop2268" style="stop-color:#8cab2a" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3190" y2="16.004" gradientUnits="userSpaceOnUse" x2="8" x1="8">
<stop id="stop3182" style="stop-color:#fff" offset="0"/>
<stop id="stop3184" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path2262" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#699536;fill:url(#linearGradient2401)" d="m5.5 5.5v-5h5v5h5v5h-5v5h-5v-5h-5v-5h5z"/>
<path id="path3188" style="opacity:.4;stroke:url(#linearGradient3190);fill:none" d="m6.5 1.5v4c-0.00481 0.55028-0.44972 0.99519-1 1h-4v3h4c0.55028 0.00481 0.99519 0.44972 1 1v4h3v-4c0.00481-0.55028 0.44972-0.99519 1-1h4v-3h-4c-0.5503-0.0048-0.9952-0.4497-1-1v-4h-3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3247" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3249">
<linearGradient id="linearGradient2401" y2="29.707" gradientUnits="userSpaceOnUse" x2="23.878" gradientTransform="matrix(.70965 0 0 .70537 -8.945 -8.2363)" y1="18.765" x1="23.878">
<stop id="stop3945" style="stop-color:#e35d4f" offset="0"/>
<stop id="stop3947" style="stop-color:#c6262e" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3190" y2="16.004" gradientUnits="userSpaceOnUse" x2="8" x1="8">
<stop id="stop3182" style="stop-color:#fff" offset="0"/>
<stop id="stop3184" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path2262" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#a53738;fill:url(#linearGradient2401)" d="m15.5 5.5v5h-15v-5h15z"/>
<path id="path3188" style="opacity:.4;stroke:url(#linearGradient3190);fill:none" d="m1.5 6.5v3h13v-3h-13z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2829" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2831">
<linearGradient id="linearGradient3615">
<stop id="stop3617" style="stop-color:#eeeeec" offset="0"/>
<stop id="stop3619" style="stop-color:#babdb6" offset=".69580"/>
<stop id="stop3621" style="stop-color:#a1a59b" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2782">
<stop id="stop2784" style="stop-color:#fff" offset="0"/>
<stop id="stop2786" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3627" y2="45.849" xlink:href="#linearGradient3615" gradientUnits="userSpaceOnUse" x2="-11.448" gradientTransform="matrix(.36755 0 0 .36638 8.2056 -1.7938)" y1="10.344" x1="-11.448"/>
<linearGradient id="linearGradient3629" y2="52.94" xlink:href="#linearGradient2782" gradientUnits="userSpaceOnUse" x2="10.44" gradientTransform="matrix(.29583 0 0 .33661 8.2499 -1.1702)" y1="9.9657" x1="10.44"/>
<linearGradient id="linearGradient3635" y2="45.849" xlink:href="#linearGradient3615" gradientUnits="userSpaceOnUse" x2="-11.448" gradientTransform="matrix(.36755 0 0 .36638 16.206 -1.7938)" y1="10.344" x1="-11.448"/>
<linearGradient id="linearGradient3637" y2="52.94" xlink:href="#linearGradient2782" gradientUnits="userSpaceOnUse" x2="10.44" gradientTransform="matrix(.29583 0 0 .33661 16.25 -1.1702)" y1="9.9657" x1="10.44"/>
</defs>
<g id="layer1">
<path id="path3623" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#888a86;stroke-linecap:round;stroke-width:1.0007;fill:url(#linearGradient3627)" d="m1.5004 1.5004v12.999h4.9993v-12.999h-4.9993z"/>
<path id="path3625" style="opacity:0.41;stroke-opacity:.97255;stroke:url(#linearGradient3629);stroke-linecap:round;stroke-width:1.0013;fill:none" d="m2.5007 2.5007v10.999l2.9983-0.0154v-10.983h-2.9983z"/>
<path id="path3631" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#888a86;stroke-linecap:round;stroke-width:1.0007;fill:url(#linearGradient3635)" d="m9.5004 1.5004v12.999h4.9993v-12.999h-4.9993z"/>
<path id="path3633" style="opacity:0.41;stroke-opacity:.97255;stroke:url(#linearGradient3637);stroke-linecap:round;stroke-width:1.0013;fill:none" d="m10.501 2.5007v10.999l2.9983-0.0154v-10.983h-2.9983z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2397" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2399">
<linearGradient id="linearGradient2395" y2="43.878" gradientUnits="userSpaceOnUse" x2="18.037" gradientTransform="matrix(.42222 0 0 .38297 -3.1322 -1.1011)" y1="14.511" x1="18.037">
<stop id="stop2266" style="stop-color:#d7e866" offset="0"/>
<stop id="stop2268" style="stop-color:#8cab2a" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2392" y2="46.874" gradientUnits="userSpaceOnUse" x2="13.759" gradientTransform="matrix(.35126 0 0 .34884 -.99223 -.37226)" y1="14.66" x1="34.404">
<stop id="stop4224" style="stop-color:#fff" offset="0"/>
<stop id="stop4226" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path3375" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#548820;stroke-linecap:round;fill:url(#linearGradient2395)" d="m1.5 14.5v-13l13 6.5-13 6.5z"/>
<path id="path2294" style="opacity:0.41;stroke:url(#linearGradient2392);stroke-linecap:round;fill:none" d="m2.5 12.878v-9.778l9.841 4.9-9.841 4.878z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2528" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2530">
<linearGradient id="linearGradient2406" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(.74324 0 0 .74322 -38.23 10.609)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2411" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.36857 0 0 .36857 -.84577 -.84577)" y1="44.98" x1="18.379">
<stop id="stop2492" style="stop-color:#791235" offset="0"/>
<stop id="stop2494" style="stop-color:#dd3b27" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2409" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 .87966 -1.1611 0 12.633 -21.084)" r="20.397">
<stop id="stop3244" style="stop-color:#f8b17e" offset="0"/>
<stop id="stop3246" style="stop-color:#e35d4f" offset=".26238"/>
<stop id="stop3248" style="stop-color:#c6262e" offset=".66094"/>
<stop id="stop3250" style="stop-color:#690b54" offset="1"/>
</radialGradient>
</defs>
<g id="layer1">
<g id="g2552">
<path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2411);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2409)" d="m8 0.50183c-4.1372 0-7.4982 3.361-7.4982 7.4982 0.00003 4.137 3.361 7.498 7.4982 7.498 4.137 0 7.498-3.361 7.498-7.498 0-4.1372-3.361-7.4982-7.498-7.4982z"/>
<path id="path2463" style="opacity:.4;stroke:url(#linearGradient2406);fill:none" d="m14.5 7.9998c0 3.5902-2.91 6.5002-6.4999 6.5002s-6.5001-2.91-6.5001-6.5002c0-3.5898 2.9102-6.4998 6.5001-6.4998s6.4999 2.91 6.4999 6.4998z"/>
</g>
<path id="path3243" style="opacity:.2;fill-rule:evenodd" d="m5.2625 3l-1.2625 1.2625 2.6047 2.5913c0.08 0.081 0.08 0.2114 0 0.2924l-2.6047 2.5913 1.2625 1.2625 2.5913-2.5914c0.081-0.08 0.2114-0.08 0.2924 0l2.5918 2.5914 1.262-1.2625-2.5914-2.5913c-0.08-0.081-0.08-0.2114 0-0.2924l2.5914-2.5913-1.262-1.2625-2.5918 2.5914c-0.081 0.08-0.2114 0.08-0.2924 0l-2.5913-2.5914z"/>
<path id="path3256" style="fill:#fff;fill-rule:evenodd" d="m5.2625 4l-1.2625 1.2625 2.6047 2.5913c0.08 0.081 0.08 0.2114 0 0.2924l-2.6047 2.5918 1.2625 1.262 2.5913-2.5914c0.081-0.08 0.2114-0.08 0.2924 0l2.5918 2.5914 1.262-1.262-2.5914-2.5918c-0.08-0.081-0.08-0.2114 0-0.2924l2.5914-2.5913-1.262-1.2625-2.5918 2.5914c-0.081 0.08-0.2114 0.08-0.2924 0l-2.5913-2.5914z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2987" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16px" width="16px" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs id="defs2989">
<linearGradient id="linearGradient2880" y2="44" gradientUnits="userSpaceOnUse" x2="16.143" gradientTransform="matrix(.23078 0 0 .15386 2.4612 4.8074)" y1="4" x1="16.143">
<stop id="stop2225-6-4-7-2" style="stop-color:#fff" offset="0"/>
<stop id="stop2229-2-5-5-8" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2883" y2="24.628" gradientUnits="userSpaceOnUse" x2="20.055" gradientTransform="matrix(.30476 0 0 .32156 .68572 1.0807)" y1="15.298" x1="16.626">
<stop id="stop2687-1-9-0-2" style="stop-color:#fff" offset="0"/>
<stop id="stop2689-5-4-3-1" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2886" y2="16" xlink:href="#linearGradient3680-6" gradientUnits="userSpaceOnUse" x2="16" gradientTransform="matrix(.34286 0 0 .36364 -.42808 -.81818)" y1="27.045" x1="16"/>
<linearGradient id="linearGradient3680-6">
<stop id="stop3682-4" style="stop-color:#dcdcdc" offset="0"/>
<stop id="stop3684-8" style="stop-color:#fff" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2890" y2="26" xlink:href="#linearGradient3680-6" gradientUnits="userSpaceOnUse" x2="20" gradientTransform="matrix(.375 0 0 0.375 -.74978 -0.5)" y1="28" x1="20"/>
<linearGradient id="linearGradient2894" y2="47.279" gradientUnits="userSpaceOnUse" x2="12.213" gradientTransform="matrix(.28855 0 0 .25608 1.0743 2.6116)" y1="2.9165" x1="12.579">
<stop id="stop2240-1-6-7-0" style="stop-color:#fff" offset="0"/>
<stop id="stop2242-7-3-7-2" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2897" y2="33.296" gradientUnits="userSpaceOnUse" x2="23.071" gradientTransform="matrix(.33032 0 0 .32624 .074248 1.9649)" y1="36.047" x1="23.071">
<stop id="stop2225-6-4-7" style="stop-color:#fff" offset="0"/>
<stop id="stop2229-2-5-5" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2900" gradientUnits="userSpaceOnUse" cy="8.4498" cx="7.4957" gradientTransform="matrix(0 .47178 -.86826 -1.9907e-8 15.337 1.0829)" r="20">
<stop id="stop3790-0-0" style="stop-color:#505050" offset="0"/>
<stop id="stop3792-0-2" style="stop-color:#141414" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2902" y2="44" gradientUnits="userSpaceOnUse" x2="16.143" gradientTransform="matrix(.28207 0 0 .20514 1.2304 3.5766)" y1="4" x1="16.143">
<stop id="stop3796-3-0" style="stop-color:#323232" offset="0"/>
<stop id="stop3798-8-6" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2983" y2="43.865" gradientUnits="userSpaceOnUse" y1="7.96" gradientTransform="matrix(.33330 0 0 .32429 .00075427 .06858)" x2="24" x1="24">
<stop id="stop4324-9-7" style="stop-color:#f0f0f0" offset="0"/>
<stop id="stop2860-4-4" style="stop-color:#d7d7d8" offset=".085525"/>
<stop id="stop2862-5-9" style="stop-color:#b2b2b3" offset=".92166"/>
<stop id="stop4326-1-1" style="stop-color:#979798" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2985" y2="2.8765" gradientUnits="userSpaceOnUse" y1="44.96" gradientTransform="matrix(.31912 0 0 .29298 .34112 1.4648)" x2="10.014" x1="10.014">
<stop id="stop4334-7-6" style="stop-color:#595959" offset="0"/>
<stop id="stop4336-8-0" style="stop-color:#b3b3b3" offset="1"/>
</linearGradient>
</defs>
<metadata id="metadata2992">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1">
<rect id="rect2551-5-8" style="stroke-linejoin:round;fill-rule:evenodd;stroke:url(#linearGradient2985);stroke-linecap:round;stroke-width:1.0021;fill:url(#linearGradient2983)" rx="1" ry="1" height="11.998" width="14.998" y="2.5011" x=".50107"/>
<rect id="rect1314-3-3" style="stroke-linejoin:round;color:#000000;stroke:url(#linearGradient2902);stroke-linecap:round;fill:url(#radialGradient2900)" rx="0" ry="0" height="8" width="11" y="4.5" x="2.5"/>
<rect id="rect2221-3-8" style="opacity:.4;stroke-linejoin:round;stroke:url(#linearGradient2897);stroke-linecap:round;stroke-width:1.0021;fill:none" rx="0" ry="0" height="9.9979" width="12.998" y="3.5011" x="1.501"/>
<rect id="rect2556-8-5" style="opacity:.8;stroke-linejoin:round;stroke:url(#linearGradient2894);stroke-linecap:round;stroke-width:1.0037;fill:none" height="9.9963" width="12.996" y="3.5019" x="1.5019"/>
<path id="path3651-2" style="fill:url(#linearGradient2890)" d="m9.0002 10v-0.75h-3v0.75h3z"/>
<path id="path3653-7" style="fill:url(#linearGradient2886)" d="m3.6862 9-0.6857-0.7273 1.5428-1.2727-1.5428-1.2727 0.6857-0.7273 2.3143 2-2.3143 2z"/>
<path id="path3333-3-0" style="opacity:.2;fill:url(#linearGradient2883);fill-rule:evenodd" d="m1.6667 3c-0.3683 0-0.6667 0.3149-0.6667 0.7034v5.145c0.0009545 0.043283 0.018837 0.084214 0.049602 0.11286 0.030769 0.028643 0.071495 0.04238 0.1123 0.037874l13.714-2.2911c0.071-0.0117 0.123-0.0754 0.124-0.1507v-2.8539c0-0.3885-0.298-0.7034-0.667-0.7034h-12.667z"/>
<rect id="rect1314-3-3-9" style="opacity:.1;stroke-linejoin:round;color:#000000;stroke:url(#linearGradient2880);stroke-linecap:round;fill:none" rx="0" ry="0" height="6" width="9" y="5.5" x="3.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More