Re-Created branch form 0, to avoid conflicts

This commit is contained in:
Jose Luis Cercos Pita 2012-10-28 19:54:09 +01:00 committed by wmayer
parent 60e09f127e
commit b90185c842
42 changed files with 7824 additions and 1 deletions

View File

@ -344,6 +344,15 @@ MARK_AS_ADVANCED(FORCE FREECAD_LIBPACK_CHECKFILE6X FREECAD_LIBPACK_CHECKFILE7X)
find_package(Spnav)
endif(WIN32)
# ------------------------------ Matplotlib ------------------------------
find_package(Matplotlib)
IF(MATPLOTLIB_FOUND)
message("-- matplotlib-${MATPLOTLIB_VERSION} has been found.")
ELSE(MATPLOTLIB_FOUND)
message("matplotlib not found, Plot module will not available until matplotlib is installed!")
ENDIF(MATPLOTLIB_FOUND)
# ------------------------------------------------------------------------

View File

@ -0,0 +1,48 @@
# - Find the matplotlib libraries
# This module finds IF matplotlib is installed, and sets the following variables
# indicating where it is.
#
# MATPLOTLIB_FOUND - was matplotlib found
# MATPLOTLIB_VERSION - the version of matplotlib found as a string
# MATPLOTLIB_VERSION_MAJOR - the major version number of matplotlib
# MATPLOTLIB_VERSION_MINOR - the minor version number of matplotlib
# MATPLOTLIB_VERSION_PATCH - the patch version number of matplotlib
# MATPLOTLIB_VERSION_DECIMAL - e.g. version 1.1.1r is 10101
# MATPLOTLIB_PATH_DIRS - path to the matplotlib include files
IF(PYTHONINTERP_FOUND)
# Try to import matplotlib into Python interpreter. Python
# interpreter was found previously as required package, so
# don't take care about this.
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
"import matplotlib as m; print(m.__version__); print(m.__path__[0]);"
RESULT_VARIABLE _MATPLOTLIB_SEARCH_SUCCESS
OUTPUT_VARIABLE _MATPLOTLIB_VALUES
ERROR_VARIABLE _MATPLOTLIB_ERROR_VALUE
OUTPUT_STRIP_TRAILING_WHITESPACE)
IF(_MATPLOTLIB_SEARCH_SUCCESS MATCHES 0)
set(MATPLOTLIB_FOUND TRUE)
# Convert the process output into a list
string(REGEX REPLACE ";" "\\\\;" _MATPLOTLIB_VALUES ${_MATPLOTLIB_VALUES})
string(REGEX REPLACE "\n" ";" _MATPLOTLIB_VALUES ${_MATPLOTLIB_VALUES})
list(GET _MATPLOTLIB_VALUES 0 MATPLOTLIB_VERSION)
list(GET _MATPLOTLIB_VALUES 1 MATPLOTLIB_PATH_DIRS)
# Make sure all directory separators are '/'
string(REGEX REPLACE "\\\\" "/" MATPLOTLIB_PATH_DIRS ${MATPLOTLIB_PATH_DIRS})
# Get the major and minor version numbers
string(REGEX REPLACE "\\." ";" _MATPLOTLIB_VERSION_LIST ${MATPLOTLIB_VERSION})
list(GET _MATPLOTLIB_VERSION_LIST 0 MATPLOTLIB_VERSION_MAJOR)
list(GET _MATPLOTLIB_VERSION_LIST 1 MATPLOTLIB_VERSION_MINOR)
list(GET _MATPLOTLIB_VERSION_LIST 2 MATPLOTLIB_VERSION_PATCH)
math(EXPR MATPLOTLIB_VERSION_DECIMAL
"(${MATPLOTLIB_VERSION_MAJOR} * 10000) + (${MATPLOTLIB_VERSION_MINOR} * 100) + ${MATPLOTLIB_VERSION_PATCH}")
ELSE()
set(MATPLOTLIB_FOUND FALSE)
ENDIF()
ELSE()
set(MATPLOTLIB_FOUND FALSE)
ENDIF()

View File

@ -649,6 +649,23 @@ fi
AM_CONDITIONAL(HAVE_SPNAV_FOUND, test x"$fc_cv_lib_spnav_avail" = xyes)
dnl checking for matplotlib
dnl **************************************************************************
fc_matplotlib_avail=no
AC_MSG_CHECKING([for matplotlib])
fc_matplotlib_ver=`python -c "import matplotlib as m; print m.__version__;"`;
if test x$fc_py_ver = x; then
AC_MSG_WARN([
**** Cannot find matplotlib Python module.
Plot Module will not available until matplotlib is installed ****
])
else
fc_matplotlib_avail=yes
fi;
AC_MSG_RESULT([yes])
AM_CONDITIONAL(HAVE_MATPLOTLIB, test x"$fc_matplotlib_avail" = xyes)
#---------------------------------------------------------------------
#
# Check if 64-bit platform

View File

@ -21,7 +21,7 @@ Standards-Version: 3.9.2
Package: freecad
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
Recommends: python-pivy
Recommends: python-pivy python-matplotlib
Suggests: freecad-doc
Description: Extensible Open Source CAx program (alpha)
FreeCAD is an Open Source CAx RAD based on OpenCasCade, Qt and Python.

View File

@ -48,4 +48,7 @@ add_subdirectory(Surfaces)
add_subdirectory(Ship)
add_subdirectory(OpenSCAD)
add_subdirectory(Plot)

View File

@ -43,6 +43,8 @@ if BUILD_CAM
SUBDIRS += Cam
endif
SUBDIRS += Plot
EXTRA_DIST = \
__init__.py \
CMakeLists.txt \

119
src/Mod/Plot/CMakeLists.txt Normal file
View File

@ -0,0 +1,119 @@
SET(PlotMain_SRCS
Plot.py
InitGui.py
PlotGui.py
)
SOURCE_GROUP("" FILES ${PlotMain_SRCS})
SET(PlotIcons_SRCS
Icons/Axes.svg
Icons/Grid.svg
Icons/Icon.svg
Icons/Labels.svg
Icons/Legend.svg
Icons/Positions.svg
Icons/Save.svg
Icons/Series.svg
)
SOURCE_GROUP("ploticons" FILES ${PlotIcons_SRCS})
SET(PlotAxes_SRCS
plotAxes/__init__.py
plotAxes/TaskPanel.py
plotAxes/TaskPanel.ui
)
SOURCE_GROUP("plotaxes" FILES ${PlotAxes_SRCS})
SET(PlotLabels_SRCS
plotLabels/__init__.py
plotLabels/TaskPanel.py
plotLabels/TaskPanel.ui
)
SOURCE_GROUP("plotlabels" FILES ${PlotLabels_SRCS})
SET(PlotPositions_SRCS
plotPositions/__init__.py
plotPositions/TaskPanel.py
plotPositions/TaskPanel.ui
)
SOURCE_GROUP("plotpositions" FILES ${PlotPositions_SRCS})
SET(PlotSave_SRCS
plotSave/__init__.py
plotSave/TaskPanel.py
plotSave/TaskPanel.ui
)
SOURCE_GROUP("plotsave" FILES ${PlotSave_SRCS})
SET(PlotSeries_SRCS
plotSeries/__init__.py
plotSeries/TaskPanel.py
plotSeries/TaskPanel.ui
)
SOURCE_GROUP("plotseries" FILES ${PlotSeries_SRCS})
SET(PlotUtils_SRCS
plotUtils/__init__.py
plotUtils/Paths.py
plotUtils/Translator.py
)
SOURCE_GROUP("plotutils" FILES ${PlotUtils_SRCS})
SET(all_files ${PlotMain_SRCS} ${PlotAxes_SRCS} ${PlotLabels_SRCS} ${PlotPositions_SRCS} ${PlotSave_SRCS} ${PlotSeries_SRCS} ${PlotIcons_SRCS} ${PlotUtils_SRCS})
ADD_CUSTOM_TARGET(Plot ALL
SOURCES ${all_files}
)
fc_copy_sources(Mod/Plot "${CMAKE_BINARY_DIR}/Mod/Plot" ${all_files})
INSTALL(
FILES
${PlotIcons_SRCS}
DESTINATION
Mod/Plot/Icons
)
INSTALL(
FILES
${PlotAxes_SRCS}
DESTINATION
Mod/Plot/plotAxes
)
INSTALL(
FILES
${PlotLabels_SRCS}
DESTINATION
Mod/Plot/plotLabels
)
INSTALL(
FILES
${PlotPositions_SRCS}
DESTINATION
Mod/Plot/plotPositions
)
INSTALL(
FILES
${PlotSave_SRCS}
DESTINATION
Mod/Plot/plotSave
)
INSTALL(
FILES
${PlotSeries_SRCS}
DESTINATION
Mod/Plot/plotSeries
)
INSTALL(
FILES
${PlotUtils_SRCS}
DESTINATION
Mod/Plot/plotUtils
)
INSTALL(
FILES
${PlotMain_SRCS}
DESTINATION
Mod/Plot
)

451
src/Mod/Plot/Icons/Axes.svg Normal file
View File

@ -0,0 +1,451 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2772"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Legend.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2774">
<marker
inkscape:stockid="EmptyTriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="EmptyTriangleOutL"
style="overflow:visible">
<path
id="path4215"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.8) translate(-6,0)" />
</marker>
<linearGradient
id="linearGradient5055"
osb:paint="solid">
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="0"
id="stop5057" />
</linearGradient>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mend"
style="overflow:visible;">
<path
id="path4064"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path4076"
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path4058"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<linearGradient
id="linearGradient4119">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4121" />
<stop
style="stop-color:#c1c1c1;stop-opacity:1;"
offset="1"
id="stop4123" />
</linearGradient>
<linearGradient
id="linearGradient3812">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3814" />
<stop
id="stop3820"
offset="0.5"
style="stop-color:#000000;stop-opacity:0.8230769;" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3816" />
</linearGradient>
<linearGradient
id="linearGradient3909">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2210"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2202"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2194"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2780" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3915"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4004"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3818"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3832"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3844"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<linearGradient
id="linearGradient3877">
<stop
style="stop-color:#0039e5;stop-opacity:1;"
offset="0"
id="stop3879" />
<stop
style="stop-color:#8787ff;stop-opacity:1;"
offset="1"
id="stop3881" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
style="stop-color:#a3a3ff;stop-opacity:1;"
offset="0"
id="stop3866" />
<stop
style="stop-color:#000054;stop-opacity:1;"
offset="1"
id="stop3868" />
</linearGradient>
<linearGradient
id="linearGradient3887">
<stop
style="stop-color:#8c6900;stop-opacity:1;"
offset="0"
id="stop3889" />
<stop
style="stop-color:#ffcf2f;stop-opacity:1;"
offset="1"
id="stop3891" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4009"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
id="linearGradient3965">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3967" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3969" />
</linearGradient>
<linearGradient
id="linearGradient3117">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3119" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3121" />
</linearGradient>
<linearGradient
id="linearGradient3124">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3126" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3128" />
</linearGradient>
<linearGradient
id="linearGradient3131">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3133" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3135" />
</linearGradient>
<linearGradient
id="linearGradient3138">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3140" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3142" />
</linearGradient>
<linearGradient
id="linearGradient3876-7">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878-9" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880-2" />
</linearGradient>
<linearGradient
id="linearGradient3909-4">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911-6" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913-9" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4119"
id="radialGradient4125"
cx="52.355858"
cy="45.259937"
fx="52.355858"
fy="45.259937"
r="16.690233"
gradientTransform="matrix(-4.1372873,2.7082745,-1.5153087,-2.3148574,339.22028,1.5423192)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568543"
inkscape:cx="16.910275"
inkscape:cy="31.192036"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1360"
inkscape:window-height="718"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2777">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g5484"
transform="translate(-2,0)">
<g
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
transform="translate(4,4)"
id="g5478">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5480"
d="m 11.249999,57.593408 0,-53.3865624 -3.0052026,9.7227184 5.6568536,0 -2.651651,-9.7006214"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5482"
d="m 5.6568542,53.039845 53.3865618,0 -9.722718,-3.005203 0,5.656854 9.700621,-2.651651"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g5474">
<path
style="fill:#008c00;fill-opacity:1;stroke:#008c00;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.249999,57.593408 0,-53.3865624 -3.0052026,9.7227184 5.6568536,0 -2.651651,-9.7006214"
id="path5454-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 5.6568542,53.039845 53.3865618,0 -9.722718,-3.005203 0,5.656854 9.700621,-2.651651"
id="path5454"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

407
src/Mod/Plot/Icons/Grid.svg Executable file
View File

@ -0,0 +1,407 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2772"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Grid.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2774">
<linearGradient
id="linearGradient3812">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3814" />
<stop
id="stop3820"
offset="0.5"
style="stop-color:#000000;stop-opacity:0.8230769;" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3816" />
</linearGradient>
<linearGradient
id="linearGradient3909">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2210"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2202"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2194"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2780" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3915"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3876"
id="radialGradient3966"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.6710402,1.8241313,-1.810185,-2.6506188,207.0925,-28.733191)"
cx="48.585522"
cy="16.830805"
fx="48.585522"
fy="16.830805"
r="24.104704" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4004"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4011"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3818"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3822"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3824"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3826"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3828"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3830"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3832"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3834"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3836"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3838"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3840"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3842"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3844"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568543"
inkscape:cx="-3.0863692"
inkscape:cy="33.102122"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1360"
inkscape:window-height="718"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2777">
<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"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g4143"
style="stroke:url(#radialGradient3818);stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
transform="matrix(1.1958354,0,0,1.1958354,-9.281558,-2.1489538)">
<g
id="g4070"
style="stroke:url(#radialGradient3832);stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<path
style="fill:none;stroke:url(#radialGradient3822);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 18.636364,53.363636 0,-48.5454543"
id="path4001"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:url(#radialGradient3824);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 26.554308,53.415576 0,-48.5454537"
id="path4001-6"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:url(#radialGradient3826);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 34.520316,53.390013 0,-48.5454548"
id="path4001-69"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:url(#radialGradient3828);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 42.43826,53.441953 0,-48.5454538"
id="path4001-6-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:url(#radialGradient3830);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 50.561525,53.465574 0,-48.5454537"
id="path4001-6-9-1"
inkscape:connector-curvature="0" />
</g>
<g
id="g4136"
style="stroke:url(#radialGradient3844);stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<path
style="fill:none;stroke:url(#radialGradient3834);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.046875,45.268821 47.818182,0"
id="path4077"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:url(#radialGradient3836);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.061899,37.283554 47.818182,0"
id="path4077-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:url(#radialGradient3838);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.033927,29.272205 47.818182,0"
id="path4077-18"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:url(#radialGradient3840);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.048951,21.286938 47.818182,0"
id="path4077-1-0"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:url(#radialGradient3842);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.070598,13.276138 47.818182,0"
id="path4077-1-0-4"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

403
src/Mod/Plot/Icons/Icon.svg Executable file
View File

@ -0,0 +1,403 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2772"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Icon.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2774">
<linearGradient
id="linearGradient3909">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2210"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2202"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2194"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2780" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3915"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3876"
id="radialGradient3966"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.6710402,1.8241313,-1.810185,-2.6506188,207.0925,-28.733191)"
cx="48.585522"
cy="16.830805"
fx="48.585522"
fy="16.830805"
r="24.104704" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4004"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4011"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568543"
inkscape:cx="6.874763"
inkscape:cy="36.215054"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1360"
inkscape:window-height="718"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2777">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3923"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
transform="translate(2,2)">
<rect
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
id="rect3925"
width="47.982609"
height="48.776691"
x="10.879802"
y="4.8561425" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.056579,4.8601601 0,54.5115049"
id="path3927"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.3997245,53.457681 53.4829855,0"
id="path3929"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 18.641906,53.457681 0,3.214121"
id="path3931"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 26.636363,53.438394 0,3.214121"
id="path3933"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 34.590909,53.392939 0,3.214121"
id="path3935"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 42.59091,53.39294 0,3.214121"
id="path3937"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 50.590909,53.39294 0,3.214121"
id="path3939"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11,45.409091 -3.5909091,0"
id="path3941"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,37.318181 -3.5909094,0"
id="path3943"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022728,29.272727 -3.5909094,0"
id="path3945"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022727,21.272727 -3.5909088,0"
id="path3947"
inkscape:connector-curvature="0" />
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,13.272727 -3.5909094,0"
id="path3949"
inkscape:connector-curvature="0" />
</g>
<rect
style="fill:url(#radialGradient3966);fill-opacity:1;stroke:none"
id="rect3098"
width="47.982609"
height="48.776691"
x="10.879802"
y="4.8561425" />
<g
id="g4143"
style="stroke:#b4b4b4;stroke-opacity:1;stroke-width:0.4;stroke-miterlimit:4;stroke-dasharray:none">
<g
id="g4070"
style="stroke:#b4b4b4;stroke-opacity:1;stroke-width:0.4;stroke-miterlimit:4;stroke-dasharray:none">
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 18.636364,53.363636 0,-48.5454543"
id="path4001"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 26.554308,53.415576 0,-48.5454537"
id="path4001-6"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 34.520316,53.390013 0,-48.5454548"
id="path4001-69"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 42.43826,53.441953 0,-48.5454538"
id="path4001-6-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 50.561525,53.465574 0,-48.5454537"
id="path4001-6-9-1"
inkscape:connector-curvature="0" />
</g>
<g
id="g4136"
style="stroke:#b4b4b4;stroke-opacity:1;stroke-width:0.4;stroke-miterlimit:4;stroke-dasharray:none">
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.046875,45.268821 47.818182,0"
id="path4077"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.061899,37.283554 47.818182,0"
id="path4077-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.033927,29.272205 47.818182,0"
id="path4077-18"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.048951,21.286938 47.818182,0"
id="path4077-1-0"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#b4b4b4;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 11.070598,13.276138 47.818182,0"
id="path4077-1-0-4"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4007">
<path
style="fill:none;stroke:#828282;stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 13.112334,55.273361 27.831144,27.836355 37.262615,36.267518 59.26938,7.6873037"
id="path3917"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3907"
d="M 11.112334,53.273361 25.831144,25.836355 35.262615,34.267518 57.26938,5.6873037"
style="fill:none;stroke:url(#linearGradient4011);stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g3968">
<path
inkscape:connector-curvature="0"
id="path3012"
d="m 11.056579,4.8601601 0,54.5115049"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3014"
d="m 5.3997245,53.457681 53.4829855,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3016"
d="m 18.641906,53.457681 0,3.214121"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3016-5"
d="m 26.636363,53.438394 0,3.214121"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3016-2"
d="m 34.590909,53.392939 0,3.214121"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3016-3"
d="m 42.59091,53.39294 0,3.214121"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3016-51"
d="m 50.590909,53.39294 0,3.214121"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3057"
d="m 11,45.409091 -3.5909091,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3057-5"
d="m 10.977273,37.318181 -3.5909094,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3057-0"
d="m 11.022728,29.272727 -3.5909094,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3057-1"
d="m 11.022727,21.272727 -3.5909088,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3057-6"
d="m 10.977273,13.272727 -3.5909094,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,705 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2772"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Labels.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2774">
<linearGradient
id="linearGradient3890">
<stop
style="stop-color:#ffc657;stop-opacity:1;"
offset="0"
id="stop3892" />
<stop
style="stop-color:#bd7d00;stop-opacity:1;"
offset="1"
id="stop3894" />
</linearGradient>
<linearGradient
id="linearGradient3875">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3877" />
<stop
style="stop-color:#afafaf;stop-opacity:1;"
offset="1"
id="stop3882" />
</linearGradient>
<linearGradient
id="linearGradient4119">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4121" />
<stop
style="stop-color:#c1c1c1;stop-opacity:1;"
offset="1"
id="stop4123" />
</linearGradient>
<linearGradient
id="linearGradient3812">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3814" />
<stop
id="stop3820"
offset="0.5"
style="stop-color:#000000;stop-opacity:0.8230769;" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3816" />
</linearGradient>
<linearGradient
id="linearGradient3909">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2210"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2202"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2194"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2780" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3915"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4004"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3818"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3832"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3844"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<linearGradient
id="linearGradient3877">
<stop
style="stop-color:#0039e5;stop-opacity:1;"
offset="0"
id="stop3879" />
<stop
style="stop-color:#8787ff;stop-opacity:1;"
offset="1"
id="stop3881" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
style="stop-color:#a3a3ff;stop-opacity:1;"
offset="0"
id="stop3866" />
<stop
style="stop-color:#000054;stop-opacity:1;"
offset="1"
id="stop3868" />
</linearGradient>
<linearGradient
id="linearGradient3887">
<stop
style="stop-color:#8c6900;stop-opacity:1;"
offset="0"
id="stop3889" />
<stop
style="stop-color:#ffcf2f;stop-opacity:1;"
offset="1"
id="stop3891" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4009"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
id="linearGradient3965">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3967" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3969" />
</linearGradient>
<linearGradient
id="linearGradient3117">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3119" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3121" />
</linearGradient>
<linearGradient
id="linearGradient3124">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3126" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3128" />
</linearGradient>
<linearGradient
id="linearGradient3131">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3133" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3135" />
</linearGradient>
<linearGradient
id="linearGradient3138">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3140" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3142" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3876-7"
id="radialGradient3090"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.6710402,1.8241313,-1.810185,-2.6506188,207.0925,-28.733191)"
cx="48.585522"
cy="16.830805"
fx="48.585522"
fy="16.830805"
r="24.104704" />
<linearGradient
id="linearGradient3876-7">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878-9" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880-2" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909-4"
id="linearGradient3092"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083031"
y2="31.923065" />
<linearGradient
id="linearGradient3909-4">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911-6" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913-9" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4119"
id="radialGradient4125"
cx="52.355858"
cy="45.259937"
fx="52.355858"
fy="45.259937"
r="16.690233"
gradientTransform="matrix(-4.1372873,2.7082745,-1.5153087,-2.3148574,339.22028,1.5423192)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3890"
id="radialGradient3909"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.4253906,-0.52233459,1.487855,-4.0601842,55.366106,252.323)"
cx="50.719532"
cy="45.121078"
fx="50.719532"
fy="45.121078"
r="6.7407375" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3875"
id="radialGradient3911"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.8468629,-1.8068455,2.088231,4.445946,-249.71557,-94.565263)"
cx="49.943073"
cy="52.223896"
fx="49.943073"
fy="52.223896"
r="5.0124998" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4"
inkscape:cx="3.9784227"
inkscape:cy="16.996735"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1360"
inkscape:window-height="718"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2777">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3044"
transform="translate(-0.6692704,-0.508322)">
<g
transform="translate(2,2)"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
id="g3923">
<rect
y="4.8561425"
x="10.879802"
height="48.776691"
width="47.982609"
id="rect3925"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3927"
d="m 11.056579,4.8601601 0,54.5115049"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3929"
d="m 5.3997245,53.457681 53.4829855,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3931"
d="m 18.641906,53.457681 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3933"
d="m 26.636363,53.438394 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3935"
d="m 34.590909,53.392939 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3937"
d="m 42.59091,53.39294 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3939"
d="m 50.590909,53.39294 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3941"
d="m 11,45.409091 -3.5909091,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3943"
d="m 10.977273,37.318181 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3945"
d="m 11.022728,29.272727 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3947"
d="m 11.022727,21.272727 -3.5909088,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3949"
d="m 10.977273,13.272727 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<rect
y="4.8561425"
x="10.879802"
height="48.776691"
width="47.982609"
id="rect3098"
style="fill:url(#radialGradient3090);fill-opacity:1;stroke:none" />
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4143">
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4070">
<path
inkscape:connector-curvature="0"
id="path4001"
d="m 18.636364,53.363636 0,-48.5454543"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6"
d="m 26.554308,53.415576 0,-48.5454537"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-69"
d="m 34.520316,53.390013 0,-48.5454548"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6-9"
d="m 42.43826,53.441953 0,-48.5454538"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6-9-1"
d="m 50.561525,53.465574 0,-48.5454537"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4136">
<path
inkscape:connector-curvature="0"
id="path4077"
d="m 11.046875,45.268821 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1"
d="m 11.061899,37.283554 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-18"
d="m 11.033927,29.272205 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1-0"
d="m 11.048951,21.286938 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1-0-4"
d="m 11.070598,13.276138 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</g>
<g
id="g4007">
<path
inkscape:connector-curvature="0"
id="path3917"
d="M 13.112334,55.273361 27.831144,27.836355 37.262615,36.267518 59.26938,7.6873037"
style="fill:none;stroke:#828282;stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;stroke:url(#linearGradient3092);stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11.112334,53.273361 25.831144,25.836355 35.262615,34.267518 57.26938,5.6873037"
id="path3907"
inkscape:connector-curvature="0" />
</g>
<g
id="g3968">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.056579,4.8601601 0,54.5115049"
id="path3012"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.3997245,53.457681 53.4829855,0"
id="path3014"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 18.641906,53.457681 0,3.214121"
id="path3016"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 26.636363,53.438394 0,3.214121"
id="path3016-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 34.590909,53.392939 0,3.214121"
id="path3016-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 42.59091,53.39294 0,3.214121"
id="path3016-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 50.590909,53.39294 0,3.214121"
id="path3016-51"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11,45.409091 -3.5909091,0"
id="path3057"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,37.318181 -3.5909094,0"
id="path3057-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022728,29.272727 -3.5909094,0"
id="path3057-0"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022727,21.272727 -3.5909088,0"
id="path3057-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,13.272727 -3.5909094,0"
id="path3057-6"
inkscape:connector-curvature="0" />
</g>
</g>
<g
transform="matrix(0.72221865,-0.69166481,0.69166481,0.72221865,-20.714581,45.835537)"
id="g3913"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1">
<path
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 42.24963,62.40901 0,-20.682873 6.717514,-6.717515 6.363961,6.363961 0,21.07748 z"
id="path3915"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<rect
style="fill:#828282;fill-opacity:1;fill-rule:nonzero;stroke:#828282;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3917"
width="9.625"
height="15.573577"
x="44"
y="45.25" />
<path
sodipodi:type="arc"
style="fill:#828282;fill-opacity:1;fill-rule:nonzero;stroke:#828282;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3919"
sodipodi:cx="47.729706"
sodipodi:cy="37.660275"
sodipodi:rx="1.2374369"
sodipodi:ry="1.2374369"
d="m 48.967143,37.660275 c 0,0.683417 -0.55402,1.237436 -1.237437,1.237436 -0.683418,0 -1.237437,-0.554019 -1.237437,-1.237436 0,-0.683418 0.554019,-1.237437 1.237437,-1.237437 0.683417,0 1.237437,0.554019 1.237437,1.237437 z"
transform="translate(1.2374369,0.70710678)" />
</g>
<path
inkscape:connector-curvature="0"
id="path3944"
d="m 42.647591,39.533215 c -2.474874,-0.972272 -4.949748,-2.032932 -6.010408,0.08839 -1.06066,2.12132 -0.53033,4.065864 0.265165,5.656854 0.795495,1.59099 -0.08839,6.805903 -0.08839,6.805903"
style="fill:none;stroke:#828282;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
<g
id="g3900"
transform="matrix(0.72221865,-0.69166481,0.69166481,0.72221865,-21.742309,43.481984)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path3103"
d="m 42.24963,62.40901 0,-20.682873 6.717514,-6.717515 6.363961,6.363961 0,21.07748 z"
style="fill:url(#radialGradient3909);fill-opacity:1;stroke:#ffb937;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
y="45.25"
x="44"
height="15.573577"
width="9.625"
id="rect3873"
style="fill:url(#radialGradient3911);fill-opacity:1;fill-rule:nonzero;stroke:#fff3d6;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="translate(1.2374369,0.70710678)"
d="m 48.967143,37.660275 c 0,0.683417 -0.55402,1.237436 -1.237437,1.237436 -0.683418,0 -1.237437,-0.554019 -1.237437,-1.237436 0,-0.683418 0.554019,-1.237437 1.237437,-1.237437 0.683417,0 1.237437,0.554019 1.237437,1.237437 z"
sodipodi:ry="1.2374369"
sodipodi:rx="1.2374369"
sodipodi:cy="37.660275"
sodipodi:cx="47.729706"
id="path3898"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffb937;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="m 40.647591,37.533215 c -2.474874,-0.972272 -4.949748,-2.032932 -6.010408,0.08839 -1.06066,2.12132 -0.53033,4.065864 0.265165,5.656854 0.795495,1.59099 -0.08839,6.805903 -0.08839,6.805903"
id="path3942"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -0,0 +1,679 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2772"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Legend.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2774">
<linearGradient
id="linearGradient4119">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4121" />
<stop
style="stop-color:#c1c1c1;stop-opacity:1;"
offset="1"
id="stop4123" />
</linearGradient>
<linearGradient
id="linearGradient3812">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3814" />
<stop
id="stop3820"
offset="0.5"
style="stop-color:#000000;stop-opacity:0.8230769;" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3816" />
</linearGradient>
<linearGradient
id="linearGradient3909">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2210"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2202"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2194"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2780" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3915"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4004"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3818"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3832"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3844"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<linearGradient
id="linearGradient3877">
<stop
style="stop-color:#0039e5;stop-opacity:1;"
offset="0"
id="stop3879" />
<stop
style="stop-color:#8787ff;stop-opacity:1;"
offset="1"
id="stop3881" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
style="stop-color:#a3a3ff;stop-opacity:1;"
offset="0"
id="stop3866" />
<stop
style="stop-color:#000054;stop-opacity:1;"
offset="1"
id="stop3868" />
</linearGradient>
<linearGradient
id="linearGradient3887">
<stop
style="stop-color:#8c6900;stop-opacity:1;"
offset="0"
id="stop3889" />
<stop
style="stop-color:#ffcf2f;stop-opacity:1;"
offset="1"
id="stop3891" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4009"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
id="linearGradient3965">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3967" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3969" />
</linearGradient>
<linearGradient
id="linearGradient3117">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3119" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3121" />
</linearGradient>
<linearGradient
id="linearGradient3124">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3126" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3128" />
</linearGradient>
<linearGradient
id="linearGradient3131">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3133" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3135" />
</linearGradient>
<linearGradient
id="linearGradient3138">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3140" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3142" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3876-7"
id="radialGradient3090"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.6710402,1.8241313,-1.810185,-2.6506188,207.0925,-28.733191)"
cx="48.585522"
cy="16.830805"
fx="48.585522"
fy="16.830805"
r="24.104704" />
<linearGradient
id="linearGradient3876-7">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878-9" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880-2" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909-4"
id="linearGradient3092"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083031"
y2="31.923065" />
<linearGradient
id="linearGradient3909-4">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911-6" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913-9" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4119"
id="radialGradient4125"
cx="52.355858"
cy="45.259937"
fx="52.355858"
fy="45.259937"
r="16.690233"
gradientTransform="matrix(-4.1372873,2.7082745,-1.5153087,-2.3148574,339.22028,1.5423192)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4119"
id="radialGradient4165"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-4.1372873,2.7082745,-1.5153087,-2.3148574,339.22028,1.5423192)"
cx="52.355858"
cy="45.259937"
fx="52.355858"
fy="45.259937"
r="16.690233" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568543"
inkscape:cx="2.8245097"
inkscape:cy="31.616684"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1360"
inkscape:window-height="718"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2777">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3044"
transform="translate(-0.6692704,-0.508322)">
<g
transform="translate(2,2)"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
id="g3923">
<rect
y="4.8561425"
x="10.879802"
height="48.776691"
width="47.982609"
id="rect3925"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3927"
d="m 11.056579,4.8601601 0,54.5115049"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3929"
d="m 5.3997245,53.457681 53.4829855,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3931"
d="m 18.641906,53.457681 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3933"
d="m 26.636363,53.438394 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3935"
d="m 34.590909,53.392939 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3937"
d="m 42.59091,53.39294 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3939"
d="m 50.590909,53.39294 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3941"
d="m 11,45.409091 -3.5909091,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3943"
d="m 10.977273,37.318181 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3945"
d="m 11.022728,29.272727 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3947"
d="m 11.022727,21.272727 -3.5909088,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3949"
d="m 10.977273,13.272727 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<rect
y="4.8561425"
x="10.879802"
height="48.776691"
width="47.982609"
id="rect3098"
style="fill:url(#radialGradient3090);fill-opacity:1;stroke:none" />
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4143">
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4070">
<path
inkscape:connector-curvature="0"
id="path4001"
d="m 18.636364,53.363636 0,-48.5454543"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6"
d="m 26.554308,53.415576 0,-48.5454537"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-69"
d="m 34.520316,53.390013 0,-48.5454548"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6-9"
d="m 42.43826,53.441953 0,-48.5454538"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6-9-1"
d="m 50.561525,53.465574 0,-48.5454537"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4136">
<path
inkscape:connector-curvature="0"
id="path4077"
d="m 11.046875,45.268821 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1"
d="m 11.061899,37.283554 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-18"
d="m 11.033927,29.272205 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1-0"
d="m 11.048951,21.286938 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1-0-4"
d="m 11.070598,13.276138 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</g>
<g
id="g4007">
<path
inkscape:connector-curvature="0"
id="path3917"
d="M 13.112334,55.273361 27.831144,27.836355 37.262615,36.267518 59.26938,7.6873037"
style="fill:none;stroke:#828282;stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;stroke:url(#linearGradient3092);stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11.112334,53.273361 25.831144,25.836355 35.262615,34.267518 57.26938,5.6873037"
id="path3907"
inkscape:connector-curvature="0" />
</g>
<g
id="g3968">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.056579,4.8601601 0,54.5115049"
id="path3012"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.3997245,53.457681 53.4829855,0"
id="path3014"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 18.641906,53.457681 0,3.214121"
id="path3016"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 26.636363,53.438394 0,3.214121"
id="path3016-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 34.590909,53.392939 0,3.214121"
id="path3016-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 42.59091,53.39294 0,3.214121"
id="path3016-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 50.590909,53.39294 0,3.214121"
id="path3016-51"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11,45.409091 -3.5909091,0"
id="path3057"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,37.318181 -3.5909094,0"
id="path3057-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022728,29.272727 -3.5909094,0"
id="path3057-0"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022727,21.272727 -3.5909088,0"
id="path3057-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,13.272727 -3.5909094,0"
id="path3057-6"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4151"
transform="translate(-1.4142135,-0.53033008)">
<rect
style="fill:#828282;fill-opacity:1;fill-rule:nonzero;stroke:#828282;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect4127"
width="32.880466"
height="27.400387"
x="30.461048"
y="35.240856" />
<g
id="g4139">
<rect
style="fill:url(#radialGradient4165);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect4074"
width="32.880466"
height="27.400387"
x="28.461048"
y="33.240856" />
<g
id="g4129">
<rect
y="35.953129"
x="31.956305"
height="2.176846"
width="2.3661368"
id="rect4076"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.26769781;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4078"
d="m 37.653436,36.953166 19.798989,0"
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="53.952271"
x="32.008812"
height="2.176846"
width="2.3661368"
id="rect4076-4"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.26769781;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4078-9"
d="m 37.705945,54.952314 19.798989,0"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3, 3;stroke-dashoffset:0" />
<rect
y="47.895966"
x="32.058533"
height="2.176846"
width="2.3661368"
id="rect4076-1"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.26769781;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4078-2"
d="m 37.755665,48.896003 19.798988,0"
style="fill:none;stroke:#006911;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="41.953133"
x="31.970144"
height="2.176846"
width="2.3661368"
id="rect4076-8"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.26769781;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4078-3"
d="m 37.667276,42.953168 19.798989,0"
style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3, 3;stroke-dashoffset:0" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,702 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2772"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Labels.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2774">
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path4021"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="TriangleInL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleInL"
style="overflow:visible">
<path
id="path4012"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(-0.8)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path3903"
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(0,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path3897"
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(1,0)" />
</marker>
<linearGradient
id="linearGradient3890">
<stop
style="stop-color:#ffc657;stop-opacity:1;"
offset="0"
id="stop3892" />
<stop
style="stop-color:#bd7d00;stop-opacity:1;"
offset="1"
id="stop3894" />
</linearGradient>
<linearGradient
id="linearGradient3875">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3877" />
<stop
style="stop-color:#afafaf;stop-opacity:1;"
offset="1"
id="stop3882" />
</linearGradient>
<linearGradient
id="linearGradient4119">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4121" />
<stop
style="stop-color:#c1c1c1;stop-opacity:1;"
offset="1"
id="stop4123" />
</linearGradient>
<linearGradient
id="linearGradient3812">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3814" />
<stop
id="stop3820"
offset="0.5"
style="stop-color:#000000;stop-opacity:0.8230769;" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3816" />
</linearGradient>
<linearGradient
id="linearGradient3909">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2210"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2202"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2194"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2780" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3915"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4004"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3818"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3832"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3844"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<linearGradient
id="linearGradient3877">
<stop
style="stop-color:#0039e5;stop-opacity:1;"
offset="0"
id="stop3879" />
<stop
style="stop-color:#8787ff;stop-opacity:1;"
offset="1"
id="stop3881" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
style="stop-color:#a3a3ff;stop-opacity:1;"
offset="0"
id="stop3866" />
<stop
style="stop-color:#000054;stop-opacity:1;"
offset="1"
id="stop3868" />
</linearGradient>
<linearGradient
id="linearGradient3887">
<stop
style="stop-color:#8c6900;stop-opacity:1;"
offset="0"
id="stop3889" />
<stop
style="stop-color:#ffcf2f;stop-opacity:1;"
offset="1"
id="stop3891" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4009"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
id="linearGradient3965">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3967" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3969" />
</linearGradient>
<linearGradient
id="linearGradient3117">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3119" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3121" />
</linearGradient>
<linearGradient
id="linearGradient3124">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3126" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3128" />
</linearGradient>
<linearGradient
id="linearGradient3131">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3133" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3135" />
</linearGradient>
<linearGradient
id="linearGradient3138">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3140" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3142" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3876-7"
id="radialGradient3090"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.6710402,1.8241313,-1.810185,-2.6506188,207.0925,-28.733191)"
cx="48.585522"
cy="16.830805"
fx="48.585522"
fy="16.830805"
r="24.104704" />
<linearGradient
id="linearGradient3876-7">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878-9" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880-2" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909-4"
id="linearGradient3092"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083031"
y2="31.923065" />
<linearGradient
id="linearGradient3909-4">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911-6" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913-9" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4119"
id="radialGradient4125"
cx="52.355858"
cy="45.259937"
fx="52.355858"
fy="45.259937"
r="16.690233"
gradientTransform="matrix(-4.1372873,2.7082745,-1.5153087,-2.3148574,339.22028,1.5423192)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.313708"
inkscape:cx="26.694829"
inkscape:cy="22.261969"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1360"
inkscape:window-height="718"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2777">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3044"
transform="translate(-0.6692704,-0.508322)">
<g
transform="translate(2,2)"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
id="g3923">
<rect
y="4.8561425"
x="10.879802"
height="48.776691"
width="47.982609"
id="rect3925"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3927"
d="m 11.056579,4.8601601 0,54.5115049"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3929"
d="m 5.3997245,53.457681 53.4829855,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3931"
d="m 18.641906,53.457681 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3933"
d="m 26.636363,53.438394 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3935"
d="m 34.590909,53.392939 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3937"
d="m 42.59091,53.39294 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3939"
d="m 50.590909,53.39294 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3941"
d="m 11,45.409091 -3.5909091,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3943"
d="m 10.977273,37.318181 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3945"
d="m 11.022728,29.272727 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3947"
d="m 11.022727,21.272727 -3.5909088,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3949"
d="m 10.977273,13.272727 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<rect
y="4.8561425"
x="10.879802"
height="48.776691"
width="47.982609"
id="rect3098"
style="fill:url(#radialGradient3090);fill-opacity:1;stroke:none" />
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4143">
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4070">
<path
inkscape:connector-curvature="0"
id="path4001"
d="m 18.636364,53.363636 0,-48.5454543"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6"
d="m 26.554308,53.415576 0,-48.5454537"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-69"
d="m 34.520316,53.390013 0,-48.5454548"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6-9"
d="m 42.43826,53.441953 0,-48.5454538"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6-9-1"
d="m 50.561525,53.465574 0,-48.5454537"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4136">
<path
inkscape:connector-curvature="0"
id="path4077"
d="m 11.046875,45.268821 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1"
d="m 11.061899,37.283554 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-18"
d="m 11.033927,29.272205 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1-0"
d="m 11.048951,21.286938 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1-0-4"
d="m 11.070598,13.276138 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</g>
<g
id="g4007">
<path
inkscape:connector-curvature="0"
id="path3917"
d="M 13.112334,55.273361 27.831144,27.836355 37.262615,36.267518 59.26938,7.6873037"
style="fill:none;stroke:#828282;stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;stroke:url(#linearGradient3092);stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11.112334,53.273361 25.831144,25.836355 35.262615,34.267518 57.26938,5.6873037"
id="path3907"
inkscape:connector-curvature="0" />
</g>
<g
id="g3968">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.056579,4.8601601 0,54.5115049"
id="path3012"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.3997245,53.457681 53.4829855,0"
id="path3014"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 18.641906,53.457681 0,3.214121"
id="path3016"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 26.636363,53.438394 0,3.214121"
id="path3016-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 34.590909,53.392939 0,3.214121"
id="path3016-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 42.59091,53.39294 0,3.214121"
id="path3016-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 50.590909,53.39294 0,3.214121"
id="path3016-51"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11,45.409091 -3.5909091,0"
id="path3057"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,37.318181 -3.5909094,0"
id="path3057-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022728,29.272727 -3.5909094,0"
id="path3057-0"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022727,21.272727 -3.5909088,0"
id="path3057-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,13.272727 -3.5909094,0"
id="path3057-6"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4903"
transform="translate(1.0935922,4.0104076)">
<g
id="g4905"
transform="matrix(1.0931199,0,0,1.0931199,-4.3931575,-7.4228984)">
<path
inkscape:connector-curvature="0"
id="path4907"
d="m 46.875,38.25 0,17"
style="fill:none;stroke:#000000;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#TriangleInL);marker-end:url(#TriangleOutL)" />
<path
inkscape:connector-curvature="0"
id="path4909"
d="m 46.9375,38.8125 0,15.375"
style="fill:none;stroke:#000000;stroke-width:1.70000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,1.0931199,-1.0931199,0,97.950193,-7.5595384)"
id="g4911">
<path
style="fill:none;stroke:#000000;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#TriangleInL);marker-end:url(#TriangleOutL)"
d="m 46.875,38.25 0,17"
id="path4913"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.70000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 46.9375,38.8125 0,15.375"
id="path4915"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

701
src/Mod/Plot/Icons/Save.svg Executable file
View File

@ -0,0 +1,701 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2772"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Save.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2774">
<linearGradient
id="linearGradient3965">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3967" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3969" />
</linearGradient>
<linearGradient
id="linearGradient3887">
<stop
style="stop-color:#8c6900;stop-opacity:1;"
offset="0"
id="stop3889" />
<stop
style="stop-color:#ffcf2f;stop-opacity:1;"
offset="1"
id="stop3891" />
</linearGradient>
<linearGradient
id="linearGradient3877">
<stop
style="stop-color:#0039e5;stop-opacity:1;"
offset="0"
id="stop3879" />
<stop
style="stop-color:#8787ff;stop-opacity:1;"
offset="1"
id="stop3881" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
style="stop-color:#a3a3ff;stop-opacity:1;"
offset="0"
id="stop3866" />
<stop
style="stop-color:#000054;stop-opacity:1;"
offset="1"
id="stop3868" />
</linearGradient>
<linearGradient
id="linearGradient3909">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2210"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2202"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2194"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2780" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3915"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4004"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3876"
id="radialGradient3090"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.6710402,1.8241313,-1.810185,-2.6506188,207.0925,-28.733191)"
cx="48.585522"
cy="16.830805"
fx="48.585522"
fy="16.830805"
r="24.104704" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3092"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3864"
id="linearGradient3874"
x1="32.280331"
y1="60.087601"
x2="60.896446"
y2="28.798124"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3877"
id="linearGradient3883"
x1="32.280331"
y1="60.087601"
x2="60.896446"
y2="28.798124"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3887"
id="linearGradient3893"
x1="36.446327"
y1="59.271229"
x2="53.444622"
y2="44.863926"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.91110757,0,0,1,4.2891354,0.35355339)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient3975"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient3977"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient3979"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient3981"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient3983"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3877"
id="linearGradient3994"
gradientUnits="userSpaceOnUse"
x1="32.280331"
y1="60.087601"
x2="60.896446"
y2="28.798124" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3864"
id="linearGradient3996"
gradientUnits="userSpaceOnUse"
x1="32.280331"
y1="60.087601"
x2="60.896446"
y2="28.798124" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3887"
id="linearGradient3998"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.91110757,0,0,1,4.2891354,0.35355339)"
x1="36.446327"
y1="59.271229"
x2="53.444622"
y2="44.863926" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4000"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4002"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4005"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4007"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4009"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8284271"
inkscape:cx="-56.626187"
inkscape:cy="16.500482"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1360"
inkscape:window-height="718"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2777">
<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"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3044"
transform="translate(-4.4748737,-3.0052038)">
<g
transform="translate(2,2)"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
id="g3923">
<rect
y="4.8561425"
x="10.879802"
height="48.776691"
width="47.982609"
id="rect3925"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3927"
d="m 11.056579,4.8601601 0,54.5115049"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3929"
d="m 5.3997245,53.457681 53.4829855,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3931"
d="m 18.641906,53.457681 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3933"
d="m 26.636363,53.438394 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3935"
d="m 34.590909,53.392939 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3937"
d="m 42.59091,53.39294 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3939"
d="m 50.590909,53.39294 0,3.214121"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3941"
d="m 11,45.409091 -3.5909091,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3943"
d="m 10.977273,37.318181 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3945"
d="m 11.022728,29.272727 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3947"
d="m 11.022727,21.272727 -3.5909088,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3949"
d="m 10.977273,13.272727 -3.5909094,0"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<rect
y="4.8561425"
x="10.879802"
height="48.776691"
width="47.982609"
id="rect3098"
style="fill:url(#radialGradient3090);fill-opacity:1;stroke:none" />
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4143">
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4070">
<path
inkscape:connector-curvature="0"
id="path4001"
d="m 18.636364,53.363636 0,-48.5454543"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6"
d="m 26.554308,53.415576 0,-48.5454537"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-69"
d="m 34.520316,53.390013 0,-48.5454548"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6-9"
d="m 42.43826,53.441953 0,-48.5454538"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4001-6-9-1"
d="m 50.561525,53.465574 0,-48.5454537"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
style="stroke:#b4b4b4;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="g4136">
<path
inkscape:connector-curvature="0"
id="path4077"
d="m 11.046875,45.268821 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1"
d="m 11.061899,37.283554 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-18"
d="m 11.033927,29.272205 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1-0"
d="m 11.048951,21.286938 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path4077-1-0-4"
d="m 11.070598,13.276138 47.818182,0"
style="fill:none;stroke:#b4b4b4;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</g>
<g
id="g4007">
<path
inkscape:connector-curvature="0"
id="path3917"
d="M 13.112334,55.273361 27.831144,27.836355 37.262615,36.267518 59.26938,7.6873037"
style="fill:none;stroke:#828282;stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;stroke:url(#linearGradient3092);stroke-width:1.11150944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11.112334,53.273361 25.831144,25.836355 35.262615,34.267518 57.26938,5.6873037"
id="path3907"
inkscape:connector-curvature="0" />
</g>
<g
id="g3968">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.056579,4.8601601 0,54.5115049"
id="path3012"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.3997245,53.457681 53.4829855,0"
id="path3014"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 18.641906,53.457681 0,3.214121"
id="path3016"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 26.636363,53.438394 0,3.214121"
id="path3016-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 34.590909,53.392939 0,3.214121"
id="path3016-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 42.59091,53.39294 0,3.214121"
id="path3016-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 50.590909,53.39294 0,3.214121"
id="path3016-51"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11,45.409091 -3.5909091,0"
id="path3057"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,37.318181 -3.5909094,0"
id="path3057-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022728,29.272727 -3.5909094,0"
id="path3057-0"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.022727,21.272727 -3.5909088,0"
id="path3057-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 10.977273,13.272727 -3.5909094,0"
id="path3057-6"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4043">
<g
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
id="g4011"
transform="translate(2,0)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4013"
d="m 32.25,60.213388 0,-23.175475 7.953966,-8.225413 20.546033,0 0,31.4375 z"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
y="44.731342"
x="36.340588"
height="15.821514"
width="20.938135"
id="rect4015"
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-width:0.38180779999999997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<g
style="fill:#828282;fill-opacity:1;stroke:#828282;stroke-opacity:1"
transform="matrix(1,0,0,1.1734904,3.078125,-4.8926108)"
id="g4017">
<rect
style="fill:#828282;fill-opacity:1;fill-rule:nonzero;stroke:#828282;stroke-opacity:1"
id="rect4019"
width="8.485281"
height="10.69499"
x="41.653008"
y="28.291107" />
<rect
style="fill:#828282;fill-opacity:1;fill-rule:nonzero;stroke:#828282;stroke-opacity:1"
id="rect4021"
width="3.9774761"
height="10.69499"
x="52.855694"
y="28.291107" />
<rect
style="fill:#828282;fill-opacity:1;fill-rule:nonzero;stroke:#828282;stroke-opacity:1"
id="rect4023"
width="5.1113596"
height="2.519068"
x="49.806831"
y="28.291109" />
<rect
style="fill:#828282;fill-opacity:1;fill-rule:nonzero;stroke:#828282;stroke-opacity:1"
id="rect4025"
width="5.1113596"
height="2.519068"
x="49.737289"
y="36.470932" />
</g>
</g>
<g
transform="translate(0,-2)"
id="g3985">
<path
style="fill:url(#linearGradient3994);fill-opacity:1;stroke:url(#linearGradient3996);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 32.25,60.213388 0,-23.175475 7.953966,-8.225413 20.546033,0 0,31.4375 z"
id="path3094"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<rect
style="fill:url(#linearGradient3998);fill-opacity:1;stroke:#ab5300;stroke-width:0.3818078;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3885"
width="20.938135"
height="15.821514"
x="36.340588"
y="44.731342" />
<g
id="g3951"
transform="matrix(1,0,0,1.1734904,3.078125,-4.8926108)"
style="fill:url(#linearGradient4009);fill-opacity:1;stroke:none">
<rect
y="28.291107"
x="41.653008"
height="10.69499"
width="8.485281"
id="rect3895"
style="fill:url(#linearGradient4000);fill-opacity:1;fill-rule:nonzero;stroke:none" />
<rect
y="28.291107"
x="52.855694"
height="10.69499"
width="3.9774761"
id="rect3895-0"
style="fill:url(#linearGradient4002);fill-opacity:1;fill-rule:nonzero;stroke:none" />
<rect
y="28.291109"
x="49.806831"
height="2.519068"
width="5.1113596"
id="rect3895-0-7"
style="fill:url(#linearGradient4005);fill-opacity:1;fill-rule:nonzero;stroke:none" />
<rect
y="36.470932"
x="49.737289"
height="2.519068"
width="5.1113596"
id="rect3895-0-7-7"
style="fill:url(#linearGradient4007);fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,457 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2772"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Series.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2774">
<marker
inkscape:stockid="EmptyTriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="EmptyTriangleOutL"
style="overflow:visible">
<path
id="path4215"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.8) translate(-6,0)" />
</marker>
<linearGradient
id="linearGradient5055"
osb:paint="solid">
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="0"
id="stop5057" />
</linearGradient>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mend"
style="overflow:visible;">
<path
id="path4064"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path4076"
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path4058"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<linearGradient
id="linearGradient4119">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4121" />
<stop
style="stop-color:#c1c1c1;stop-opacity:1;"
offset="1"
id="stop4123" />
</linearGradient>
<linearGradient
id="linearGradient3812">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3814" />
<stop
id="stop3820"
offset="0.5"
style="stop-color:#000000;stop-opacity:0.8230769;" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3816" />
</linearGradient>
<linearGradient
id="linearGradient3909">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913" />
</linearGradient>
<linearGradient
id="linearGradient3876">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2210"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2202"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2194"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<linearGradient
inkscape:collect="always"
id="linearGradient3144">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3146" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3148" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3144"
id="radialGradient2192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
cx="225.26402"
cy="672.79736"
fx="225.26402"
fy="672.79736"
r="34.345188" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2780" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient3915"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3909"
id="linearGradient4004"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1115095,0,0,1.1115095,-1.1771587,-6.0024571)"
x1="10.556579"
y1="31.923065"
x2="53.083032"
y2="31.923065" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3818"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3832"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3812"
id="radialGradient3844"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.016424,0,-0.47862716)"
cx="34.961354"
cy="29.141878"
fx="34.961354"
fy="29.141878"
r="24.127427" />
<linearGradient
id="linearGradient3877">
<stop
style="stop-color:#0039e5;stop-opacity:1;"
offset="0"
id="stop3879" />
<stop
style="stop-color:#8787ff;stop-opacity:1;"
offset="1"
id="stop3881" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
style="stop-color:#a3a3ff;stop-opacity:1;"
offset="0"
id="stop3866" />
<stop
style="stop-color:#000054;stop-opacity:1;"
offset="1"
id="stop3868" />
</linearGradient>
<linearGradient
id="linearGradient3887">
<stop
style="stop-color:#8c6900;stop-opacity:1;"
offset="0"
id="stop3889" />
<stop
style="stop-color:#ffcf2f;stop-opacity:1;"
offset="1"
id="stop3891" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3965"
id="linearGradient4009"
gradientUnits="userSpaceOnUse"
x1="41.653008"
y1="33.640553"
x2="56.833172"
y2="33.640553" />
<linearGradient
id="linearGradient3965">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3967" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3969" />
</linearGradient>
<linearGradient
id="linearGradient3117">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3119" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3121" />
</linearGradient>
<linearGradient
id="linearGradient3124">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3126" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3128" />
</linearGradient>
<linearGradient
id="linearGradient3131">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3133" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3135" />
</linearGradient>
<linearGradient
id="linearGradient3138">
<stop
style="stop-color:#575757;stop-opacity:1;"
offset="0"
id="stop3140" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="1"
id="stop3142" />
</linearGradient>
<linearGradient
id="linearGradient3876-7">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3878-9" />
<stop
style="stop-color:#e2e2e2;stop-opacity:1"
offset="1"
id="stop3880-2" />
</linearGradient>
<linearGradient
id="linearGradient3909-4">
<stop
style="stop-color:#6e0000;stop-opacity:1;"
offset="0"
id="stop3911-6" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="1"
id="stop3913-9" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4119"
id="radialGradient4125"
cx="52.355858"
cy="45.259937"
fx="52.355858"
fy="45.259937"
r="16.690233"
gradientTransform="matrix(-4.1372873,2.7082745,-1.5153087,-2.3148574,339.22028,1.5423192)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568543"
inkscape:cx="6.5875919"
inkscape:cy="31.192036"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1360"
inkscape:window-height="718"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2777">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3892"
transform="translate(2,-2)">
<g
style="stroke:#828282;stroke-opacity:1"
transform="translate(2,2)"
id="g3884">
<path
inkscape:connector-curvature="0"
id="path3886"
d="M 4.065864,43.847457 C 6.1871843,31.473088 6.1871843,15.209633 15.556349,13.265089 24.925514,11.320545 18.207999,27.584001 28.991378,25.462681 39.774756,23.34136 51.795571,5.133361 51.795571,5.133361"
style="fill:none;stroke:#828282;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0" />
<path
inkscape:connector-curvature="0"
id="path3888"
d="M 4.4194173,50.034641 C 10.783378,41.54936 12.551145,31.119535 21.743533,33.417632 c 9.192388,2.298097 21.213204,6.363961 30.052038,-4.242641"
style="fill:none;stroke:#828282;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3890"
d="m 4.9497474,57.989592 10.9601546,1.590991 9.369165,-9.722718 14.849242,4.065863 14.142136,-3.71231"
style="fill:none;stroke:#828282;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0" />
</g>
<g
id="g3879">
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0"
d="M 4.065864,43.847457 C 6.1871843,31.473088 6.1871843,15.209633 15.556349,13.265089 24.925514,11.320545 18.207999,27.584001 28.991378,25.462681 39.774756,23.34136 51.795571,5.133361 51.795571,5.133361"
id="path3076"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 4.4194173,50.034641 C 10.783378,41.54936 12.551145,31.119535 21.743533,33.417632 c 9.192388,2.298097 21.213204,6.363961 30.052038,-4.242641"
id="path3870"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0"
d="m 4.9497474,57.989592 10.9601546,1.590991 9.369165,-9.722718 14.849242,4.065863 14.142136,-3.71231"
id="path3872"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

50
src/Mod/Plot/InitGui.py Normal file
View File

@ -0,0 +1,50 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
class PlotWorkbench ( Workbench ):
""" @brief Workbench of Plot module. Here toolbars & icons are append. """
from plotUtils import Paths, Translator
import PlotGui
Icon = Paths.iconsPath() + "/Icon.svg"
MenuText = str(Translator.translate("Plot"))
ToolTip = str(Translator.translate("Plot"))
def Initialize(self):
from plotUtils import Translator
# ToolBar
list = ["Plot_SaveFig", "Plot_Axes", "Plot_Series", "Plot_Grid", "Plot_Legend", "Plot_Labels", "Plot_Positions"]
self.appendToolbar("Plot",list)
# Menu
list = ["Plot_SaveFig", "Plot_Axes", "Plot_Series", "Plot_Grid", "Plot_Legend", "Plot_Labels", "Plot_Positions"]
self.appendMenu("Plot",list)
try:
import matplotlib
Gui.addWorkbench(PlotWorkbench())
except ImportError:
from plotUtils import Translator
msg = Translator.translate("matplotlib not found, Plot module will be disabled.\n")
FreeCAD.Console.PrintMessage(msg)

45
src/Mod/Plot/Makefile.am Normal file
View File

@ -0,0 +1,45 @@
# Change data dir from default ($(prefix)/share) to actual dir
datadir = $(prefix)/Mod/Plot
data_DATA = \
Plot.py \
InitGui.py \
PlotGui.py
nobase_data_DATA = \
Icons/Axes.svg \
Icons/Grid.svg \
Icons/Icon.svg \
Icons/Labels.svg \
Icons/Legend.svg \
Icons/Positions.svg \
Icons/Save.svg \
Icons/Series.svg \
plotAxes/__init__.py \
plotAxes/TaskPanel.py \
plotAxes/TaskPanel.ui \
plotLabels/__init__.py \
plotLabels/TaskPanel.py \
plotLabels/TaskPanel.ui \
plotPositions/__init__.py \
plotPositions/TaskPanel.py \
plotPositions/TaskPanel.ui \
plotSave/__init__.py \
plotSave/TaskPanel.py \
plotSave/TaskPanel.ui \
plotSeries/__init__.py \
plotSeries/TaskPanel.py \
plotSeries/TaskPanel.ui \
plotUtils/__init__.py \
plotUtils/Paths.py \
plotUtils/Translator.py
CLEANFILES = $(BUILT_SOURCES)
EXTRA_DIST = \
$(data_DATA) \
$(nobase_data_DATA) \
CMakeLists.txt \
README \
plot.dox

314
src/Mod/Plot/Plot.py Normal file
View File

@ -0,0 +1,314 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD
import FreeCAD
# Plot module
from plotUtils import Paths, Translator
# PyQt4
from PyQt4 import QtCore, QtGui
# Matplot lib
try:
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
from matplotlib.figure import Figure
except ImportError:
msg = Translator.translate("matplotlib not installed, so Plot module is disabled.\n")
FreeCAD.Console.PrintError(msg)
raise ImportError("matplotlib not installed")
def getMainWindow():
""" getMainWindow(): Gets FreeCAD main window. """
toplevel = QtGui.qApp.topLevelWidgets()
for i in toplevel:
if i.metaObject().className() == "Gui::MainWindow":
return i
return None
def getMdiArea():
""" getMdiArea(): Gets FreeCAD MdiArea. """
mw = getMainWindow()
if not mw:
return None
return mw.findChild(QtGui.QMdiArea)
def getPlot():
""" getPlot(): Gets selected Plot document if exist. """
# Get active tab
mdi = getMdiArea()
if not mdi:
return None
sub = mdi.activeSubWindow()
if not sub:
return None
# Explore childrens looking for Plot class
for i in sub.children():
if i.metaObject().className() == "Plot":
return i
return None
def figure(winTitle="plot"):
""" figure(winTitle="plot"): Create a new plot subwindow.\n winTitle = Tab title. """
mdi = getMdiArea()
if not mdi:
return None
win = Plot(winTitle)
sub=mdi.addSubWindow(win)
sub.show()
return win
def plot(x,y,name=None):
""" plot(x,y,name=None): Plots a new serie (as line plot)\n x = X values\n y = Y values\n name = Serie name (for legend). """
# Get active plot, or create another one if don't exist
plt = getPlot()
if not plt:
plt = figure()
# Call to plot
return plt.plot(x,y,name)
def series():
""" lines(): Get all lines from selected plot. """
plt = getPlot()
if not plt:
return []
return plt.series
def removeSerie(index):
""" removeSerie(index): Removes a serie from plot.\n index = Index of serie to remove. """
# Get active series
plt = getPlot()
if not plt:
return
plots = plt.series
if not plots:
return
# Remove line from plot
axes = plots[index].axes
axes.lines.pop(plots[index].lid)
# Remove serie from list
del plt.series[index]
# Update GUI
plt.update()
def legend(status=True, pos=None, fontsize=None):
""" legend(status=True): Show/Hide legend.\n status = True if legend must be shown, False otherwise.\n pos = Legend position.\n fontsize = Font size """
plt = getPlot()
if not plt:
return
plt.legend = status
if pos:
plt.legPos = pos
if fontsize:
plt.legSiz = fontsize
# Hide all legends
for axes in plt.axesList:
axes.legend_ = None
# Legend must be activated on last axes
axes = plt.axesList[-1]
if status:
# Setup legend handles and names
lines = series()
handles = []
names = []
for l in lines:
if l.name != None:
handles.append(l.line)
names.append(l.name)
# Show the legend
l = axes.legend(handles, names, bbox_to_anchor=plt.legPos)
for t in l.get_texts():
t.set_fontsize(plt.legSiz)
plt.update()
def grid(status=True):
""" grid(status=True): Show/Hide grid.\n status = True if grid must be shown, False otherwise. """
plt = getPlot()
if not plt:
return
plt.grid = status
axes = plt.axes
axes.grid(status)
plt.update()
def title(string):
""" title(string): Setup plot title.\n string = Title to set. """
plt = getPlot()
if not plt:
return
axes = plt.axes
axes.set_title(string)
plt.update()
def xlabel(string):
""" xlabel(string): Setup x label.\n string = Title to set. """
plt = getPlot()
if not plt:
return
axes = plt.axes
axes.set_xlabel(string)
plt.update()
def ylabel(string):
""" ylabel(string): Setup y label.\n string = Title to set. """
plt = getPlot()
if not plt:
return
axes = plt.axes
axes.set_ylabel(string)
plt.update()
def axesList():
""" axesList(): Gets plot axes list. """
plt = getPlot()
if not plt:
return []
return plt.axesList
def axes():
""" axes(): Gets active plot axes. """
plt = getPlot()
if not plt:
return None
return plt.axes
def addNewAxes(rect=None, frameon=True, patchcolor='none'):
""" addNewAxes(pos=None, frameon=True): Add new axes to plot, setting it as active one.\n rect = Axes area, None to copy last axes data.\n frameon = True to show frame, False otherwise.\n patchcolor = Patch color, 'none' for transparent plot. """
plt = getPlot()
if not plt:
return None
fig = plt.fig
if rect == None:
rect = plt.axes.get_position()
ax = fig.add_axes(rect, frameon=frameon)
ax.xaxis.set_ticks_position('bottom')
ax.spines['top'].set_color('none')
ax.yaxis.set_ticks_position('left')
ax.spines['right'].set_color('none')
ax.patch.set_facecolor(patchcolor)
plt.axesList.append(ax)
plt.setActiveAxes(-1)
plt.update()
return ax
def save(path, figsize=None, dpi=None):
""" save(path): Save plot.\n path = Destination file path.\n figsize = w,h figure size tuple in inches.\n dpi = Dots per inch."""
plt = getPlot()
if not plt:
return
# Backup figure options
fig = plt.fig
sizeBack = fig.get_size_inches()
dpiBack = fig.get_dpi()
# Save figure with new options
if figsize:
fig.set_size_inches(figsize[0], figsize[1])
if dpi:
fig.set_dpi(dpi)
plt.canvas.print_figure(path)
# Restore figure options
fig.set_size_inches(sizeBack[0], sizeBack[1])
fig.set_dpi(dpiBack)
plt.update()
class Line():
def __init__(self, axes, x, y, name):
""" __init__(axes, x, y, name): Construct new plot serie.\n axes = Active axes\n x = X values\n y = Y values\n name = Serie name (for legend). """
self.axes = axes
self.x = x
self.y = y
self.name = name
self.lid = len(axes.lines)
self.line, = axes.plot(x,y)
def setp(self, prop, value):
""" setp(prop, value): Change line property value.\n prop = Property name.\n value = New property value. """
plt.setp(self.line, prop, value)
def getp(self, prop):
""" getp(prop): Get property value.\n prop = Property name."""
return plt.getp(self.line, prop)
class Plot(QtGui.QWidget):
def __init__(self, winTitle="plot", parent = None, flags = QtCore.Qt.WindowFlags(0)):
""" __init__(winTitle="plot", parent = None, flags = Qt.WindowFlags(0)): Construct a new plot widget.\n winTitle = Tab title.\n parent = Widget parent.\n flags = QWidget flags"""
QtGui.QWidget.__init__(self, parent, flags)
self.setWindowTitle(winTitle)
# Create matplotlib canvas
self.fig = Figure()
self.canvas = FigureCanvas(self.fig)
self.canvas.setParent(self)
# Get axes
self.axes = self.fig.add_subplot(111)
self.axesList = [self.axes]
self.axes.xaxis.set_ticks_position('bottom')
self.axes.spines['top'].set_color('none')
self.axes.yaxis.set_ticks_position('left')
self.axes.spines['right'].set_color('none')
# Setup layout
vbox = QtGui.QVBoxLayout()
vbox.addWidget(self.canvas)
self.setLayout(vbox)
# Active series
self.series = []
# Indicators
self.skip = False
self.legend = False
self.legPos = (1.0, 1.0)
self.legSiz = 14
self.grid = False
def plot(self, x, y, name=None):
""" plot(self, x, y, name=None): Plot a new line and return it.\n x = X values\n y = Y values\n name = Serie name (for legend). """
l = Line(self.axes, x, y, name)
self.series.append(l)
# Update window
self.update()
return l
def update(self):
""" update(): Updates plot. """
if not self.skip:
self.skip = True
if self.legend:
legend(self.legend)
self.canvas.draw()
self.skip = False
def isGrid(self):
""" isGrid(): Return True if Grid is active, False otherwise. """
return bool(self.grid)
def isLegend(self):
""" isLegend(): Return True if Legend is active, False otherwise. """
return bool(self.legend)
def setActiveAxes(self, index):
""" setActiveAxes(index): Change current active axes.\n index = Index of the new active axes. """
self.axes = self.axesList[index]
self.fig.sca(self.axes)

132
src/Mod/Plot/PlotGui.py Normal file
View File

@ -0,0 +1,132 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
from PyQt4 import QtCore, QtGui
import FreeCAD, FreeCADGui, os
class Save:
def Activated(self):
import plotSave
plotSave.load()
def GetResources(self):
from plotUtils import Paths, Translator
IconPath = Paths.iconsPath() + "/Save.svg"
MenuText = str(Translator.translate('Save plot'))
ToolTip = str(Translator.translate('Save plot as image file.'))
return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
class Axes:
def Activated(self):
import plotAxes
plotAxes.load()
def GetResources(self):
from plotUtils import Paths, Translator
IconPath = Paths.iconsPath() + "/Axes.svg"
MenuText = str(Translator.translate('Configure axes'))
ToolTip = str(Translator.translate('Configure axes parameters.'))
return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
class Series:
def Activated(self):
import plotSeries
plotSeries.load()
def GetResources(self):
from plotUtils import Paths, Translator
IconPath = Paths.iconsPath() + "/Series.svg"
MenuText = str(Translator.translate('Configure series'))
ToolTip = str(Translator.translate('Configure series drawing style and label.'))
return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
class Grid:
def Activated(self):
import Plot
from plotUtils import Translator
plt = Plot.getPlot()
if not plt:
msg = Translator.translate("Grid must be activated on top of a plot document.")
FreeCAD.Console.PrintError(msg+"\n")
return
flag = plt.isGrid()
Plot.grid(not flag)
def GetResources(self):
from plotUtils import Paths, Translator
IconPath = Paths.iconsPath() + "/Grid.svg"
MenuText = str(Translator.translate('Show/Hide grid'))
ToolTip = str(Translator.translate('Show/Hide grid on selected plot'))
return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
class Legend:
def Activated(self):
import Plot
from plotUtils import Translator
plt = Plot.getPlot()
if not plt:
msg = Translator.translate("Legend must be activated on top of a plot document.")
FreeCAD.Console.PrintError(msg+"\n")
return
flag = plt.isLegend()
Plot.legend(not flag)
def GetResources(self):
from plotUtils import Paths, Translator
IconPath = Paths.iconsPath() + "/Legend.svg"
MenuText = str(Translator.translate('Show/Hide legend'))
ToolTip = str(Translator.translate('Show/Hide legend on selected plot'))
return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
class Labels:
def Activated(self):
import plotLabels
plotLabels.load()
def GetResources(self):
from plotUtils import Paths, Translator
IconPath = Paths.iconsPath() + "/Labels.svg"
MenuText = str(Translator.translate('Set labels'))
ToolTip = str(Translator.translate('Set title and axes labels'))
return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
class Positions:
def Activated(self):
import plotPositions
plotPositions.load()
def GetResources(self):
from plotUtils import Paths, Translator
IconPath = Paths.iconsPath() + "/Positions.svg"
MenuText = str(Translator.translate('Set positions and sizes'))
ToolTip = str(Translator.translate('Set labels and legend positions and sizes.'))
return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
FreeCADGui.addCommand('Plot_SaveFig', Save())
FreeCADGui.addCommand('Plot_Axes', Axes())
FreeCADGui.addCommand('Plot_Series', Series())
FreeCADGui.addCommand('Plot_Grid', Grid())
FreeCADGui.addCommand('Plot_Legend', Legend())
FreeCADGui.addCommand('Plot_Labels', Labels())
FreeCADGui.addCommand('Plot_Positions', Positions())

10
src/Mod/Plot/README Normal file
View File

@ -0,0 +1,10 @@
* Authors
---------
Jose Luis Cercós Pita <jlcercos@gmail.com>
* Introduction
--------------
Plot is a module that provide an interface to perform plots.

3
src/Mod/Plot/plot.dox Normal file
View File

@ -0,0 +1,3 @@
/** \defgroup PLOT Plot
* \ingroup WORKBENCHES */

View File

@ -0,0 +1,425 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD as App
import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
import Plot
from plotUtils import Paths, Translator
class TaskPanel:
def __init__(self):
self.ui = Paths.modulePath() + "/plotAxes/TaskPanel.ui"
self.skip = False
def accept(self):
return True
def reject(self):
return True
def clicked(self, index):
pass
def open(self):
pass
def needsFullSpace(self):
return True
def isAllowedAlterSelection(self):
return False
def isAllowedAlterView(self):
return True
def isAllowedAlterDocument(self):
return False
def helpRequested(self):
pass
def setupUi(self):
mw = self.getMainWindow()
form = mw.findChild(QtGui.QWidget, "TaskPanel")
form.axId = form.findChild(QtGui.QSpinBox, "axesIndex")
form.new = form.findChild(QtGui.QPushButton, "newAxesButton")
form.remove = form.findChild(QtGui.QPushButton, "delAxesButton")
form.all = form.findChild(QtGui.QCheckBox, "allAxes")
form.xMin = form.findChild(QtGui.QSlider, "posXMin")
form.xMax = form.findChild(QtGui.QSlider, "posXMax")
form.yMin = form.findChild(QtGui.QSlider, "posYMin")
form.yMax = form.findChild(QtGui.QSlider, "posYMax")
form.xAlign = form.findChild(QtGui.QComboBox, "xAlign")
form.yAlign = form.findChild(QtGui.QComboBox, "yAlign")
form.xOffset = form.findChild(QtGui.QSpinBox, "xOffset")
form.yOffset = form.findChild(QtGui.QSpinBox, "yOffset")
form.xAuto = form.findChild(QtGui.QCheckBox, "xAuto")
form.yAuto = form.findChild(QtGui.QCheckBox, "yAuto")
form.xSMin = form.findChild(QtGui.QLineEdit, "xMin")
form.xSMax = form.findChild(QtGui.QLineEdit, "xMax")
form.ySMin = form.findChild(QtGui.QLineEdit, "yMin")
form.ySMax = form.findChild(QtGui.QLineEdit, "yMax")
self.form = form
self.retranslateUi()
# Look for active axes if can
axId = 0
plt = Plot.getPlot()
if plt:
while plt.axes != plt.axesList[axId]:
axId = axId + 1
form.axId.setValue(axId)
self.updateUI()
QtCore.QObject.connect(form.axId, QtCore.SIGNAL('valueChanged(int)'),self.onAxesId)
QtCore.QObject.connect(form.new, QtCore.SIGNAL("pressed()"),self.onNew)
QtCore.QObject.connect(form.remove, QtCore.SIGNAL("pressed()"),self.onRemove)
QtCore.QObject.connect(form.xMin, QtCore.SIGNAL("valueChanged(int)"),self.onDims)
QtCore.QObject.connect(form.xMax, QtCore.SIGNAL("valueChanged(int)"),self.onDims)
QtCore.QObject.connect(form.yMin, QtCore.SIGNAL("valueChanged(int)"),self.onDims)
QtCore.QObject.connect(form.yMax, QtCore.SIGNAL("valueChanged(int)"),self.onDims)
QtCore.QObject.connect(form.xAlign, QtCore.SIGNAL("currentIndexChanged(int)"),self.onAlign)
QtCore.QObject.connect(form.yAlign, QtCore.SIGNAL("currentIndexChanged(int)"),self.onAlign)
QtCore.QObject.connect(form.xOffset,QtCore.SIGNAL("valueChanged(int)"),self.onOffset)
QtCore.QObject.connect(form.yOffset,QtCore.SIGNAL("valueChanged(int)"),self.onOffset)
QtCore.QObject.connect(form.xAuto, QtCore.SIGNAL("stateChanged(int)"),self.onScales)
QtCore.QObject.connect(form.yAuto, QtCore.SIGNAL("stateChanged(int)"),self.onScales)
QtCore.QObject.connect(form.xSMin, QtCore.SIGNAL("editingFinished()"),self.onScales)
QtCore.QObject.connect(form.xSMax, QtCore.SIGNAL("editingFinished()"),self.onScales)
QtCore.QObject.connect(form.ySMin, QtCore.SIGNAL("editingFinished()"),self.onScales)
QtCore.QObject.connect(form.ySMax, QtCore.SIGNAL("editingFinished()"),self.onScales)
QtCore.QObject.connect(Plot.getMdiArea(),QtCore.SIGNAL("subWindowActivated(QMdiSubWindow*)"),self.onMdiArea)
return False
def getMainWindow(self):
"returns the main window"
# using QtGui.qApp.activeWindow() isn't very reliable because if another
# widget than the mainwindow is active (e.g. a dialog) the wrong widget is
# returned
toplevel = QtGui.qApp.topLevelWidgets()
for i in toplevel:
if i.metaObject().className() == "Gui::MainWindow":
return i
raise Exception("No main window found")
def retranslateUi(self):
""" Set user interface locale strings.
"""
self.form.setWindowTitle(Translator.translate("Configure axes"))
self.form.findChild(QtGui.QLabel, "axesLabel").setText(Translator.translate("Active axes"))
self.form.all.setText(Translator.translate("Apply to all axes"))
self.form.findChild(QtGui.QLabel, "dimLabel").setText(Translator.translate("Dimensions"))
self.form.findChild(QtGui.QLabel, "xPosLabel").setText(Translator.translate("X axis position"))
self.form.findChild(QtGui.QLabel, "yPosLabel").setText(Translator.translate("Y axis position"))
self.form.findChild(QtGui.QLabel, "scalesLabel").setText(Translator.translate("Scales"))
self.form.xAuto.setText(Translator.translate("X auto"))
self.form.yAuto.setText(Translator.translate("Y auto"))
self.form.findChild(QtGui.QCheckBox, "allAxes").setText(Translator.translate("Apply to all axes"))
self.form.findChild(QtGui.QLabel, "dimLabel").setText(Translator.translate("Dimensions"))
self.form.findChild(QtGui.QLabel, "xPosLabel").setText(Translator.translate("X axis position"))
self.form.findChild(QtGui.QLabel, "yPosLabel").setText(Translator.translate("Y axis position"))
def onAxesId(self, value):
""" Executed when axes index is modified. """
if not self.skip:
self.skip = True
# UI control in some special plot cases
plt = Plot.getPlot()
if not plt:
self.updateUI()
self.skip = False
return
# UI control in most cases
self.form.axId.setMaximum(len(plt.axesList))
if self.form.axId.value() >= len(plt.axesList):
self.form.axId.setValue(len(plt.axesList)-1)
# Send new control to Plot instance
plt.setActiveAxes(self.form.axId.value())
self.updateUI()
self.skip = False
def onNew(self):
""" Executed when new axes must be created. """
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
Plot.addNewAxes()
self.form.axId.setValue(len(plt.axesList)-1)
plt.update()
def onRemove(self):
""" Executed when axes must be deleted. """
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
# Don't remove first axes
if not self.form.axId.value():
msg = Translator.translate("Axes 0 can't be deleted")
App.Console.PrintError(msg+"\n")
return
# Remove axes
ax = plt.axes
ax.set_axis_off()
plt.axesList.pop(self.form.axId.value())
# Ensure that active axes is correct
index = min(self.form.axId.value(), len(plt.axesList)-1)
self.form.axId.setValue(index)
plt.update()
def onDims(self, value):
""" Executed when axes dims have been modified. """
# Get apply environment
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
axesList = [plt.axes]
if self.form.all.isChecked():
axesList = plt.axesList
# Set new dimensions
xmin = self.form.xMin.value() / 100.0
xmax = self.form.xMax.value() / 100.0
ymin = self.form.yMin.value() / 100.0
ymax = self.form.yMax.value() / 100.0
for axes in axesList:
axes.set_position([xmin, ymin, xmax-xmin, ymax-ymin])
plt.update()
def onAlign(self, value):
""" Executed when axes align have been modified. """
# Get apply environment
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
axesList = [plt.axes]
if self.form.all.isChecked():
axesList = plt.axesList
# Set new alignement
for axes in axesList:
if self.form.xAlign.currentIndex() == 0:
axes.xaxis.tick_bottom()
axes.spines['bottom'].set_color((0.0,0.0,0.0))
axes.spines['top'].set_color('none')
axes.xaxis.set_ticks_position('bottom')
axes.xaxis.set_label_position('bottom')
else:
axes.xaxis.tick_top()
axes.spines['top'].set_color((0.0,0.0,0.0))
axes.spines['bottom'].set_color('none')
axes.xaxis.set_ticks_position('top')
axes.xaxis.set_label_position('top')
if self.form.yAlign.currentIndex() == 0:
axes.yaxis.tick_left()
axes.spines['left'].set_color((0.0,0.0,0.0))
axes.spines['right'].set_color('none')
axes.yaxis.set_ticks_position('left')
axes.yaxis.set_label_position('left')
else:
axes.yaxis.tick_right()
axes.spines['right'].set_color((0.0,0.0,0.0))
axes.spines['left'].set_color('none')
axes.yaxis.set_ticks_position('right')
axes.yaxis.set_label_position('right')
plt.update()
def onOffset(self, value):
""" Executed when axes offsets have been modified. """
# Get apply environment
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
axesList = [plt.axes]
if self.form.all.isChecked():
axesList = plt.axesList
# Set new offset
for axes in axesList:
# For some reason, modify spines offset erase axes labels, so we
# need store it in order to regenerate later
x = axes.get_xlabel()
y = axes.get_ylabel()
for loc, spine in axes.spines.iteritems():
if loc in ['bottom', 'top']:
spine.set_position(('outward',self.form.xOffset.value()))
if loc in ['left', 'right']:
spine.set_position(('outward',self.form.yOffset.value()))
# Now we can restore axes labels
Plot.xlabel(unicode(x))
Plot.ylabel(unicode(y))
plt.update()
def onScales(self):
""" Executed when axes scales have been modified. """
# Get apply environment
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
axesList = [plt.axes]
if self.form.all.isChecked():
axesList = plt.axesList
if not self.skip:
self.skip = True
# X axis
if self.form.xAuto.isChecked():
for ax in axesList:
ax.set_autoscalex_on(True)
self.form.xSMin.setEnabled(False)
self.form.xSMax.setEnabled(False)
lim = plt.axes.get_xlim()
self.form.xSMin.setText(str(lim[0]))
self.form.xSMax.setText(str(lim[1]))
else:
self.form.xSMin.setEnabled(True)
self.form.xSMax.setEnabled(True)
try:
xMin = float(self.form.xSMin.text())
except:
xMin = plt.axes.get_xlim()[0]
self.form.xSMin.setText(str(xMin))
try:
xMax = float(self.form.xSMax.text())
except:
xMax = plt.axes.get_xlim()[1]
self.form.xSMax.setText(str(xMax))
for ax in axesList:
ax.set_xlim(( xMin,xMax ))
# Y axis
if self.form.yAuto.isChecked():
for ax in axesList:
ax.set_autoscaley_on(True)
self.form.ySMin.setEnabled(False)
self.form.ySMax.setEnabled(False)
lim = plt.axes.get_ylim()
self.form.ySMin.setText(str(lim[0]))
self.form.ySMax.setText(str(lim[1]))
else:
self.form.ySMin.setEnabled(True)
self.form.ySMax.setEnabled(True)
try:
yMin = float(self.form.ySMin.text())
except:
yMin = plt.axes.get_ylim()[0]
self.form.ySMin.setText(str(yMin))
try:
yMax = float(self.form.ySMax.text())
except:
yMax = plt.axes.get_ylim()[1]
self.form.ySMax.setText(str(yMax))
for ax in axesList:
ax.set_ylim(( yMin,yMax ))
plt.update()
self.skip = False
def onMdiArea(self, subWin):
""" Executed when window is selected on mdi area.
@param subWin Selected window.
"""
plt = Plot.getPlot()
if plt != subWin:
self.updateUI()
def updateUI(self):
""" Setup UI controls values if possible """
plt = Plot.getPlot()
self.form.axId.setEnabled(bool(plt))
self.form.new.setEnabled(bool(plt))
self.form.remove.setEnabled(bool(plt))
self.form.all.setEnabled(bool(plt))
self.form.xMin.setEnabled(bool(plt))
self.form.xMax.setEnabled(bool(plt))
self.form.yMin.setEnabled(bool(plt))
self.form.yMax.setEnabled(bool(plt))
self.form.xAlign.setEnabled(bool(plt))
self.form.yAlign.setEnabled(bool(plt))
self.form.xOffset.setEnabled(bool(plt))
self.form.yOffset.setEnabled(bool(plt))
self.form.xAuto.setEnabled(bool(plt))
self.form.yAuto.setEnabled(bool(plt))
self.form.xSMin.setEnabled(bool(plt))
self.form.xSMax.setEnabled(bool(plt))
self.form.ySMin.setEnabled(bool(plt))
self.form.ySMax.setEnabled(bool(plt))
if not plt:
return
# Ensure that active axes is correct
index = min(self.form.axId.value(), len(plt.axesList)-1)
self.form.axId.setValue(index)
# Set dimensions
ax = plt.axes
bb = ax.get_position()
self.form.xMin.setValue(int(100*bb._get_xmin()))
self.form.xMax.setValue(int(100*bb._get_xmax()))
self.form.yMin.setValue(int(100*bb._get_ymin()))
self.form.yMax.setValue(int(100*bb._get_ymax()))
# Set alignment and offset
xPos = ax.xaxis.get_ticks_position()
yPos = ax.yaxis.get_ticks_position()
xOffset = ax.spines['bottom'].get_position()[1]
yOffset = ax.spines['left'].get_position()[1]
if xPos == 'bottom' or xPos == 'default':
self.form.xAlign.setCurrentIndex(0)
else:
self.form.xAlign.setCurrentIndex(1)
self.form.xOffset.setValue(xOffset)
if yPos == 'left' or yPos == 'default':
self.form.yAlign.setCurrentIndex(0)
else:
self.form.yAlign.setCurrentIndex(1)
self.form.yOffset.setValue(yOffset)
# Set scales
if ax.get_autoscalex_on():
self.form.xAuto.setChecked(True)
self.form.xSMin.setEnabled(False)
self.form.xSMax.setEnabled(False)
else:
self.form.xAuto.setChecked(False)
self.form.xSMin.setEnabled(True)
self.form.xSMax.setEnabled(True)
lim = ax.get_xlim()
self.form.xSMin.setText(str(lim[0]))
self.form.xSMax.setText(str(lim[1]))
if ax.get_autoscaley_on():
self.form.yAuto.setChecked(True)
self.form.ySMin.setEnabled(False)
self.form.ySMax.setEnabled(False)
else:
self.form.yAuto.setChecked(False)
self.form.ySMin.setEnabled(True)
self.form.ySMax.setEnabled(True)
lim = ax.get_ylim()
self.form.ySMin.setText(str(lim[0]))
self.form.ySMax.setText(str(lim[1]))
def createTask():
panel = TaskPanel()
Gui.Control.showDialog(panel)
if panel.setupUi():
Gui.Control.closeDialog(panel)
return None
return panel

View File

@ -0,0 +1,332 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TaskPanel</class>
<widget class="QWidget" name="TaskPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>276</width>
<height>416</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>336</height>
</size>
</property>
<property name="windowTitle">
<string>Configure axes</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="axesLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Active axes:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="axesIndex">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>5</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="newAxesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed">
<horstretch>2</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="delAxesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed">
<horstretch>2</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>del</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="allAxes">
<property name="text">
<string>Apply to all axes</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_2">
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="0" column="2">
<widget class="QSlider" name="posYMax">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>90</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QSlider" name="posXMax">
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>90</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSlider" name="posXMin">
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>10</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QSlider" name="posYMin">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>10</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="dimLabel">
<property name="text">
<string>Dimensions:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="0" column="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="3">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="yPosLabel">
<property name="text">
<string>Y axis position</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="yAlign">
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>y at Left</string>
</property>
</item>
<item>
<property name="text">
<string>y at Right</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QSpinBox" name="yOffset">
<property name="maximum">
<number>99999</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="1">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="xPosLabel">
<property name="text">
<string>X axis position</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="xAlign">
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>x at bottom</string>
</property>
</item>
<item>
<property name="text">
<string>x at top</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QSpinBox" name="xOffset">
<property name="maximum">
<number>99999</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QLabel" name="scalesLabel">
<property name="text">
<string>Scales</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="xAuto">
<property name="text">
<string>X auto</string>
</property>
</widget>
</item>
<item row="1" column="2" colspan="2">
<widget class="QCheckBox" name="yAuto">
<property name="text">
<string>Y auto</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="xMax">
<property name="inputMask">
<string notr="true"/>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="yMin">
<property name="inputMask">
<string notr="true"/>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QLineEdit" name="yMax">
<property name="inputMask">
<string notr="true"/>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLineEdit" name="xMin">
<property name="inputMask">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,36 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD
import FreeCADGui
# Qt libraries
from PyQt4 import QtGui,QtCore
# Main object
import TaskPanel
def load():
""" Loads the tool """
TaskPanel.createTask()

View File

@ -0,0 +1,206 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD as App
import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
import Plot
from plotUtils import Paths, Translator
class TaskPanel:
def __init__(self):
self.ui = Paths.modulePath() + "/plotLabels/TaskPanel.ui"
self.skip = False
def accept(self):
return True
def reject(self):
return True
def clicked(self, index):
pass
def open(self):
pass
def needsFullSpace(self):
return True
def isAllowedAlterSelection(self):
return False
def isAllowedAlterView(self):
return True
def isAllowedAlterDocument(self):
return False
def helpRequested(self):
pass
def setupUi(self):
mw = self.getMainWindow()
form = mw.findChild(QtGui.QWidget, "TaskPanel")
form.axId = form.findChild(QtGui.QSpinBox, "axesIndex")
form.title = form.findChild(QtGui.QLineEdit, "title")
form.titleSize = form.findChild(QtGui.QSpinBox, "titleSize")
form.xLabel = form.findChild(QtGui.QLineEdit, "titleX")
form.xSize = form.findChild(QtGui.QSpinBox, "xSize")
form.yLabel = form.findChild(QtGui.QLineEdit, "titleY")
form.ySize = form.findChild(QtGui.QSpinBox, "ySize")
self.form = form
self.retranslateUi()
# Look for active axes if can
axId = 0
plt = Plot.getPlot()
if plt:
while plt.axes != plt.axesList[axId]:
axId = axId + 1
form.axId.setValue(axId)
self.updateUI()
QtCore.QObject.connect(form.axId, QtCore.SIGNAL('valueChanged(int)'),self.onAxesId)
QtCore.QObject.connect(form.title, QtCore.SIGNAL("editingFinished()"),self.onLabels)
QtCore.QObject.connect(form.xLabel, QtCore.SIGNAL("editingFinished()"),self.onLabels)
QtCore.QObject.connect(form.yLabel, QtCore.SIGNAL("editingFinished()"),self.onLabels)
QtCore.QObject.connect(form.titleSize,QtCore.SIGNAL("valueChanged(int)"),self.onFontSizes)
QtCore.QObject.connect(form.xSize, QtCore.SIGNAL("valueChanged(int)"),self.onFontSizes)
QtCore.QObject.connect(form.ySize, QtCore.SIGNAL("valueChanged(int)"),self.onFontSizes)
QtCore.QObject.connect(Plot.getMdiArea(),QtCore.SIGNAL("subWindowActivated(QMdiSubWindow*)"),self.onMdiArea)
return False
def getMainWindow(self):
"returns the main window"
# using QtGui.qApp.activeWindow() isn't very reliable because if another
# widget than the mainwindow is active (e.g. a dialog) the wrong widget is
# returned
toplevel = QtGui.qApp.topLevelWidgets()
for i in toplevel:
if i.metaObject().className() == "Gui::MainWindow":
return i
raise Exception("No main window found")
def retranslateUi(self):
""" Set user interface locale strings.
"""
self.form.setWindowTitle(Translator.translate("Set labels"))
self.form.findChild(QtGui.QLabel, "axesLabel").setText(Translator.translate("Active axes"))
self.form.findChild(QtGui.QLabel, "titleLabel").setText(Translator.translate("Title"))
self.form.findChild(QtGui.QLabel, "xLabel").setText(Translator.translate("X label"))
self.form.findChild(QtGui.QLabel, "yLabel").setText(Translator.translate("Y label"))
def onAxesId(self, value):
""" Executed when axes index is modified. """
if not self.skip:
self.skip = True
# UI control in some special plot cases
plt = Plot.getPlot()
if not plt:
self.updateUI()
self.skip = False
return
# UI control in most cases
self.form.axId.setMaximum(len(plt.axesList))
if self.form.axId.value() >= len(plt.axesList):
self.form.axId.setValue(len(plt.axesList)-1)
# Send new control to Plot instance
plt.setActiveAxes(self.form.axId.value())
self.updateUI()
self.skip = False
def onLabels(self):
""" Executed when labels have been modified. """
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
# Set labels
Plot.title(unicode(self.form.title.text()))
Plot.xlabel(unicode(self.form.xLabel.text()))
Plot.ylabel(unicode(self.form.yLabel.text()))
plt.update()
def onFontSizes(self, value):
""" Executed when font sizes have been modified. """
# Get apply environment
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
# Set font sizes
ax = plt.axes
ax.title.set_fontsize(self.form.titleSize.value())
ax.xaxis.label.set_fontsize(self.form.xSize.value())
ax.yaxis.label.set_fontsize(self.form.ySize.value())
plt.update()
def onMdiArea(self, subWin):
""" Executed when window is selected on mdi area.
@param subWin Selected window.
"""
plt = Plot.getPlot()
if plt != subWin:
self.updateUI()
def updateUI(self):
""" Setup UI controls values if possible """
plt = Plot.getPlot()
self.form.axId.setEnabled(bool(plt))
self.form.title.setEnabled(bool(plt))
self.form.titleSize.setEnabled(bool(plt))
self.form.xLabel.setEnabled(bool(plt))
self.form.xSize.setEnabled(bool(plt))
self.form.yLabel.setEnabled(bool(plt))
self.form.ySize.setEnabled(bool(plt))
if not plt:
return
# Ensure that active axes is correct
index = min(self.form.axId.value(), len(plt.axesList)-1)
self.form.axId.setValue(index)
# Store data before starting changing it.
ax = plt.axes
t = ax.get_title()
x = ax.get_xlabel()
y = ax.get_ylabel()
tt = ax.title.get_fontsize()
xx = ax.xaxis.label.get_fontsize()
yy = ax.yaxis.label.get_fontsize()
# Set labels
self.form.title.setText(t)
self.form.xLabel.setText(x)
self.form.yLabel.setText(y)
# Set font sizes
self.form.titleSize.setValue(tt)
self.form.xSize.setValue(xx)
self.form.ySize.setValue(yy)
def createTask():
panel = TaskPanel()
Gui.Control.showDialog(panel)
if panel.setupUi():
Gui.Control.closeDialog(panel)
return None
return panel

View File

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TaskPanel</class>
<widget class="QWidget" name="TaskPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>276</width>
<height>228</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>Set labels</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="axesLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Active axes:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="axesIndex">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>5</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximum">
<number>1</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_2">
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="0" column="2">
<widget class="QLineEdit" name="title"/>
</item>
<item row="0" column="1">
<widget class="QLabel" name="titleLabel">
<property name="text">
<string>Title</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QSpinBox" name="titleSize">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>1024</number>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QSpinBox" name="xSize">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>1024</number>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="xLabel">
<property name="text">
<string>X label</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="titleX"/>
</item>
<item row="2" column="1">
<widget class="QLabel" name="yLabel">
<property name="text">
<string>Y label</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="titleY"/>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="ySize">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>1024</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,36 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD
import FreeCADGui
# Qt libraries
from PyQt4 import QtGui,QtCore
# Main object
import TaskPanel
def load():
""" Loads the tool """
TaskPanel.createTask()

View File

@ -0,0 +1,223 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD as App
import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
import Plot
from plotUtils import Paths, Translator
class TaskPanel:
def __init__(self):
self.ui = Paths.modulePath() + "/plotPositions/TaskPanel.ui"
self.skip = False
self.item = 0
self.names = []
self.objs = []
self.plt = None
def accept(self):
return True
def reject(self):
return True
def clicked(self, index):
pass
def open(self):
pass
def needsFullSpace(self):
return True
def isAllowedAlterSelection(self):
return False
def isAllowedAlterView(self):
return True
def isAllowedAlterDocument(self):
return False
def helpRequested(self):
pass
def setupUi(self):
mw = self.getMainWindow()
form = mw.findChild(QtGui.QWidget, "TaskPanel")
form.items = form.findChild(QtGui.QListWidget, "items")
form.x = form.findChild(QtGui.QDoubleSpinBox, "x")
form.y = form.findChild(QtGui.QDoubleSpinBox, "y")
form.s = form.findChild(QtGui.QDoubleSpinBox, "size")
self.form = form
self.retranslateUi()
self.updateUI()
QtCore.QObject.connect(form.items, QtCore.SIGNAL("currentRowChanged(int)"),self.onItem)
QtCore.QObject.connect(form.x, QtCore.SIGNAL("valueChanged(double)"),self.onData)
QtCore.QObject.connect(form.y, QtCore.SIGNAL("valueChanged(double)"),self.onData)
QtCore.QObject.connect(form.s, QtCore.SIGNAL("valueChanged(double)"),self.onData)
QtCore.QObject.connect(Plot.getMdiArea(),QtCore.SIGNAL("subWindowActivated(QMdiSubWindow*)"),self.onMdiArea)
return False
def getMainWindow(self):
"returns the main window"
# using QtGui.qApp.activeWindow() isn't very reliable because if another
# widget than the mainwindow is active (e.g. a dialog) the wrong widget is
# returned
toplevel = QtGui.qApp.topLevelWidgets()
for i in toplevel:
if i.metaObject().className() == "Gui::MainWindow":
return i
raise Exception("No main window found")
def retranslateUi(self):
""" Set user interface locale strings.
"""
self.form.setWindowTitle(Translator.translate("Set positions and sizes"))
self.form.findChild(QtGui.QLabel, "posLabel").setText(Translator.translate("Position"))
self.form.findChild(QtGui.QLabel, "sizeLabel").setText(Translator.translate("Size"))
def onItem(self, row):
""" Executed when selected item is modified. """
# Get selected item
self.item = row
# Call to update
self.updateUI()
def onData(self, value):
""" Executed when selected item data is modified. """
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
if not self.skip:
self.skip = True
name = self.names[self.item]
obj = self.objs[self.item]
x = self.form.x.value()
y = self.form.y.value()
s = self.form.s.value()
# x/y labels only have one position control
if name.find('x label') >= 0:
self.form.y.setValue(x)
elif name.find('y label') >= 0:
self.form.x.setValue(y)
# title and labels only have one size control
if name.find('title') >= 0 or name.find('label') >= 0:
obj.set_position((x,y))
obj.set_size(s)
# legend have all controls
else:
Plot.legend(plt.legend, (x,y), s)
plt.update()
self.skip = False
def onMdiArea(self, subWin):
""" Executed when window is selected on mdi area.
@param subWin Selected window.
"""
plt = Plot.getPlot()
if plt != subWin:
self.updateUI()
def updateUI(self):
""" Setup UI controls values if possible """
plt = Plot.getPlot()
self.form.items.setEnabled(bool(plt))
self.form.x.setEnabled(bool(plt))
self.form.y.setEnabled(bool(plt))
self.form.s.setEnabled(bool(plt))
if not plt:
self.plt = plt
self.form.items.clear()
return
# Refill items list only if Plot instance have been changed
if self.plt != plt:
self.plt = plt
self.plt.update() # Update plot in order to put legend in correct place
self.setList()
# Get data for controls
name = self.names[self.item]
obj = self.objs[self.item]
if name.find('title') >= 0 or name.find('label') >= 0:
p = obj.get_position()
x = p[0]
y = p[1]
s = obj.get_size()
if name.find('x label') >= 0:
self.form.y.setEnabled(False)
self.form.y.setValue(x)
elif name.find('y label') >= 0:
self.form.x.setEnabled(False)
self.form.x.setValue(y)
else:
x = plt.legPos[0]
y = plt.legPos[1]
s = obj.get_texts()[-1].get_fontsize()
# Send it to controls
self.form.x.setValue(x)
self.form.y.setValue(y)
self.form.s.setValue(s)
def setList(self):
""" Setup UI controls values if possible """
# Clear lists
self.names = []
self.objs = []
# Fill lists with available objects
if self.plt:
# Axes data
for i in range(0,len(self.plt.axesList)):
ax = self.plt.axesList[i]
# Each axes have title, xaxis and yaxis
self.names.append('title (axes %d)' % (i))
self.objs.append(ax.title)
self.names.append('x label (axes %d)' % (i))
self.objs.append(ax.xaxis.get_label())
self.names.append('y label (axes %d)' % (i))
self.objs.append(ax.yaxis.get_label())
# Legend if exist
ax = self.plt.axesList[-1]
if ax.legend_:
self.names.append('legend')
self.objs.append(ax.legend_)
# Send list to widget
self.form.items.clear()
for name in self.names:
self.form.items.addItem(name)
# Ensure that selected item is correct
if self.item >= len(self.names):
self.item = len(self.names)-1
self.form.items.setCurrentIndex(self.item)
def createTask():
panel = TaskPanel()
Gui.Control.showDialog(panel)
if panel.setupUi():
Gui.Control.closeDialog(panel)
return None
return panel

View File

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TaskPanel</class>
<widget class="QWidget" name="TaskPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>296</width>
<height>336</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>336</height>
</size>
</property>
<property name="windowTitle">
<string>Set positions and sizes</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QListWidget" name="items">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="posLabel">
<property name="text">
<string>Position</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="x">
<property name="decimals">
<number>3</number>
</property>
<property name="minimum">
<double>-99999.000000000000000</double>
</property>
<property name="maximum">
<double>99999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.010000000000000</double>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QDoubleSpinBox" name="y">
<property name="decimals">
<number>3</number>
</property>
<property name="minimum">
<double>-99999.000000000000000</double>
</property>
<property name="maximum">
<double>99999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.010000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="sizeLabel">
<property name="text">
<string>Size</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QDoubleSpinBox" name="size">
<property name="decimals">
<number>1</number>
</property>
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>99999.000000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,36 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD
import FreeCADGui
# Qt libraries
from PyQt4 import QtGui,QtCore
# Main object
import TaskPanel
def load():
""" Loads the tool """
TaskPanel.createTask()

View File

@ -0,0 +1,149 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
import os
# FreeCAD modules
import FreeCAD as App
import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
import Plot
from plotUtils import Paths, Translator
class TaskPanel:
def __init__(self):
self.ui = Paths.modulePath() + "/plotSave/TaskPanel.ui"
def accept(self):
plt = Plot.getPlot()
if not plt:
msg = Translator.translate("Plot document must be selected in order to save it.")
App.Console.PrintError(msg+"\n")
return False
path = unicode(self.form.path.text())
size = (self.form.sizeX.value(), self.form.sizeY.value())
dpi = self.form.dpi.value()
Plot.save(path, size, dpi)
return True
def reject(self):
return True
def clicked(self, index):
pass
def open(self):
pass
def needsFullSpace(self):
return True
def isAllowedAlterSelection(self):
return False
def isAllowedAlterView(self):
return True
def isAllowedAlterDocument(self):
return False
def helpRequested(self):
pass
def setupUi(self):
mw = self.getMainWindow()
form = mw.findChild(QtGui.QWidget, "TaskPanel")
form.path = form.findChild(QtGui.QLineEdit, "path")
form.pathButton = form.findChild(QtGui.QPushButton, "pathButton")
form.sizeX = form.findChild(QtGui.QDoubleSpinBox, "sizeX")
form.sizeY = form.findChild(QtGui.QDoubleSpinBox, "sizeY")
form.dpi = form.findChild(QtGui.QSpinBox, "dpi")
self.form = form
self.retranslateUi()
QtCore.QObject.connect(form.pathButton,QtCore.SIGNAL("pressed()"),self.onPathButton)
QtCore.QObject.connect(Plot.getMdiArea(),QtCore.SIGNAL("subWindowActivated(QMdiSubWindow*)"),self.onMdiArea)
home = os.getenv('USERPROFILE') or os.getenv('HOME')
form.path.setText(os.path.join(home,"plot.png"))
self.updateUI()
return False
def getMainWindow(self):
"returns the main window"
# using QtGui.qApp.activeWindow() isn't very reliable because if another
# widget than the mainwindow is active (e.g. a dialog) the wrong widget is
# returned
toplevel = QtGui.qApp.topLevelWidgets()
for i in toplevel:
if i.metaObject().className() == "Gui::MainWindow":
return i
raise Exception("No main window found")
def retranslateUi(self):
""" Set user interface locale strings.
"""
self.form.setWindowTitle(Translator.translate("Save figure"))
self.form.findChild(QtGui.QLabel, "sizeLabel").setText(Translator.translate("Inches"))
self.form.findChild(QtGui.QLabel, "dpiLabel").setText(Translator.translate("Dots per Inch"))
def updateUI(self):
""" Setup UI controls values if possible """
plt = Plot.getPlot()
self.form.path.setEnabled(bool(plt))
self.form.pathButton.setEnabled(bool(plt))
self.form.sizeX.setEnabled(bool(plt))
self.form.sizeY.setEnabled(bool(plt))
self.form.dpi.setEnabled(bool(plt))
if not plt:
return
fig = plt.fig
size = fig.get_size_inches()
dpi = fig.get_dpi()
self.form.sizeX.setValue(size[0])
self.form.sizeY.setValue(size[1])
self.form.dpi.setValue(dpi)
def onPathButton(self):
""" Executed when path button is pressed.
"""
path = self.form.path.text()
file_choices = "Portable Network Graphics (*.png)|*.png;;Portable Document Format (*.pdf)|*.pdf;;PostScript (*.ps)|*.ps;;Encapsulated PostScript (*.eps)|*.eps"
path = QtGui.QFileDialog.getSaveFileName(None, 'Save figure', path, file_choices)
if path:
self.form.path.setText(path)
def onMdiArea(self, subWin):
""" Executed when window is selected on mdi area.
@param subWin Selected window.
"""
plt = Plot.getPlot()
if plt != subWin:
self.updateUI()
def createTask():
panel = TaskPanel()
Gui.Control.showDialog(panel)
if panel.setupUi():
Gui.Control.closeDialog(panel)
return None
return panel

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TaskPanel</class>
<widget class="QWidget" name="TaskPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>260</width>
<height>253</height>
</rect>
</property>
<property name="windowTitle">
<string>Save figure</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="path">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>7</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pathButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QDoubleSpinBox" name="sizeX">
<property name="minimum">
<double>0.010000000000000</double>
</property>
<property name="maximum">
<double>99999.000000000000000</double>
</property>
<property name="value">
<double>6.400000000000000</double>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="xLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>x</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sizeY">
<property name="minimum">
<double>0.010000000000000</double>
</property>
<property name="maximum">
<double>99999.000000000000000</double>
</property>
<property name="value">
<double>4.800000000000000</double>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="sizeLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Inches</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QSpinBox" name="dpi">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>2048</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="dpiLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Dots per Inch</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,36 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD
import FreeCADGui
# Qt libraries
from PyQt4 import QtGui,QtCore
# Main object
import TaskPanel
def load():
""" Loads the tool """
TaskPanel.createTask()

View File

@ -0,0 +1,309 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD as App
import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
import Plot
from plotUtils import Paths, Translator
# matplotlib
import matplotlib
from matplotlib.lines import Line2D
import matplotlib.colors as Colors
class TaskPanel:
def __init__(self):
self.ui = Paths.modulePath() + "/plotSeries/TaskPanel.ui"
self.skip = False
self.item = 0
self.plt = None
def accept(self):
return True
def reject(self):
return True
def clicked(self, index):
pass
def open(self):
pass
def needsFullSpace(self):
return True
def isAllowedAlterSelection(self):
return False
def isAllowedAlterView(self):
return True
def isAllowedAlterDocument(self):
return False
def helpRequested(self):
pass
def setupUi(self):
mw = self.getMainWindow()
form = mw.findChild(QtGui.QWidget, "TaskPanel")
form.items = form.findChild(QtGui.QListWidget, "items")
form.label = form.findChild(QtGui.QLineEdit, "label")
form.isLabel = form.findChild(QtGui.QCheckBox, "isLabel")
form.style = form.findChild(QtGui.QComboBox, "lineStyle")
form.marker = form.findChild(QtGui.QComboBox, "markers")
form.width = form.findChild(QtGui.QDoubleSpinBox, "lineWidth")
form.size = form.findChild(QtGui.QSpinBox, "markerSize")
form.color = form.findChild(QtGui.QPushButton, "color")
form.remove = form.findChild(QtGui.QPushButton, "remove")
self.form = form
self.retranslateUi()
self.fillStyles()
self.updateUI()
QtCore.QObject.connect(form.items, QtCore.SIGNAL("currentRowChanged(int)"),self.onItem)
QtCore.QObject.connect(form.label, QtCore.SIGNAL("editingFinished()"),self.onData)
QtCore.QObject.connect(form.isLabel,QtCore.SIGNAL("stateChanged(int)"),self.onData)
QtCore.QObject.connect(form.style, QtCore.SIGNAL("currentIndexChanged(int)"),self.onData)
QtCore.QObject.connect(form.marker, QtCore.SIGNAL("currentIndexChanged(int)"),self.onData)
QtCore.QObject.connect(form.width, QtCore.SIGNAL("valueChanged(double)"),self.onData)
QtCore.QObject.connect(form.size, QtCore.SIGNAL("valueChanged(int)"),self.onData)
QtCore.QObject.connect(form.color, QtCore.SIGNAL("pressed()"),self.onColor)
QtCore.QObject.connect(form.remove, QtCore.SIGNAL("pressed()"),self.onRemove)
QtCore.QObject.connect(Plot.getMdiArea(),QtCore.SIGNAL("subWindowActivated(QMdiSubWindow*)"),self.onMdiArea)
return False
def getMainWindow(self):
"returns the main window"
# using QtGui.qApp.activeWindow() isn't very reliable because if another
# widget than the mainwindow is active (e.g. a dialog) the wrong widget is
# returned
toplevel = QtGui.qApp.topLevelWidgets()
for i in toplevel:
if i.metaObject().className() == "Gui::MainWindow":
return i
raise Exception("No main window found")
def retranslateUi(self):
""" Set user interface locale strings.
"""
self.form.setWindowTitle(Translator.translate("Set positions and sizes"))
self.form.isLabel.setText(Translator.translate("No label"))
self.form.remove.setText(Translator.translate("Remove serie"))
self.form.findChild(QtGui.QLabel, "styleLabel").setText(Translator.translate("Line style"))
self.form.findChild(QtGui.QLabel, "markerLabel").setText(Translator.translate("Marker"))
def fillStyles(self):
""" Fill style combo boxes. """
# Line styles
linestyles = Line2D.lineStyles.keys()
for i in range(0,len(linestyles)):
style = linestyles[i]
string = "\'" + str(style) + "\' (" + Line2D.lineStyles[style] + ")"
self.form.style.addItem(string)
# Markers
markers = Line2D.markers.keys()
for i in range(0,len(markers)):
marker = markers[i]
string = "\'" + str(marker) + "\' (" + Line2D.markers[marker] + ")"
self.form.marker.addItem(string)
def onItem(self, row):
""" Executed when selected item is modified. """
if not self.skip:
self.skip = True
# Get selected item
self.item = row
# Call to update
self.updateUI()
self.skip = False
def onData(self):
""" Executed when selected item data is modified. """
if not self.skip:
self.skip = True
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
# Ensure that selected serie exist
if self.item >= len(Plot.series()):
self.updateUI()
return
# Set label
serie = Plot.series()[self.item]
if(self.form.isLabel.isChecked()):
serie.name = None
self.form.label.setEnabled(False)
else:
serie.name = self.form.label.text()
self.form.label.setEnabled(True)
# Set line style and marker
style = self.form.style.currentIndex()
linestyles = Line2D.lineStyles.keys()
serie.line.set_linestyle(linestyles[style])
marker = self.form.marker.currentIndex()
markers = Line2D.markers.keys()
serie.line.set_marker(markers[marker])
# Set line width and marker size
serie.line.set_linewidth(self.form.width.value())
serie.line.set_markersize(self.form.size.value())
plt.update()
# Regenerate series labels
self.setList()
self.skip = False
def onColor(self):
""" Executed when color pallete is requested. """
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
# Ensure that selected serie exist
if self.item >= len(Plot.series()):
self.updateUI()
return
# Show widget to select color
col = QtGui.QColorDialog.getColor()
# Send color to widget and serie
if col.isValid():
serie = plt.series[self.item]
self.form.color.setStyleSheet("background-color: rgb(%d, %d, %d);" % (col.red(),
col.green(), col.blue()))
serie.line.set_color((col.redF(), col.greenF(), col.blueF()))
plt.update()
def onRemove(self):
""" Executed when data serie must be removed. """
plt = Plot.getPlot()
if not plt:
self.updateUI()
return
# Ensure that selected serie exist
if self.item >= len(Plot.series()):
self.updateUI()
return
# Remove serie
Plot.removeSerie(self.item)
self.setList()
self.updateUI()
plt.update()
def onMdiArea(self, subWin):
""" Executed when window is selected on mdi area.
@param subWin Selected window.
"""
plt = Plot.getPlot()
if plt != subWin:
self.updateUI()
def updateUI(self):
""" Setup UI controls values if possible """
plt = Plot.getPlot()
self.form.items.setEnabled(bool(plt))
self.form.label.setEnabled(bool(plt))
self.form.isLabel.setEnabled(bool(plt))
self.form.style.setEnabled(bool(plt))
self.form.marker.setEnabled(bool(plt))
self.form.width.setEnabled(bool(plt))
self.form.size.setEnabled(bool(plt))
self.form.color.setEnabled(bool(plt))
self.form.remove.setEnabled(bool(plt))
if not plt:
self.plt = plt
self.form.items.clear()
return
self.skip = True
# Refill list
if self.plt != plt or len(Plot.series()) != self.form.items.count():
self.plt = plt
self.setList()
# Ensure that have series
if not len(Plot.series()):
self.form.label.setEnabled(False)
self.form.isLabel.setEnabled(False)
self.form.style.setEnabled(False)
self.form.marker.setEnabled(False)
self.form.width.setEnabled(False)
self.form.size.setEnabled(False)
self.form.color.setEnabled(False)
self.form.remove.setEnabled(False)
return
# Set label
serie = Plot.series()[self.item]
if serie.name == None:
self.form.isLabel.setChecked(True)
self.form.label.setEnabled(False)
self.form.label.setText("")
else:
self.form.isLabel.setChecked(False)
self.form.label.setText(serie.name)
# Set line style and marker
self.form.style.setCurrentIndex(0)
linestyles = Line2D.lineStyles.keys()
for i in range(0,len(linestyles)):
style = linestyles[i]
if style == serie.line.get_linestyle():
self.form.style.setCurrentIndex(i)
self.form.marker.setCurrentIndex(0)
markers = Line2D.markers.keys()
for i in range(0,len(markers)):
marker = markers[i]
if marker == serie.line.get_marker():
self.form.marker.setCurrentIndex(i)
# Set line width and marker size
self.form.width.setValue(serie.line.get_linewidth())
self.form.size.setValue(serie.line.get_markersize())
# Set color
color = Colors.colorConverter.to_rgb(serie.line.get_color())
self.form.color.setStyleSheet("background-color: rgb(%d, %d, %d);" % (int(color[0]*255),
int(color[1]*255), int(color[2]*255)))
self.skip = False
def setList(self):
""" Setup UI controls values if possible """
self.form.items.clear()
series = Plot.series()
for i in range(0,len(series)):
serie = series[i]
string = 'serie ' + str(i) + ': '
if serie.name == None:
string = string + '\"No label\"'
else:
string = string + serie.name
self.form.items.addItem(string)
# Ensure that selected item is correct
if len(series) and self.item >= len(series):
self.item = len(series)-1
self.form.items.setCurrentIndex(self.item)
def createTask():
panel = TaskPanel()
Gui.Control.showDialog(panel)
if panel.setupUi():
Gui.Control.closeDialog(panel)
return None
return panel

View File

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TaskPanel</class>
<widget class="QWidget" name="TaskPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>296</width>
<height>336</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>336</height>
</size>
</property>
<property name="windowTitle">
<string>Configure series</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QListWidget" name="items">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" colspan="4">
<widget class="QLineEdit" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>2</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QDoubleSpinBox" name="lineWidth">
<property name="minimum">
<double>0.010000000000000</double>
</property>
<property name="maximum">
<double>9999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.500000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="styleLabel">
<property name="text">
<string>Line style</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="5">
<widget class="QPushButton" name="remove">
<property name="text">
<string>Remove serie</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="3">
<widget class="QComboBox" name="lineStyle">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="markerLabel">
<property name="text">
<string>Markers</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QCheckBox" name="isLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>No label</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="3">
<widget class="QComboBox" name="markers">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="0" colspan="5">
<widget class="QPushButton" name="color">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QSpinBox" name="markerSize">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,36 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD
import FreeCADGui
# Qt libraries
from PyQt4 import QtGui,QtCore
# Main object
import TaskPanel
def load():
""" Loads the tool """
TaskPanel.createTask()

View File

@ -0,0 +1,55 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
import FreeCAD, FreeCADGui, os
def modulePath():
"""returns the current Ship design module path
@return Module path"""
path1 = FreeCAD.ConfigGet("AppHomePath") + "Mod/Plot"
path2 = FreeCAD.ConfigGet("UserAppData") + "Mod/Plot"
if os.path.exists(path2):
return path2
else:
return path1
def iconsPath():
"""returns the current Ship design module icons path
@return Icons path"""
path = modulePath() + "/Icons"
return path
def getPathFromFile(fileName):
""" Gets the directory path from a file name
@param fileName Name of the file
@return Directory path.
"""
if not fileName:
return ''
i = 1
try:
while 1:
i = fileName.index("/", i+1)
except ValueError:
pass
return fileName[0:i+1]

View File

@ -0,0 +1,30 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
import FreeCAD, FreeCADGui, os
from PyQt4 import QtCore,QtGui
def translate(text,context="plot"):
"convenience function for Qt translator"
return QtGui.QApplication.translate(context, text, None,
QtGui.QApplication.UnicodeUTF8)

View File

@ -0,0 +1,25 @@
#***************************************************************************
#* *
#* Copyright (c) 2011, 2012 *
#* Jose Luis Cercos Pita <jlcercos@gmail.com> *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* This program is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Library General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
# Empty file to treat the folder as a package

View File

@ -181,6 +181,15 @@
<ComponentRef Id="CompModtankWeights" />
<!-- Ship module -->
<ComponentRef Id="CompExampleData" />
<!-- Plot module -->
<ComponentRef Id="CompModPlot" />
<ComponentRef Id="CompModPlotIcons" />
<ComponentRef Id="CompModplotAxes" />
<ComponentRef Id="CompModplotLabels" />
<ComponentRef Id="CompModplotPositions" />
<ComponentRef Id="CompModplotSave" />
<ComponentRef Id="CompModplotSeries" />
<ComponentRef Id="CompModplotUtils" />
<Feature Id="FeatModImage" Title="The Image module" Description="Module to handle pictures" Level="1">
<ComponentRef Id="CompModImage" />

View File

@ -54,6 +54,7 @@
<?include ModArch.wxi ?>
<?include ModOpenSCAD.wxi ?>
<?include ModShip.wxi ?>
<?include ModPlot.wxi ?>
</DirectoryRef>
</Fragment>
</Wix>

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?><!--
(c) Jose Luis Cercos Pita (jlcercos@gmail.com) 2012
This file is part of the FreeCAD CAx development system.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License (LGPL)
as published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
for detail see the LICENCE text file.
FreeCAD 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 Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with FreeCAD; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
Jose Luis Cercos Pita 2012
-->
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Directory Id="ModPlot" Name="Plot" FileSource="../../Mod/Plot">
<Component Id="CompModPlot" Guid="672b5f07-5779-47a0-a1fc-6be045329d75" Win64='$(var.Win_64)' KeyPath="yes">
<File Id="PlotGuiPy" Name="PlotGui.py" DiskId="1" />
<File Id="PlotInitGuiPy" Name="InitGui.py" DiskId="1" />
<File Id="PlotInstance" Name="Plot.py" DiskId="1" />
</Component>
<Directory Id="ModPlotIcons" Name="Icons" FileSource="../../Mod/Plot/Icons" >
<Component Id="CompModPlotIcons" Guid="a176d6d9-755c-4b09-824a-af56c45f08c0" Win64='$(var.Win_64)' KeyPath="yes">
<File Id="PlotIcons01" Name="Axes.svg" />
<File Id="PlotIcons02" Name="Grid.svg" />
<File Id="PlotIcons03" Name="Icon.svg" />
<File Id="PlotIcons04" Name="Labels.svg" />
<File Id="PlotIcons05" Name="Legend.svg" />
<File Id="PlotIcons06" Name="Positions.svg" />
<File Id="PlotIcons07" Name="Save.svg" />
<File Id="PlotIcons08" Name="Series.svg" />
</Component>
</Directory>
<Directory Id="ModplotAxes" Name="plotAxes" FileSource="../../Mod/Plot/plotAxes" >
<Component Id="CompModplotAxes" Guid="0dfd62d2-196b-45e8-ba6d-a51267233890" Win64='$(var.Win_64)' KeyPath="yes">
<File Id="plotAxes01" Name="__init__.py" />
<File Id="plotAxes02" Name="TaskPanel.py" />
<File Id="plotAxes03" Name="TaskPanel.ui" />
</Component>
</Directory>
<Directory Id="ModplotLabels" Name="plotLabels" FileSource="../../Mod/Plot/plotLabels" >
<Component Id="CompModplotLabels" Guid="5741d177-c82c-4489-a344-775c0fa82a05" Win64='$(var.Win_64)' KeyPath="yes">
<File Id="plotLabels01" Name="__init__.py" />
<File Id="plotLabels02" Name="TaskPanel.py" />
<File Id="plotLabels03" Name="TaskPanel.ui" />
</Component>
</Directory>
<Directory Id="ModplotPositions" Name="plotPositions" FileSource="../../Mod/Plot/plotPositions" >
<Component Id="CompModplotPositions" Guid="d6fd8e93-e4df-4e78-8ac6-9f74eccbb64c" Win64='$(var.Win_64)' KeyPath="yes">
<File Id="plotPositions01" Name="__init__.py" />
<File Id="plotPositions02" Name="TaskPanel.py" />
<File Id="plotPositions03" Name="TaskPanel.ui" />
</Component>
</Directory>
<Directory Id="ModplotSave" Name="plotSave" FileSource="../../Mod/Plot/plotSave" >
<Component Id="CompModplotSave" Guid="0d9896e0-f992-41e9-a52c-ea24fcb786d4" Win64='$(var.Win_64)' KeyPath="yes">
<File Id="plotSave01" Name="__init__.py" />
<File Id="plotSave02" Name="TaskPanel.py" />
<File Id="plotSave03" Name="TaskPanel.ui" />
</Component>
</Directory>
<Directory Id="ModplotSeries" Name="plotSeries" FileSource="../../Mod/Plot/plotSeries" >
<Component Id="CompModplotSeries" Guid="4adb6faf-867a-4c23-b8de-34f9149b8805" Win64='$(var.Win_64)' KeyPath="yes">
<File Id="plotSeries01" Name="__init__.py" />
<File Id="plotSeries02" Name="TaskPanel.py" />
<File Id="plotSeries03" Name="TaskPanel.ui" />
</Component>
</Directory>
<Directory Id="ModplotUtils" Name="plotUtils" FileSource="../../Mod/Plot/plotUtils" >
<Component Id="CompModplotUtils" Guid="861945d1-6105-4063-8cbb-93235876e15b" Win64='$(var.Win_64)' KeyPath="yes">
<File Id="plotUtils01" Name="__init__.py" />
<File Id="plotUtils02" Name="Paths.py" />
<File Id="plotUtils03" Name="Translator.ui" />
</Component>
</Directory>
</Directory>
</Include>