talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 3c64fb648dbb155c971fd0108f40fee7a36d2cb1
parent 76b854fd5e98f225dcee88f17cddebe72ace6683
Author: Paul <paul@claws-mail.org>
Date:   Fri,  2 Oct 2015 08:56:00 +0100

remove dead GeoLocation plugin

Diffstat:
Mconfigure.ac | 31-------------------------------
Mmanual/es/plugins.xml | 9---------
Mmanual/fr/plugins.xml | 9---------
Mmanual/plugins.xml | 9---------
Mpo/POTFILES.in | 1-
Msrc/plugins/Makefile.am | 1-
Dsrc/plugins/geolocation/Makefile.am | 30------------------------------
Dsrc/plugins/geolocation/earth.svg | 980-------------------------------------------------------------------------------
Dsrc/plugins/geolocation/geolocation_plugin.c | 903-------------------------------------------------------------------------------
Dsrc/plugins/geolocation/pixmap_earth.h | 123-------------------------------------------------------------------------------
10 files changed, 0 insertions(+), 2096 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -971,10 +971,6 @@ AC_ARG_ENABLE(gdata-plugin, [ --disable-gdata-plugin Do not build gdata plugin], [enable_gdata_plugin=$enableval], [enable_gdata_plugin=auto]) -AC_ARG_ENABLE(geolocation-plugin, - [ --disable-geolocation-plugin Do not build geolocation plugin], - [enable_geolocation_plugin=$enableval], [enable_geolocation_plugin=auto]) - AC_ARG_ENABLE(libravatar-plugin, [ --disable-libravatar-plugin Do not build libravatar plugin], [enable_libravatar_plugin=$enableval], [enable_libravatar_plugin=auto]) @@ -1463,31 +1459,6 @@ else AC_MSG_RESULT(no) fi -AC_MSG_CHECKING([whether to build geolocation plugin]) -if test x"$enable_geolocation_plugin" != xno; then - dependencies_missing="" - - if test x"$HAVE_CHAMPLAIN" = xno; then - dependencies_missing="libchamplain $dependencies_missing" - fi - - if test x"$dependencies_missing" = x; then - PLUGINS="$PLUGINS geolocation" - AC_MSG_RESULT(yes) - elif test x"$enable_geolocation_plugin" = xauto; then - AC_MSG_RESULT(no) - AC_MSG_WARN("Plugin geolocation will not be built; missing $dependencies_missing") - enable_geolocation_plugin=no - MISSING_DEPS_PLUGINS="$MISSING_DEPS_PLUGINS geolocation" - else - AC_MSG_RESULT(no) - AC_MSG_ERROR("Plugin geolocation cannot be built; missing $dependencies_missing") - fi -else - DISABLED_PLUGINS="$DISABLED_PLUGINS geolocation" - AC_MSG_RESULT(no) -fi - AC_MSG_CHECKING([whether to build libravatar plugin]) if test x"$enable_libravatar_plugin" != xno; then dependencies_missing="" @@ -1881,7 +1852,6 @@ AM_CONDITIONAL(BUILD_DEMO_PLUGIN, test x"$enable_demo_plugin" != xno) AM_CONDITIONAL(BUILD_FANCY_PLUGIN, test x"$enable_fancy_plugin" != xno) AM_CONDITIONAL(BUILD_FETCHINFO_PLUGIN, test x"$enable_fetchinfo_plugin" != xno) AM_CONDITIONAL(BUILD_GDATA_PLUGIN, test x"$enable_gdata_plugin" != xno) -AM_CONDITIONAL(BUILD_GEOLOCATION_PLUGIN, test x"$enable_geolocation_plugin" != xno) AM_CONDITIONAL(BUILD_LIBRAVATAR_PLUGIN, test x"$enable_libravatar_plugin" != xno) AM_CONDITIONAL(BUILD_MAILMBOX_PLUGIN, test x"$enable_mailmbox_plugin" != xno) AM_CONDITIONAL(BUILD_MANAGESIEVE_PLUGIN, test x"$enable_managesieve_plugin" != xno) @@ -1930,7 +1900,6 @@ src/plugins/demo/Makefile src/plugins/fancy/Makefile src/plugins/fetchinfo/Makefile src/plugins/gdata/Makefile -src/plugins/geolocation/Makefile src/plugins/libravatar/Makefile src/plugins/mailmbox/Makefile src/plugins/managesieve/Makefile diff --git a/manual/es/plugins.xml b/manual/es/plugins.xml @@ -174,15 +174,6 @@ </listitem> </varlistentry> <varlistentry> - <term>GeoLocalización</term> - <listitem> - <para> - Proporciona funciones de localización geográfica a partir de las - direcciones IP contenidas en los mensajes. - </para> - </listitem> - </varlistentry> - <varlistentry> <term>Libravatar</term> <listitem> <para> diff --git a/manual/fr/plugins.xml b/manual/fr/plugins.xml @@ -166,15 +166,6 @@ </listitem> </varlistentry> <varlistentry> - <term>GeoLocation</term> - <listitem> - <para> - Fournit une géo-localisation basée sur les adresses IP contenues dans le - message. - </para> - </listitem> - </varlistentry> - <varlistentry> <term>Libravatar</term> <listitem> <para> diff --git a/manual/plugins.xml b/manual/plugins.xml @@ -164,15 +164,6 @@ </listitem> </varlistentry> <varlistentry> - <term>GeoLocation</term> - <listitem> - <para> - Provides geolocation functionality based on the IP addresses contained - in the messages. - </para> - </listitem> - </varlistentry> - <varlistentry> <term>Libravatar</term> <listitem> <para> diff --git a/po/POTFILES.in b/po/POTFILES.in @@ -109,7 +109,6 @@ src/plugins/fetchinfo/fetchinfo_plugin_gtk.c src/plugins/gdata/cm_gdata_contacts.c src/plugins/gdata/cm_gdata_prefs.c src/plugins/gdata/gdata_plugin.c -src/plugins/geolocation/geolocation_plugin.c src/plugins/libravatar/libravatar.c src/plugins/libravatar/libravatar_prefs.c src/plugins/mailmbox/mailmbox_folder.c diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am @@ -16,7 +16,6 @@ SUBDIRS = \ fancy \ fetchinfo \ gdata \ - geolocation \ libravatar \ mailmbox \ managesieve \ diff --git a/src/plugins/geolocation/Makefile.am b/src/plugins/geolocation/Makefile.am @@ -1,30 +0,0 @@ -# Copyright 1999-2014 the Claws Mail team. -# This file is part of Claws Mail package, and distributed under the -# terms of the General Public License version 3 (or later). -# See COPYING file for license details. - -plugindir = $(pkglibdir)/plugins - -if BUILD_GEOLOCATION_PLUGIN -plugin_LTLIBRARIES = geolocation.la -endif - -geolocation_la_SOURCES = \ - geolocation_plugin.c \ - pixmap_earth.h - -geolocation_la_LDFLAGS = \ - -avoid-version -module \ - $(GTK_LIBS) \ - $(LIBSOUP_LIBS) \ - $(CHAMPLAIN_LIBS) - -geolocation_la_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/common \ - -I$(top_builddir)/src/common \ - -I$(top_srcdir)/src/gtk \ - $(GLIB_CFLAGS) \ - $(GTK_CFLAGS) \ - $(LIBSOUP_CFLAGS) \ - $(CHAMPLAIN_CFLAGS) diff --git a/src/plugins/geolocation/earth.svg b/src/plugins/geolocation/earth.svg @@ -1,980 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - 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://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="48px" - height="48px" - id="svg3440" - sodipodi:version="0.32" - inkscape:version="0.42+devel" - sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps" - sodipodi:docname="internet-web-browser.svg"> - <defs - id="defs3"> - <linearGradient - id="linearGradient4750"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4752" /> - <stop - style="stop-color:#fefefe;stop-opacity:1.0000000;" - offset="0.37931034" - id="stop4758" /> - <stop - style="stop-color:#1d1d1d;stop-opacity:1.0000000;" - offset="1.0000000" - id="stop4754" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient4350"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4352" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4354" /> - </linearGradient> - <linearGradient - id="linearGradient4126"> - <stop - style="stop-color:#ffffff;stop-opacity:1.0000000;" - offset="0.0000000" - id="stop4128" /> - <stop - style="stop-color:#ffffff;stop-opacity:0.16494845;" - offset="1.0000000" - id="stop4130" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient4114"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4116" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop4118" /> - </linearGradient> - <linearGradient - id="linearGradient3962"> - <stop - style="stop-color:#d3e9ff;stop-opacity:1.0000000;" - offset="0.0000000" - id="stop3964" /> - <stop - style="stop-color:#d3e9ff;stop-opacity:1.0000000;" - offset="0.15517241" - id="stop4134" /> - <stop - style="stop-color:#4074ae;stop-opacity:1.0000000;" - offset="0.75000000" - id="stop4346" /> - <stop - style="stop-color:#36486c;stop-opacity:1.0000000;" - offset="1.0000000" - id="stop3966" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3962" - id="radialGradient3968" - gradientTransform="scale(0.999989,1.000011)" - cx="18.247644" - cy="15.716079" - fx="18.247644" - fy="15.716079" - r="29.993349" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4114" - id="radialGradient4120" - gradientTransform="scale(1.643990,0.608276)" - cx="15.115514" - cy="63.965388" - fx="15.115514" - fy="63.965388" - r="12.289036" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4126" - id="radialGradient4132" - gradientTransform="scale(0.999989,1.000011)" - cx="15.601279" - cy="12.142302" - fx="15.601279" - fy="12.142302" - r="43.526714" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4350" - id="radialGradient4356" - gradientTransform="scale(1.179536,0.847791)" - cx="11.826907" - cy="10.476453" - fx="11.826907" - fy="10.476453" - r="32.664848" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4750" - id="radialGradient4756" - gradientTransform="scale(1.036822,0.964486)" - cx="18.633780" - cy="17.486208" - fx="18.934305" - fy="17.810213" - r="40.692665" - gradientUnits="userSpaceOnUse" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1460" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1462" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1466" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1468" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1470" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1474" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1476" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1478" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1482" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1484" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1486" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1490" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1492" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1494" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1498" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1500" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1502" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1506" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1508" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1510" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1514" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1516" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1518" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1522" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1524" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1526" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1528" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1530" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1532" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1534" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1536" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1538" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1540" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1542" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1544" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1546" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1550" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1552" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1554" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - <radialGradient - r="40.692665" - fy="17.810213" - fx="18.934305" - cy="17.486208" - cx="18.633780" - gradientTransform="scale(1.036822,0.964486)" - gradientUnits="userSpaceOnUse" - id="radialGradient1558" - xlink:href="#linearGradient4750" - inkscape:collect="always" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="0.17254902" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="9.8994949" - inkscape:cx="25.799661" - inkscape:cy="24.622653" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - inkscape:window-width="770" - inkscape:window-height="695" - inkscape:window-x="472" - inkscape:window-y="167" - inkscape:showpageshadow="false" /> - <metadata - id="metadata4"> - <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>Globe</dc:title> - <dc:creator> - <cc:Agent> - <dc:title>Jakub Steiner</dc:title> - </cc:Agent> - </dc:creator> - <dc:contributor> - <cc:Agent> - <dc:title>Tuomas Kuosmanen</dc:title> - </cc:Agent> - </dc:contributor> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" /> - <dc:source>http://jimmac.musichall.cz</dc:source> - <dc:subject> - <rdf:Bag> - <rdf:li>globe</rdf:li> - <rdf:li>international</rdf:li> - <rdf:li>web</rdf:li> - <rdf:li>www</rdf:li> - <rdf:li>internet</rdf:li> - <rdf:li>network</rdf:li> - </rdf:Bag> - </dc:subject> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-sa/2.0/"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Notice" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Attribution" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <path - sodipodi:type="arc" - style="fill:url(#radialGradient4120);fill-opacity:1.0000000;stroke:none;stroke-opacity:1.0000000" - id="path4112" - sodipodi:cx="24.849752" - sodipodi:cy="38.908627" - sodipodi:rx="20.203051" - sodipodi:ry="7.4751287" - d="M 45.052803 38.908627 A 20.203051 7.4751287 0 1 1 4.6467018,38.908627 A 20.203051 7.4751287 0 1 1 45.052803 38.908627 z" - transform="matrix(1.000000,0.000000,0.000000,1.243244,0.000000,-10.27241)" /> - <path - style="fill:url(#radialGradient3968);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#39396c;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" - d="M 43.959853,23.485499 C 43.959853,34.195217 35.277750,42.877222 24.569505,42.877222 C 13.860279,42.877222 5.1786663,34.195119 5.1786663,23.485499 C 5.1786663,12.776272 13.860279,4.0951517 24.569505,4.0951517 C 35.277750,4.0951517 43.959853,12.776272 43.959853,23.485499 L 43.959853,23.485499 z " - id="path3214" /> - <path - sodipodi:type="arc" - style="opacity:0.42159382;fill:url(#radialGradient4356);fill-opacity:1.0000000;stroke:none;stroke-opacity:1.0000000" - id="path4348" - sodipodi:cx="17.778685" - sodipodi:cy="15.271057" - sodipodi:rx="12.929953" - sodipodi:ry="9.2934036" - d="M 30.708637 15.271057 A 12.929953 9.2934036 0 1 1 4.8487320,15.271057 A 12.929953 9.2934036 0 1 1 30.708637 15.271057 z" - transform="matrix(0.835938,0.000000,0.000000,1.000000,9.886868,0.000000)" /> - <g - id="g4136" - style="fill:#000000;fill-opacity:0.71345031;fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000" - transform="matrix(0.982371,0.000000,0.000000,0.982371,0.121079,0.232914)"> - <g - id="g4138"> - <g - id="g4142"> - <path - d="M 44.071300,20.714400 C 44.071300,20.977100 44.071300,20.714400 44.071300,20.714400 L 43.526400,21.331600 C 43.192400,20.938000 42.817400,20.607000 42.436600,20.261300 L 41.600700,20.384300 L 40.837000,19.521000 L 40.837000,20.589400 L 41.491300,21.084500 L 41.926800,21.577700 L 42.508800,20.919500 C 42.655300,21.193900 42.799800,21.468300 42.945300,21.742700 L 42.945300,22.565000 L 42.290000,23.305200 L 41.090800,24.128400 L 40.182600,25.034700 L 39.600600,24.374500 L 39.891600,23.634300 L 39.310500,22.976100 L 38.329100,20.878400 L 37.493200,19.933100 L 37.274400,20.179200 L 37.602500,21.372600 L 38.219700,22.071800 C 38.572200,23.089400 38.920900,24.062000 39.383800,25.034700 C 40.101600,25.034700 40.778300,24.958500 41.491200,24.868700 L 41.491200,25.444900 L 40.619100,27.584100 L 39.819300,28.488400 L 39.165000,29.888800 C 39.165000,30.656400 39.165000,31.424000 39.165000,32.191500 L 39.383800,33.097800 L 39.020500,33.508000 L 38.219700,34.002100 L 37.383800,34.701300 L 38.075200,35.482600 L 37.129900,36.306800 L 37.311500,36.840000 L 35.893500,38.445500 L 34.949200,38.445500 L 34.149400,38.939600 L 33.639600,38.939600 L 33.639600,38.281400 L 33.422800,36.963000 C 33.141500,36.136800 32.848600,35.316500 32.550700,34.496200 C 32.550700,33.890700 32.586800,33.291100 32.623000,32.685700 L 32.987300,31.863400 L 32.477500,30.875100 L 32.514600,29.517700 L 31.823200,28.736400 L 32.168900,27.605500 L 31.606400,26.967300 L 30.624000,26.967300 L 30.296900,26.597200 L 29.315500,27.214900 L 28.916100,26.761300 L 28.006900,27.543000 C 27.389700,26.843300 26.771500,26.144100 26.153400,25.444900 L 25.426800,23.716400 L 26.081100,22.730100 L 25.717800,22.319000 L 26.516600,20.425400 C 27.172900,19.609000 27.858400,18.825800 28.551800,18.039700 L 29.788100,17.710600 L 31.169000,17.546500 L 32.114300,17.793600 L 33.459000,19.150000 L 33.931700,18.615800 L 34.585000,18.533800 L 35.821300,18.944900 L 36.766600,18.944900 L 37.420900,18.368700 L 37.711900,17.957600 L 37.056600,17.546500 L 35.965800,17.464500 C 35.663100,17.044600 35.381800,16.603200 35.022400,16.230100 L 34.658100,16.394200 L 34.512600,17.464500 L 33.858300,16.724300 L 33.713800,15.900100 L 32.987200,15.325900 L 32.695200,15.325900 L 33.422700,16.148200 L 33.131700,16.888400 L 32.550600,17.052500 L 32.913900,16.312300 L 32.258600,15.984200 L 31.678500,15.326000 L 30.586700,15.572100 L 30.442200,15.900200 L 29.787900,16.312300 L 29.424600,17.217600 L 28.516400,17.669700 L 28.116000,17.217600 L 27.680500,17.217600 L 27.680500,15.736200 L 28.625800,15.242100 L 29.352400,15.242100 L 29.205900,14.666900 L 28.625800,14.090700 L 29.606300,13.884600 L 30.151200,13.268400 L 30.586700,12.527200 L 31.387500,12.527200 L 31.168700,11.952000 L 31.678500,11.622900 L 31.678500,12.281100 L 32.768300,12.527200 L 33.858100,11.622900 L 33.931300,11.210800 L 34.875600,10.553100 C 34.533800,10.595600 34.192000,10.626800 33.858000,10.717700 L 33.858000,9.9766000 L 34.221300,9.1538000 L 33.858000,9.1538000 L 33.059600,9.8940000 L 32.840800,10.305600 L 33.059600,10.882300 L 32.695300,11.868600 L 32.114200,11.539500 L 31.606400,10.964300 L 30.805600,11.539500 L 30.514600,10.223600 L 31.895500,9.3188000 L 31.895500,8.8247000 L 32.768500,8.2490000 L 34.149400,7.9194000 L 35.094700,8.2490000 L 36.838800,8.5781000 L 36.403300,9.0713000 L 35.458000,9.0713000 L 36.403300,10.058600 L 37.129900,9.2363000 L 37.350600,8.8745000 C 37.350600,8.8745000 40.137700,11.372500 41.730500,14.105000 C 43.323300,16.838400 44.071300,20.060100 44.071300,20.714400 z " - id="path4144" /> - </g> - </g> - <g - id="g4146"> - <g - id="g4150"> - <path - d="M 26.070300,9.2363000 L 25.997100,9.7295000 L 26.506900,10.058600 L 27.378000,9.4829000 L 26.942500,8.9892000 L 26.360500,9.3188000 L 26.070500,9.2363000" - id="path4152" /> - </g> - </g> - <g - id="g4154"> - <g - id="g4158"> - <path - d="M 26.870100,5.8633000 L 24.979500,5.1226000 L 22.799800,5.3692000 L 20.109400,6.1094000 L 19.600600,6.6035000 L 21.272500,7.7549000 L 21.272500,8.4131000 L 20.618200,9.0713000 L 21.491200,10.800300 L 22.071300,10.470200 L 22.799800,9.3188000 C 23.922800,8.9716000 24.929700,8.5781000 25.997100,8.0844000 L 26.870100,5.8632000" - id="path4160" /> - </g> - </g> - <g - id="g4162"> - <g - id="g4166"> - <path - d="M 28.833000,12.774900 L 28.542000,12.033700 L 28.032200,12.198700 L 28.178700,13.103000 L 28.833000,12.774900" - id="path4168" /> - </g> - </g> - <g - id="g4170"> - <g - id="g4174"> - <path - d="M 29.123000,12.608900 L 28.977500,13.597200 L 29.777300,13.432200 L 30.358400,12.857000 L 29.849600,12.362900 C 29.678700,11.907800 29.482400,11.483000 29.268500,11.046500 L 28.833000,11.046500 L 28.833000,11.539700 L 29.123000,11.868800 L 29.123000,12.609000" - id="path4176" /> - </g> - </g> - <g - id="g4178"> - <g - id="g4182"> - <path - d="M 18.365200,28.242200 L 17.783200,27.089900 L 16.692900,26.843300 L 16.111400,25.280800 L 14.657800,25.444900 L 13.422400,24.540600 L 12.113300,25.692000 L 12.113300,25.873600 C 11.717300,25.759300 11.230500,25.743700 10.877900,25.526900 L 10.586900,24.704600 L 10.586900,23.799300 L 9.7148000,23.881300 C 9.7876000,23.305100 9.8598000,22.729900 9.9331000,22.153800 L 9.4238000,22.153800 L 8.9155000,22.812000 L 8.4062000,23.058100 L 7.6791000,22.647900 L 7.6063000,21.742600 L 7.7518000,20.755300 L 8.8426000,19.933000 L 9.7147000,19.933000 L 9.8597000,19.438900 L 10.950000,19.685000 L 11.749800,20.673300 L 11.895300,19.026800 L 13.276600,17.875400 L 13.785400,16.641000 L 14.803000,16.229900 L 15.384500,15.407600 L 16.692600,15.159600 L 17.347400,14.173300 C 16.693100,14.173300 16.038800,14.173300 15.384500,14.173300 L 16.620300,13.597100 L 17.491900,13.597100 L 18.728200,13.185000 L 18.873700,12.692800 L 18.437200,12.280700 L 17.928400,12.115700 L 18.073900,11.622500 L 17.710600,10.882300 L 16.838000,11.210400 L 16.983500,10.552700 L 15.965900,9.9765000 L 15.166600,11.374400 L 15.238900,11.868500 L 14.439600,12.198600 L 13.930300,13.267900 L 13.712500,12.280600 L 12.331200,11.704400 L 12.112900,10.964200 L 13.930300,9.8939000 L 14.730100,9.1537000 L 14.802900,8.2489000 L 14.366900,8.0018000 L 13.785400,7.9193000 L 13.422100,8.8246000 C 13.422100,8.8246000 12.814200,8.9437000 12.657900,8.9823000 C 10.661800,10.821700 6.6286000,14.792400 5.6916000,22.288500 C 5.7287000,22.462300 6.3708000,23.470100 6.3708000,23.470100 L 7.8972000,24.374400 L 9.4236000,24.786500 L 10.078400,25.609700 L 11.095500,26.349900 L 11.677000,26.267900 L 12.113000,26.464200 L 12.113000,26.597000 L 11.531900,28.160000 L 11.095400,28.818200 L 11.240900,29.148300 L 10.877600,30.380700 L 12.186200,32.767400 L 13.494300,33.919700 L 14.076300,34.742000 L 14.003100,36.470500 L 14.439600,37.456800 L 14.003100,39.349400 C 14.003100,39.349400 13.968900,39.337700 14.024600,39.527100 C 14.080800,39.716600 16.353700,40.978300 16.498200,40.870900 C 16.642200,40.761500 16.765300,40.665800 16.765300,40.665800 L 16.620300,40.255600 L 17.201400,39.679400 L 17.419700,39.103200 L 18.365000,38.773100 L 19.091600,36.962600 L 18.873800,36.470400 L 19.381600,35.730200 L 20.472400,35.482200 L 21.054400,34.165800 L 20.908900,32.521300 L 21.781000,31.286900 L 21.926500,30.052500 C 20.733100,29.460700 19.549500,28.851300 18.365000,28.242000" - id="path4184" /> - </g> - </g> - <g - id="g4186"> - <g - id="g4190"> - <path - d="M 16.765600,9.5649000 L 17.492200,10.058600 L 18.074200,10.058600 L 18.074200,9.4829000 L 17.347600,9.1538000 L 16.765600,9.5649000" - id="path4192" /> - </g> - </g> - <g - id="g4194"> - <g - id="g4198"> - <path - d="M 14.876000,8.9072000 L 14.512200,9.8120000 L 15.239300,9.8120000 L 15.603100,8.9892000 C 15.916600,8.7675000 16.228600,8.5444000 16.547900,8.3310000 L 17.275000,8.5781000 C 17.759400,8.9072000 18.243800,9.2363000 18.728600,9.5649000 L 19.456100,8.9072000 L 18.655800,8.5781000 L 18.292000,7.8374000 L 16.911100,7.6728000 L 16.838300,7.2612000 L 16.184000,7.4262000 L 15.893600,8.0020000 L 15.529800,7.2613000 L 15.384800,7.5904000 L 15.457600,8.4132000 L 14.876000,8.9072000" - id="path4200" /> - </g> - </g> - <g - id="g4202"> - <g - style="opacity:0.75000000" - id="g4204"> - <path - id="path4206" - d="" /> - </g> - <g - id="g4208"> - <path - id="path4210" - d="" /> - </g> - </g> - <g - id="g4212"> - <g - style="opacity:0.75000000" - id="g4214"> - <path - id="path4216" - d="" /> - </g> - <g - id="g4218"> - <path - id="path4220" - d="" /> - </g> - </g> - <g - id="g4222"> - <g - id="g4226"> - <path - d="M 17.492200,6.8496000 L 17.856000,6.5210000 L 18.583100,6.3564000 C 19.081100,6.1142000 19.581100,5.9511000 20.109500,5.7802000 L 19.819500,5.2865000 L 18.881000,5.4213000 L 18.437600,5.8632000 L 17.706600,5.9692000 L 17.056700,6.2744000 L 16.740800,6.4272000 L 16.547900,6.6855000 L 17.492200,6.8496000" - id="path4228" /> - </g> - </g> - <g - id="g4230"> - <g - id="g4234"> - <path - d="M 18.728500,14.666500 L 19.165000,14.008300 L 18.510200,13.515100 L 18.728500,14.666500" - id="path4236" /> - </g> - </g> - </g> - <g - id="g3216" - style="color:#000000;fill:url(#radialGradient1460);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0179454;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" - transform="matrix(0.982371,0.000000,0.000000,0.982371,-8.095179e-2,3.088300e-2)"> - <g - id="g3218" - style="color:#000000;fill:url(#radialGradient1462);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3222" - style="color:#000000;fill:url(#radialGradient1466);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 44.071300,20.714400 C 44.071300,20.977100 44.071300,20.714400 44.071300,20.714400 L 43.526400,21.331600 C 43.192400,20.938000 42.817400,20.607000 42.436600,20.261300 L 41.600700,20.384300 L 40.837000,19.521000 L 40.837000,20.589400 L 41.491300,21.084500 L 41.926800,21.577700 L 42.508800,20.919500 C 42.655300,21.193900 42.799800,21.468300 42.945300,21.742700 L 42.945300,22.565000 L 42.290000,23.305200 L 41.090800,24.128400 L 40.182600,25.034700 L 39.600600,24.374500 L 39.891600,23.634300 L 39.310500,22.976100 L 38.329100,20.878400 L 37.493200,19.933100 L 37.274400,20.179200 L 37.602500,21.372600 L 38.219700,22.071800 C 38.572200,23.089400 38.920900,24.062000 39.383800,25.034700 C 40.101600,25.034700 40.778300,24.958500 41.491200,24.868700 L 41.491200,25.444900 L 40.619100,27.584100 L 39.819300,28.488400 L 39.165000,29.888800 C 39.165000,30.656400 39.165000,31.424000 39.165000,32.191500 L 39.383800,33.097800 L 39.020500,33.508000 L 38.219700,34.002100 L 37.383800,34.701300 L 38.075200,35.482600 L 37.129900,36.306800 L 37.311500,36.840000 L 35.893500,38.445500 L 34.949200,38.445500 L 34.149400,38.939600 L 33.639600,38.939600 L 33.639600,38.281400 L 33.422800,36.963000 C 33.141500,36.136800 32.848600,35.316500 32.550700,34.496200 C 32.550700,33.890700 32.586800,33.291100 32.623000,32.685700 L 32.987300,31.863400 L 32.477500,30.875100 L 32.514600,29.517700 L 31.823200,28.736400 L 32.168900,27.605500 L 31.606400,26.967300 L 30.624000,26.967300 L 30.296900,26.597200 L 29.315500,27.214900 L 28.916100,26.761300 L 28.006900,27.543000 C 27.389700,26.843300 26.771500,26.144100 26.153400,25.444900 L 25.426800,23.716400 L 26.081100,22.730100 L 25.717800,22.319000 L 26.516600,20.425400 C 27.172900,19.609000 27.858400,18.825800 28.551800,18.039700 L 29.788100,17.710600 L 31.169000,17.546500 L 32.114300,17.793600 L 33.459000,19.150000 L 33.931700,18.615800 L 34.585000,18.533800 L 35.821300,18.944900 L 36.766600,18.944900 L 37.420900,18.368700 L 37.711900,17.957600 L 37.056600,17.546500 L 35.965800,17.464500 C 35.663100,17.044600 35.381800,16.603200 35.022400,16.230100 L 34.658100,16.394200 L 34.512600,17.464500 L 33.858300,16.724300 L 33.713800,15.900100 L 32.987200,15.325900 L 32.695200,15.325900 L 33.422700,16.148200 L 33.131700,16.888400 L 32.550600,17.052500 L 32.913900,16.312300 L 32.258600,15.984200 L 31.678500,15.326000 L 30.586700,15.572100 L 30.442200,15.900200 L 29.787900,16.312300 L 29.424600,17.217600 L 28.516400,17.669700 L 28.116000,17.217600 L 27.680500,17.217600 L 27.680500,15.736200 L 28.625800,15.242100 L 29.352400,15.242100 L 29.205900,14.666900 L 28.625800,14.090700 L 29.606300,13.884600 L 30.151200,13.268400 L 30.586700,12.527200 L 31.387500,12.527200 L 31.168700,11.952000 L 31.678500,11.622900 L 31.678500,12.281100 L 32.768300,12.527200 L 33.858100,11.622900 L 33.931300,11.210800 L 34.875600,10.553100 C 34.533800,10.595600 34.192000,10.626800 33.858000,10.717700 L 33.858000,9.9766000 L 34.221300,9.1538000 L 33.858000,9.1538000 L 33.059600,9.8940000 L 32.840800,10.305600 L 33.059600,10.882300 L 32.695300,11.868600 L 32.114200,11.539500 L 31.606400,10.964300 L 30.805600,11.539500 L 30.514600,10.223600 L 31.895500,9.3188000 L 31.895500,8.8247000 L 32.768500,8.2490000 L 34.149400,7.9194000 L 35.094700,8.2490000 L 36.838800,8.5781000 L 36.403300,9.0713000 L 35.458000,9.0713000 L 36.403300,10.058600 L 37.129900,9.2363000 L 37.350600,8.8745000 C 37.350600,8.8745000 40.137700,11.372500 41.730500,14.105000 C 43.323300,16.838400 44.071300,20.060100 44.071300,20.714400 z " - id="path3224" - style="color:#000000;fill:url(#radialGradient1468);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3226" - style="color:#000000;fill:url(#radialGradient1470);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3230" - style="color:#000000;fill:url(#radialGradient1474);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 26.070300,9.2363000 L 25.997100,9.7295000 L 26.506900,10.058600 L 27.378000,9.4829000 L 26.942500,8.9892000 L 26.360500,9.3188000 L 26.070500,9.2363000" - id="path3232" - style="color:#000000;fill:url(#radialGradient1476);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3234" - style="color:#000000;fill:url(#radialGradient1478);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3238" - style="color:#000000;fill:url(#radialGradient1482);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 26.870100,5.8633000 L 24.979500,5.1226000 L 22.799800,5.3692000 L 20.109400,6.1094000 L 19.600600,6.6035000 L 21.272500,7.7549000 L 21.272500,8.4131000 L 20.618200,9.0713000 L 21.491200,10.800300 L 22.071300,10.470200 L 22.799800,9.3188000 C 23.922800,8.9716000 24.929700,8.5781000 25.997100,8.0844000 L 26.870100,5.8632000" - id="path3240" - style="color:#000000;fill:url(#radialGradient1484);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3242" - style="color:#000000;fill:url(#radialGradient1486);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3246" - style="color:#000000;fill:url(#radialGradient1490);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 28.833000,12.774900 L 28.542000,12.033700 L 28.032200,12.198700 L 28.178700,13.103000 L 28.833000,12.774900" - id="path3248" - style="color:#000000;fill:url(#radialGradient1492);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3250" - style="color:#000000;fill:url(#radialGradient1494);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3254" - style="color:#000000;fill:url(#radialGradient1498);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 29.123000,12.608900 L 28.977500,13.597200 L 29.777300,13.432200 L 30.358400,12.857000 L 29.849600,12.362900 C 29.678700,11.907800 29.482400,11.483000 29.268500,11.046500 L 28.833000,11.046500 L 28.833000,11.539700 L 29.123000,11.868800 L 29.123000,12.609000" - id="path3256" - style="color:#000000;fill:url(#radialGradient1500);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3258" - style="color:#000000;fill:url(#radialGradient1502);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3262" - style="color:#000000;fill:url(#radialGradient1506);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 18.365200,28.242200 L 17.783200,27.089900 L 16.692900,26.843300 L 16.111400,25.280800 L 14.657800,25.444900 L 13.422400,24.540600 L 12.113300,25.692000 L 12.113300,25.873600 C 11.717300,25.759300 11.230500,25.743700 10.877900,25.526900 L 10.586900,24.704600 L 10.586900,23.799300 L 9.7148000,23.881300 C 9.7876000,23.305100 9.8598000,22.729900 9.9331000,22.153800 L 9.4238000,22.153800 L 8.9155000,22.812000 L 8.4062000,23.058100 L 7.6791000,22.647900 L 7.6063000,21.742600 L 7.7518000,20.755300 L 8.8426000,19.933000 L 9.7147000,19.933000 L 9.8597000,19.438900 L 10.950000,19.685000 L 11.749800,20.673300 L 11.895300,19.026800 L 13.276600,17.875400 L 13.785400,16.641000 L 14.803000,16.229900 L 15.384500,15.407600 L 16.692600,15.159600 L 17.347400,14.173300 C 16.693100,14.173300 16.038800,14.173300 15.384500,14.173300 L 16.620300,13.597100 L 17.491900,13.597100 L 18.728200,13.185000 L 18.873700,12.692800 L 18.437200,12.280700 L 17.928400,12.115700 L 18.073900,11.622500 L 17.710600,10.882300 L 16.838000,11.210400 L 16.983500,10.552700 L 15.965900,9.9765000 L 15.166600,11.374400 L 15.238900,11.868500 L 14.439600,12.198600 L 13.930300,13.267900 L 13.712500,12.280600 L 12.331200,11.704400 L 12.112900,10.964200 L 13.930300,9.8939000 L 14.730100,9.1537000 L 14.802900,8.2489000 L 14.366900,8.0018000 L 13.785400,7.9193000 L 13.422100,8.8246000 C 13.422100,8.8246000 12.814200,8.9437000 12.657900,8.9823000 C 10.661800,10.821700 6.6286000,14.792400 5.6916000,22.288500 C 5.7287000,22.462300 6.3708000,23.470100 6.3708000,23.470100 L 7.8972000,24.374400 L 9.4236000,24.786500 L 10.078400,25.609700 L 11.095500,26.349900 L 11.677000,26.267900 L 12.113000,26.464200 L 12.113000,26.597000 L 11.531900,28.160000 L 11.095400,28.818200 L 11.240900,29.148300 L 10.877600,30.380700 L 12.186200,32.767400 L 13.494300,33.919700 L 14.076300,34.742000 L 14.003100,36.470500 L 14.439600,37.456800 L 14.003100,39.349400 C 14.003100,39.349400 13.968900,39.337700 14.024600,39.527100 C 14.080800,39.716600 16.353700,40.978300 16.498200,40.870900 C 16.642200,40.761500 16.765300,40.665800 16.765300,40.665800 L 16.620300,40.255600 L 17.201400,39.679400 L 17.419700,39.103200 L 18.365000,38.773100 L 19.091600,36.962600 L 18.873800,36.470400 L 19.381600,35.730200 L 20.472400,35.482200 L 21.054400,34.165800 L 20.908900,32.521300 L 21.781000,31.286900 L 21.926500,30.052500 C 20.733100,29.460700 19.549500,28.851300 18.365000,28.242000" - id="path3264" - style="color:#000000;fill:url(#radialGradient1508);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3266" - style="color:#000000;fill:url(#radialGradient1510);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3270" - style="color:#000000;fill:url(#radialGradient1514);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 16.765600,9.5649000 L 17.492200,10.058600 L 18.074200,10.058600 L 18.074200,9.4829000 L 17.347600,9.1538000 L 16.765600,9.5649000" - id="path3272" - style="color:#000000;fill:url(#radialGradient1516);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3274" - style="color:#000000;fill:url(#radialGradient1518);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3278" - style="color:#000000;fill:url(#radialGradient1522);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 14.876000,8.9072000 L 14.512200,9.8120000 L 15.239300,9.8120000 L 15.603100,8.9892000 C 15.916600,8.7675000 16.228600,8.5444000 16.547900,8.3310000 L 17.275000,8.5781000 C 17.759400,8.9072000 18.243800,9.2363000 18.728600,9.5649000 L 19.456100,8.9072000 L 18.655800,8.5781000 L 18.292000,7.8374000 L 16.911100,7.6728000 L 16.838300,7.2612000 L 16.184000,7.4262000 L 15.893600,8.0020000 L 15.529800,7.2613000 L 15.384800,7.5904000 L 15.457600,8.4132000 L 14.876000,8.9072000" - id="path3280" - style="color:#000000;fill:url(#radialGradient1524);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3282" - style="color:#000000;fill:url(#radialGradient1526);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - style="opacity:0.75000000;color:#000000;fill:url(#radialGradient1528);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" - id="g3284"> - <path - d="" - style="color:#000000;fill:url(#radialGradient1530);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" - id="path3286" /> - </g> - <g - id="g3288" - style="color:#000000;fill:url(#radialGradient1532);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="" - id="path3290" - style="color:#000000;fill:url(#radialGradient1534);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3292" - style="color:#000000;fill:url(#radialGradient1536);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - style="opacity:0.75000000;color:#000000;fill:url(#radialGradient1538);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" - id="g3294"> - <path - d="" - style="color:#000000;fill:url(#radialGradient1540);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" - id="path3296" /> - </g> - <g - id="g3298" - style="color:#000000;fill:url(#radialGradient1542);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="" - id="path3300" - style="color:#000000;fill:url(#radialGradient1544);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3302" - style="color:#000000;fill:url(#radialGradient1546);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3306" - style="color:#000000;fill:url(#radialGradient1550);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 17.492200,6.8496000 L 17.856000,6.5210000 L 18.583100,6.3564000 C 19.081100,6.1142000 19.581100,5.9511000 20.109500,5.7802000 L 19.819500,5.2865000 L 18.881000,5.4213000 L 18.437600,5.8632000 L 17.706600,5.9692000 L 17.056700,6.2744000 L 16.740800,6.4272000 L 16.547900,6.6855000 L 17.492200,6.8496000" - id="path3308" - style="color:#000000;fill:url(#radialGradient1552);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - <g - id="g3310" - style="color:#000000;fill:url(#radialGradient1554);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <g - id="g3314" - style="color:#000000;fill:url(#radialGradient1558);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"> - <path - d="M 18.728500,14.666500 L 19.165000,14.008300 L 18.510200,13.515100 L 18.728500,14.666500" - id="path3316" - style="color:#000000;fill:url(#radialGradient4756);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" /> - </g> - </g> - </g> - <path - style="fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient4132);stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" - d="M 42.975093,23.485534 C 42.975093,33.651354 34.733915,41.892440 24.569493,41.892440 C 14.404139,41.892440 6.1634261,33.651261 6.1634261,23.485534 C 6.1634261,13.320180 14.404139,5.0799340 24.569493,5.0799340 C 34.733915,5.0799340 42.975093,13.320180 42.975093,23.485534 L 42.975093,23.485534 z " - id="path4122" /> - </g> -</svg> diff --git a/src/plugins/geolocation/geolocation_plugin.c b/src/plugins/geolocation/geolocation_plugin.c @@ -1,903 +0,0 @@ -/* GeoLocation plugin for Claws-Mail - * Copyright (C) 2009 Holger Berndt - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -# include "claws-features.h" -#endif - -#include <glib.h> -#include <glib/gi18n.h> - -#include <gtk/gtk.h> -#include <gdk-pixbuf/gdk-pixbuf.h> - -#include "pixmap_earth.h" - -#include "common/plugin.h" -#include "common/version.h" -#include "common/utils.h" -#include "common/hooks.h" -#include "prefs_common.h" -#include "mimeview.h" -#include "procheader.h" -#include "main.h" - -#include <libsoup/soup.h> - -#include <champlain/champlain.h> -#include <champlain-gtk/champlain-gtk.h> -#include <clutter-gtk/clutter-gtk.h> - -#include <string.h> - - -/* For now, make extracting the ip address string from the Received header - * as simple as possible. This should be made more accurate, some day. - * Logic: - * Find four 1-3 digit numbers, separated by dots, encosed in word boundaries, - * where the word "from" must be ahead, and the word "by" must follow, but must - * not be between the "from" and the digits. - * The result will be in backreference 2, the individual numbers in 3 to 6 */ -#define EXTRACT_IP_FROM_RECEIVED_HEADER_REGEX "\\bfrom\\b((?!\\bby\\b).)*(\\b(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\b).*\\bby\\b" - -#define EXTRACT_LAT_LON_FROM_HOSTIP_RESPONSE_REGEX "<gml:coordinates>(-?[\\d.]+),(-?[\\d.]+)</gml:coordinates>" - -#define GEOLOCATION_CONTAINER_NAME "cm_geolocation_container" -#define GEOLOCATION_CONTAINER_DATA_TOGGLEBUTTON "togglebutton" -#define GEOLOCATION_CONTAINER_DATA_LABEL "label" - -#define GEOLOCATION_TOGGLE_BUTTON_DATA_CB_ID "toggled_cb_id" -#define GEOLOCATION_TOGGLE_BUTTON_DATA_IP "ip" - -#define GEOLOCATION_NOTEBOOK_DATA_MAPWIDGET "mapwidget" - -#define GEOLOCATION_MAP_DATA_VIEW "view" -#define GEOLOCATION_MAP_DATA_ORIGIN_MARKER "originmarker" - -#define BUFFSIZE 8192 - -#define HOSTIP_URL "http://api.hostip.info/" - -#define COUNTRY_RESOLVER_SUFFIX "zz.countries.nerd.dk" - - -static gboolean my_messageview_show_hook(gpointer, gpointer); -static guint hook_messageview_show; - -static GRegex *ip_from_received_header_regex = NULL; -static GRegex *lat_lon_from_hostip_response_regex = NULL; - -static GSList *container_list = NULL; - -static GHashTable *iso_country_hash = NULL; - -static gchar* get_ip_from_received_header(gchar *received) -{ - GMatchInfo *match_info; - gchar *ip; - gchar *n1; - - g_regex_match(ip_from_received_header_regex, received, 0, &match_info); - ip = g_match_info_fetch(match_info, 2); - - if (ip) { - /* check for loopback and local subnetworks */ - if(!strcmp(ip, "127.0.0.1")) { - g_free(ip); - ip = NULL; - } - else { - n1 = g_match_info_fetch(match_info, 3); - if(n1) { - /* 10.x.x.x */ - if(!strcmp(n1, "10")) { - g_free(ip); - ip = NULL; - } - /* 192.168.x.x */ - else if(!strcmp(n1, "192")) { - gchar *n2; - n2 = g_match_info_fetch(match_info, 4); - if(n2 && !strcmp(n2, "168")) { - g_free(ip); - ip = NULL; - } - } - /* 172.16.xx to 172.31.x.x */ - else if(!strcmp(n1, "172")) { - gchar *n2; - int i2; - n2 = g_match_info_fetch(match_info, 4); - if(n2) { - i2 = atoi(n2); - if((i2 >= 16) && (i2 <= 31)) { - g_free(ip); - ip = NULL; - } - } - } - } - } - } - - g_match_info_free(match_info); - return ip; -} - -enum { - H_RECEIVED = 0 -}; - -static HeaderEntry hentry[] = { - {"Received:", NULL, TRUE}, - {NULL, NULL, FALSE}}; - -static gchar* get_ip_from_msginfo(MsgInfo *msginfo) -{ - gchar *file; - GStatBuf ss; - FILE *fp; - gchar buf[BUFFSIZE]; - gint hnum; - gchar *hp; - gchar *ip; - gchar *new_ip; - - file = procmsg_get_message_file_path(msginfo); - g_return_val_if_fail(file, NULL); - - if(g_stat(file, &ss) < 0) { - FILE_OP_ERROR(file, "stat"); - return NULL; - } - if(!S_ISREG(ss.st_mode)) { - g_warning("mail file is not a regular file"); - return NULL; - } - - if((fp = g_fopen(file, "rb")) == NULL) { - FILE_OP_ERROR(file, "fopen"); - return NULL; - } - - ip = NULL; - new_ip = NULL; - while((hnum = procheader_get_one_field(buf, sizeof(buf), fp, hentry)) != -1) { - switch(hnum) { - case H_RECEIVED: - hp = buf + strlen(hentry[hnum].name); - while(*hp == ' ' || *hp == '\t') hp++; - new_ip = get_ip_from_received_header(hp); - if(new_ip) { - g_free(ip); - ip = new_ip; - } - break; - default: - break; - } - } - - fclose(fp); - - g_free(file); - return ip; -} - -/* inspired by GeoClue */ -static gboolean get_lat_lon_from_ip(const gchar *ip, double *lat, double *lon) -{ - gchar *url; - GMatchInfo *match_info; - gchar *slat; - gchar *slon; - SoupSession *session; - SoupMessage *msg; - - /* fetch data from hostip.info */ - url = g_strdup_printf("%s?ip=%s", HOSTIP_URL, ip); - session = soup_session_async_new(); - msg = soup_message_new(SOUP_METHOD_GET, url); - g_free(url); - - soup_session_send_message(session, msg); - g_object_unref(session); - if(!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code) || !msg->response_body->data) - return FALSE; - - /* extract longitude and latitude from */ - g_regex_match(lat_lon_from_hostip_response_regex, msg->response_body->data, 0, &match_info); - g_object_unref(msg); - slon = g_match_info_fetch(match_info, 1); - slat = g_match_info_fetch(match_info, 2); - g_match_info_free(match_info); - - if(!slat || !slon) - return FALSE; - - *lat = g_ascii_strtod(slat, NULL); - *lon = g_ascii_strtod(slon, NULL); - - return TRUE; -} - -/* try to look up country */ -static const gchar* get_country_from_ip(const gchar *ip) -{ - gchar **tok; - gchar *uri; - SoupAddress *addr; - const gchar *val = NULL; - - tok = g_strsplit_set(ip, ".", 4); - if(!(tok[0] && tok[1] && tok[2] && tok[3] && !tok[4])) { - g_strfreev(tok); - debug_print("GeoLocation plugin: Error parsing ip address '%s'\n", ip); - return NULL; - } - uri = g_strjoin(".", tok[3], tok[2], tok[1], tok[0], COUNTRY_RESOLVER_SUFFIX, NULL); - g_strfreev(tok); - - addr = soup_address_new(uri, SOUP_ADDRESS_ANY_PORT); - g_free(uri); - - if(soup_address_resolve_sync(addr, NULL) == SOUP_STATUS_OK) { - const gchar *physical = soup_address_get_physical(addr); - val = g_hash_table_lookup(iso_country_hash, physical); - } - - g_object_unref(addr); - return val; -} - -static GtkWidget* create_map_widget() -{ - GtkWidget *map; - ChamplainLayer *layer; - ChamplainView *view; - ClutterActor *origin_marker; - ClutterColor orange = { 0xf3, 0x94, 0x07, 0xbb }; - - /* create map widget */ - map = gtk_champlain_embed_new(); - view = gtk_champlain_embed_get_view(GTK_CHAMPLAIN_EMBED(map)); - g_object_set(G_OBJECT(view), "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC, "zoom-level", 8, NULL); - - /* mail origin marker */ - layer = champlain_layer_new(); - origin_marker = champlain_marker_new_with_text("mail origin", "Serif 14", NULL, NULL); - champlain_marker_set_color(CHAMPLAIN_MARKER(origin_marker), &orange); - clutter_container_add(CLUTTER_CONTAINER(layer), origin_marker, NULL); - champlain_view_add_layer(view, layer); - - clutter_actor_show(CLUTTER_ACTOR(view)); - clutter_actor_show(CLUTTER_ACTOR(layer)); - clutter_actor_show(origin_marker); - - g_object_set_data(G_OBJECT(map), GEOLOCATION_MAP_DATA_VIEW, view); - g_object_set_data(G_OBJECT(map), GEOLOCATION_MAP_DATA_ORIGIN_MARKER, origin_marker); - - return map; -} - -static int get_notebook_map_page_num(GtkWidget *notebook) -{ - GtkWidget *wid; - int page_num = 0; - - wid = g_object_get_data(G_OBJECT(notebook), GEOLOCATION_NOTEBOOK_DATA_MAPWIDGET); - - if(!wid) { - /* create page */ - GtkWidget *map; - map = create_map_widget(); - page_num = gtk_notebook_append_page(GTK_NOTEBOOK(notebook), map, NULL); - gtk_widget_show_all(map); - if(page_num == -1) - page_num = 0; - else - g_object_set_data(G_OBJECT(notebook), GEOLOCATION_NOTEBOOK_DATA_MAPWIDGET, map); - } - else { - /* find page */ - page_num = gtk_notebook_page_num(GTK_NOTEBOOK(notebook), wid); - if(page_num == -1) - page_num = 0; - } - - return page_num; -} - -static void geolocation_button_toggled_cb(GtkToggleButton *button, gpointer data) -{ - if(gtk_toggle_button_get_active(button)) { - gchar *ip; - double lat, lon; - gchar *text = NULL; - GtkWidget *container, *label; - - ip = g_object_get_data(G_OBJECT(button), GEOLOCATION_TOGGLE_BUTTON_DATA_IP); - container = gtk_widget_get_parent(GTK_WIDGET(button)); - g_return_if_fail(container); - label = g_object_get_data(G_OBJECT(container), GEOLOCATION_CONTAINER_DATA_LABEL); - g_return_if_fail(label); - - if(ip && get_lat_lon_from_ip(ip, &lat, &lon)) { - GtkWidget *notebook; - GtkWidget *map; - MessageView *messageview; - ClutterActor *view; - ClutterActor *origin_marker; - gint page_num; - - /* TRANSLATORS: The two numbers are latitude and longitude coordinates */ - text = g_strdup_printf(_("Found location: (%.2f,%.2f)"), lat, lon); - gtk_label_set_text(GTK_LABEL(label), text); - debug_print("%s\n", text); - - /* switch to map widget, and center on found location */ - messageview = data; - notebook = messageview->mimeview->mime_notebook; - page_num = get_notebook_map_page_num(notebook); - map = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_num); - view = g_object_get_data(G_OBJECT(map), GEOLOCATION_MAP_DATA_VIEW); - origin_marker = g_object_get_data(G_OBJECT(map), GEOLOCATION_MAP_DATA_ORIGIN_MARKER); - champlain_view_center_on(CHAMPLAIN_VIEW(view), lat, lon); - champlain_base_marker_set_position(CHAMPLAIN_BASE_MARKER(origin_marker), lat, lon); - gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), page_num); - } - else { - const char *country; - - if(ip && ((country = get_country_from_ip(ip)) != NULL)) { - /* TRANSLATORS: The country name is appended to the string */ - text = g_strconcat(_("Alleged country of origin: "), country, NULL); - } - else { - /* TRANSLATORS: The IP address is appended to the string */ - text = g_strconcat(_("Could not resolve location of IP address "), ip, NULL); - } - gtk_label_set_text(GTK_LABEL(label), text); - debug_print("%s\n", text); - gtk_toggle_button_set_active(button, FALSE); - } - g_free(text); - } - else { - /* swich to first notebook page */ - MessageView *messageview; - messageview = data; - gtk_notebook_set_current_page(GTK_NOTEBOOK(messageview->mimeview->mime_notebook), 0); - } -} - -static void container_finalize_cb(gpointer data, GObject *where_the_object_was) -{ - container_list = g_slist_remove(container_list, where_the_object_was); -} - -static GtkWidget* get_geolocation_container_from_messageview(MessageView *messageview) -{ - GtkWidget *container = NULL; - GtkWidget *vbox; - GList *children, *walk; - GtkWidget *button; - gulong *cb_id; - - g_return_val_if_fail(messageview && messageview->mimeview && messageview->mimeview->paned, NULL); - - vbox = gtk_paned_get_child2(GTK_PANED(messageview->mimeview->paned)); - - /* check if there is already a geolocation container */ - children = gtk_container_get_children(GTK_CONTAINER(vbox)); - for(walk = children; walk; walk = walk->next) { - GtkWidget *child = walk->data; - if(!strcmp(gtk_widget_get_name(child), GEOLOCATION_CONTAINER_NAME)) { - container = child; - break; - } - } - g_list_free(children); - - /* if not, create one */ - if(!container) { - GtkWidget *label; - GtkWidget *image; - GdkPixbuf *pixbuf, *scaled_pixbuf; - - container = gtk_hbox_new(FALSE, 0); - gtk_widget_set_name(container, GEOLOCATION_CONTAINER_NAME); - - /* button */ - pixbuf = gdk_pixbuf_new_from_inline(-1, pixmap_earth, FALSE, NULL); - scaled_pixbuf = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR); - g_object_unref(pixbuf); - image = gtk_image_new_from_pixbuf(scaled_pixbuf); - gtk_widget_show(image); - g_object_unref(scaled_pixbuf); - button = gtk_toggle_button_new(); - gtk_widget_show(button); - gtk_container_add(GTK_CONTAINER(button), image); - gtk_box_pack_start(GTK_BOX(container), button, FALSE, FALSE, 0); - g_object_set_data(G_OBJECT(container), GEOLOCATION_CONTAINER_DATA_TOGGLEBUTTON, button); - - /* label */ - label = gtk_label_new(""); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(container), label, FALSE, FALSE, 2); - g_object_set_data(G_OBJECT(container), GEOLOCATION_CONTAINER_DATA_LABEL, label); - - gtk_box_pack_start(GTK_BOX(vbox), container, FALSE, FALSE, 0); - - /* add new container to list */ - container_list = g_slist_prepend(container_list, container); - g_object_weak_ref(G_OBJECT(container), container_finalize_cb, NULL); - } - /* if it existed, changed the button callback data */ - else { - /* disconnect old signal handler from button */ - gulong *id; - button = g_object_get_data(G_OBJECT(container), GEOLOCATION_CONTAINER_DATA_TOGGLEBUTTON); - g_return_val_if_fail(button, NULL); - id = g_object_get_data(G_OBJECT(button), GEOLOCATION_TOGGLE_BUTTON_DATA_CB_ID); - g_signal_handler_disconnect(button, *id); - } - - /* connect new signal handler to button, and store its id */ - cb_id = g_new(gulong, 1); - *cb_id = g_signal_connect(button, "toggled", G_CALLBACK(geolocation_button_toggled_cb), messageview); - g_object_set_data_full(G_OBJECT(button), GEOLOCATION_TOGGLE_BUTTON_DATA_CB_ID, cb_id, g_free); - - return container; -} - -static gboolean my_messageview_show_hook(gpointer source, gpointer data) -{ - MessageView *messageview; - GtkWidget *container; - GtkWidget *button; - gchar *ip; - - messageview = source; - - g_return_val_if_fail(messageview, FALSE); - - container = get_geolocation_container_from_messageview(messageview); - g_return_val_if_fail(container, FALSE); - - /* make sure toggle button is turned off */ - button = g_object_get_data(G_OBJECT(container), GEOLOCATION_CONTAINER_DATA_TOGGLEBUTTON); - g_return_val_if_fail(button, FALSE); - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE); - } - - /* do nothing except hiding the button if claws mail is in offline mode */ - if(prefs_common_get_prefs()->work_offline) { - gtk_widget_hide(container); - return FALSE; - } - - /* try to get ip address from message */ - if(!messageview->msginfo) { - debug_print("Warning: Messageview does not have a MsgInfo\n"); - return FALSE; - } - ip = get_ip_from_msginfo(messageview->msginfo); - if(!ip) { - debug_print("Could not get IP address from message\n"); - gtk_widget_hide(container); - } - else { - GtkWidget *label; - debug_print("Found sender ip address: %s\n", ip); - label = g_object_get_data(G_OBJECT(container), GEOLOCATION_CONTAINER_DATA_LABEL); - if(label) { - gchar *text; - text = g_strconcat(_("Try to locate sender"), NULL); - gtk_label_set_text(GTK_LABEL(label), text); - g_free(text); - } - /* button takes ownership of ip string */ - g_object_set_data_full(G_OBJECT(button), GEOLOCATION_TOGGLE_BUTTON_DATA_IP, ip, g_free); - gtk_widget_show(container); - } - - return FALSE; -} - -#define ISO_IN(k,v) g_hash_table_insert(iso_country_hash, (k), (v)) -static void fill_iso_country_hash(void) -{ - iso_country_hash = g_hash_table_new(g_str_hash, g_str_equal); - ISO_IN("127.0.0.20", _("Andorra")); - ISO_IN("127.0.3.16", _("United Arab Emirates")); - ISO_IN("127.0.0.4", _("Afghanistan")); - ISO_IN("127.0.0.28", _("Antigua And Barbuda")); - ISO_IN("127.0.2.148", _("Anguilla")); - ISO_IN("127.0.0.8", _("Albania")); - ISO_IN("127.0.0.51", _("Armenia")); - ISO_IN("127.0.2.18", _("Netherlands Antilles")); - ISO_IN("127.0.0.24", _("Angola")); - ISO_IN("127.0.0.10", _("Antarctica")); - ISO_IN("127.0.0.32", _("Argentina")); - ISO_IN("127.0.0.16", _("American Samoa")); - ISO_IN("127.0.0.40", _("Austria")); - ISO_IN("127.0.0.36", _("Australia")); - ISO_IN("127.0.2.21", _("Aruba")); - ISO_IN("127.0.0.31", _("Azerbaijan")); - ISO_IN("127.0.0.70", _("Bosnia And Herzegovina")); - ISO_IN("127.0.0.52", _("Barbados")); - ISO_IN("127.0.0.50", _("Bangladesh")); - ISO_IN("127.0.0.56", _("Belgium")); - ISO_IN("127.0.3.86", _("Burkina Faso")); - ISO_IN("127.0.0.100", _("Bulgaria")); - ISO_IN("127.0.0.48", _("Bahrain")); - ISO_IN("127.0.0.108", _("Burundi")); - ISO_IN("127.0.0.204", _("Benin")); - ISO_IN("127.0.0.60", _("Bermuda")); - ISO_IN("127.0.0.96", _("Brunei Darussalam")); - ISO_IN("127.0.0.68", _("Bolivia")); - ISO_IN("127.0.0.76", _("Brazil")); - ISO_IN("127.0.0.44", _("Bahamas")); - ISO_IN("127.0.0.64", _("Bhutan")); - ISO_IN("127.0.0.74", _("Bouvet Island")); - ISO_IN("127.0.0.72", _("Botswana")); - ISO_IN("127.0.0.112", _("Belarus")); - ISO_IN("127.0.0.84", _("Belize")); - ISO_IN("127.0.0.124", _("Canada")); - ISO_IN("127.0.0.166", _("Cocos (Keeling) Islands")); - ISO_IN("127.0.0.140", _("Central African Republic")); - ISO_IN("127.0.0.178", _("Congo")); - ISO_IN("127.0.2.244", _("Switzerland")); - ISO_IN("127.0.1.128", _("Cote D'Ivoire")); - ISO_IN("127.0.0.184", _("Cook Islands")); - ISO_IN("127.0.0.152", _("Chile")); - ISO_IN("127.0.0.120", _("Cameroon")); - ISO_IN("127.0.0.156", _("China")); - ISO_IN("127.0.0.170", _("Colombia")); - ISO_IN("127.0.0.188", _("Costa Rica")); - ISO_IN("127.0.0.192", _("Cuba")); - ISO_IN("127.0.0.132", _("Cape Verde")); - ISO_IN("127.0.0.162", _("Christmas Island")); - ISO_IN("127.0.0.196", _("Cyprus")); - ISO_IN("127.0.0.203", _("Czech Republic")); - ISO_IN("127.0.1.20", _("Germany")); - ISO_IN("127.0.1.6", _("Djibouti")); - ISO_IN("127.0.0.208", _("Denmark")); - ISO_IN("127.0.0.212", _("Dominica")); - ISO_IN("127.0.0.214", _("Dominican Republic")); - ISO_IN("127.0.0.12", _("Algeria")); - ISO_IN("127.0.0.218", _("Ecuador")); - ISO_IN("127.0.0.233", _("Estonia")); - ISO_IN("127.0.3.50", _("Egypt")); - ISO_IN("127.0.2.220", _("Western Sahara")); - ISO_IN("127.0.0.232", _("Eritrea")); - ISO_IN("127.0.2.212", _("Spain")); - ISO_IN("127.0.0.231", _("Ethiopia")); - ISO_IN("127.0.0.246", _("Finland")); - ISO_IN("127.0.0.242", _("Fiji")); - ISO_IN("127.0.0.238", _("Falkland Islands (Malvinas)")); - ISO_IN("127.0.2.71", _("Micronesia, Federated States Of")); - ISO_IN("127.0.0.234", _("Faroe Islands")); - ISO_IN("127.0.0.250", _("France")); - ISO_IN("127.0.0.249", _("France, Metropolitan")); - ISO_IN("127.0.1.10", _("Gabon")); - ISO_IN("127.0.3.58", _("United Kingdom")); - ISO_IN("127.0.1.52", _("Grenada")); - ISO_IN("127.0.1.12", _("Georgia")); - ISO_IN("127.0.0.254", _("French Guiana")); - ISO_IN("127.0.1.32", _("Ghana")); - ISO_IN("127.0.1.36", _("Gibraltar")); - ISO_IN("127.0.1.48", _("Greenland")); - ISO_IN("127.0.1.14", _("Gambia")); - ISO_IN("127.0.1.68", _("Guinea")); - ISO_IN("127.0.1.56", _("Guadeloupe")); - ISO_IN("127.0.0.226", _("Equatorial Guinea")); - ISO_IN("127.0.1.44", _("Greece")); - ISO_IN("127.0.0.239", _("South Georgia And The South Sandwich Islands")); - ISO_IN("127.0.1.64", _("Guatemala")); - ISO_IN("127.0.1.60", _("Guam")); - ISO_IN("127.0.2.112", _("Guinea-Bissau")); - ISO_IN("127.0.1.72", _("Guyana")); - ISO_IN("127.0.1.88", _("Hong Kong")); - ISO_IN("127.0.1.78", _("Heard Island And Mcdonald Islands")); - ISO_IN("127.0.1.84", _("Honduras")); - ISO_IN("127.0.0.191", _("Croatia")); - ISO_IN("127.0.1.76", _("Haiti")); - ISO_IN("127.0.1.92", _("Hungary")); - ISO_IN("127.0.1.104", _("Indonesia")); - ISO_IN("127.0.1.116", _("Ireland")); - ISO_IN("127.0.1.120", _("Israel")); - ISO_IN("127.0.1.100", _("India")); - ISO_IN("127.0.0.86", _("British Indian Ocean Territory")); - ISO_IN("127.0.1.112", _("Iraq")); - ISO_IN("127.0.1.108", _("Iran, Islamic Republic Of")); - ISO_IN("127.0.1.96", _("Iceland")); - ISO_IN("127.0.1.124", _("Italy")); - ISO_IN("127.0.1.132", _("Jamaica")); - ISO_IN("127.0.1.144", _("Jordan")); - ISO_IN("127.0.1.136", _("Japan")); - ISO_IN("127.0.1.148", _("Kenya")); - ISO_IN("127.0.1.161", _("Kyrgyzstan")); - ISO_IN("127.0.0.116", _("Cambodia")); - ISO_IN("127.0.1.40", _("Kiribati")); - ISO_IN("127.0.0.174", _("Comoros")); - ISO_IN("127.0.2.147", _("Saint Kitts And Nevis")); - ISO_IN("127.0.1.152", _("Korea, Democratic People'S Republic Of")); - ISO_IN("127.0.1.154", _("Korea, Republic Of")); - ISO_IN("127.0.1.158", _("Kuwait")); - ISO_IN("127.0.0.136", _("Cayman Islands")); - ISO_IN("127.0.1.142", _("Kazakhstan")); - ISO_IN("127.0.1.162", _("Lao People'S Democratic Republic")); - ISO_IN("127.0.1.166", _("Lebanon")); - ISO_IN("127.0.2.150", _("Saint Lucia")); - ISO_IN("127.0.1.182", _("Liechtenstein")); - ISO_IN("127.0.0.144", _("Sri Lanka")); - ISO_IN("127.0.1.174", _("Liberia")); - ISO_IN("127.0.1.170", _("Lesotho")); - ISO_IN("127.0.1.184", _("Lithuania")); - ISO_IN("127.0.1.186", _("Luxembourg")); - ISO_IN("127.0.1.172", _("Latvia")); - ISO_IN("127.0.1.178", _("Libyan Arab Jamahiriya")); - ISO_IN("127.0.1.248", _("Morocco")); - ISO_IN("127.0.1.236", _("Monaco")); - ISO_IN("127.0.1.242", _("Moldova, Republic Of")); - ISO_IN("127.0.1.194", _("Madagascar")); - ISO_IN("127.0.2.72", _("Marshall Islands")); - ISO_IN("127.0.3.39", _("Macedonia, The Former Yugoslav Republic Of")); - ISO_IN("127.0.1.210", _("Mali")); - ISO_IN("127.0.0.104", _("Myanmar")); - ISO_IN("127.0.1.240", _("Mongolia")); - ISO_IN("127.0.1.190", _("Macao")); - ISO_IN("127.0.2.68", _("Northern Mariana Islands")); - ISO_IN("127.0.1.218", _("Martinique")); - ISO_IN("127.0.1.222", _("Mauritania")); - ISO_IN("127.0.1.244", _("Montserrat")); - ISO_IN("127.0.1.214", _("Malta")); - ISO_IN("127.0.1.224", _("Mauritius")); - ISO_IN("127.0.1.206", _("Maldives")); - ISO_IN("127.0.1.198", _("Malawi")); - ISO_IN("127.0.1.228", _("Mexico")); - ISO_IN("127.0.1.202", _("Malaysia")); - ISO_IN("127.0.1.252", _("Mozambique")); - ISO_IN("127.0.2.4", _("Namibia")); - ISO_IN("127.0.2.28", _("New Caledonia")); - ISO_IN("127.0.2.50", _("Niger")); - ISO_IN("127.0.2.62", _("Norfolk Island")); - ISO_IN("127.0.2.54", _("Nigeria")); - ISO_IN("127.0.2.46", _("Nicaragua")); - ISO_IN("127.0.2.16", _("Netherlands")); - ISO_IN("127.0.2.66", _("Norway")); - ISO_IN("127.0.2.12", _("Nepal")); - ISO_IN("127.0.2.8", _("Nauru")); - ISO_IN("127.0.2.58", _("Niue")); - ISO_IN("127.0.2.42", _("New Zealand")); - ISO_IN("127.0.2.0", _("Oman")); - ISO_IN("127.0.2.79", _("Panama")); - ISO_IN("127.0.2.92", _("Peru")); - ISO_IN("127.0.1.2", _("French Polynesia")); - ISO_IN("127.0.2.86", _("Papua New Guinea")); - ISO_IN("127.0.2.96", _("Philippines")); - ISO_IN("127.0.2.74", _("Pakistan")); - ISO_IN("127.0.2.104", _("Poland")); - ISO_IN("127.0.2.154", _("Saint Pierre And Miquelon")); - ISO_IN("127.0.2.100", _("Pitcairn")); - ISO_IN("127.0.2.118", _("Puerto Rico")); - ISO_IN("127.0.2.108", _("Portugal")); - ISO_IN("127.0.2.73", _("Palau")); - ISO_IN("127.0.2.88", _("Paraguay")); - ISO_IN("127.0.2.122", _("Qatar")); - ISO_IN("127.0.2.126", _("Reunion")); - ISO_IN("127.0.2.130", _("Romania")); - ISO_IN("127.0.2.131", _("Russian Federation")); - ISO_IN("127.0.2.134", _("Rwanda")); - ISO_IN("127.0.2.170", _("Saudi Arabia")); - ISO_IN("127.0.0.90", _("Solomon Islands")); - ISO_IN("127.0.2.178", _("Seychelles")); - ISO_IN("127.0.2.224", _("Sudan")); - ISO_IN("127.0.2.240", _("Sweden")); - ISO_IN("127.0.2.190", _("Singapore")); - ISO_IN("127.0.2.142", _("Saint Helena")); - ISO_IN("127.0.2.193", _("Slovenia")); - ISO_IN("127.0.2.232", _("Svalbard And Jan Mayen")); - ISO_IN("127.0.2.191", _("Slovakia")); - ISO_IN("127.0.2.182", _("Sierra Leone")); - ISO_IN("127.0.2.162", _("San Marino")); - ISO_IN("127.0.2.174", _("Senegal")); - ISO_IN("127.0.2.194", _("Somalia")); - ISO_IN("127.0.2.228", _("Suriname")); - ISO_IN("127.0.2.166", _("Sao Tome And Principe")); - ISO_IN("127.0.0.222", _("El Salvador")); - ISO_IN("127.0.2.248", _("Syrian Arab Republic")); - ISO_IN("127.0.2.236", _("Swaziland")); - ISO_IN("127.0.3.28", _("Turks And Caicos Islands")); - ISO_IN("127.0.0.148", _("Chad")); - ISO_IN("127.0.1.4", _("French Southern Territories")); - ISO_IN("127.0.3.0", _("Togo")); - ISO_IN("127.0.2.252", _("Thailand")); - ISO_IN("127.0.2.250", _("Tajikistan")); - ISO_IN("127.0.3.4", _("Tokelau")); - ISO_IN("127.0.3.27", _("Turkmenistan")); - ISO_IN("127.0.3.20", _("Tunisia")); - ISO_IN("127.0.3.8", _("Tonga")); - ISO_IN("127.0.2.114", _("East Timor")); - ISO_IN("127.0.3.24", _("Turkey")); - ISO_IN("127.0.3.12", _("Trinidad And Tobago")); - ISO_IN("127.0.3.30", _("Tuvalu")); - ISO_IN("127.0.0.158", _("Taiwan, Province Of China")); - ISO_IN("127.0.3.66", _("Tanzania, United Republic Of")); - ISO_IN("127.0.3.36", _("Ukraine")); - ISO_IN("127.0.3.32", _("Uganda")); - ISO_IN("127.0.3.58", _("United Kingdom")); - ISO_IN("127.0.2.69", _("United States Minor Outlying Islands")); - ISO_IN("127.0.3.72", _("United States")); - ISO_IN("127.0.3.90", _("Uruguay")); - ISO_IN("127.0.3.92", _("Uzbekistan")); - ISO_IN("127.0.1.80", _("Holy See (Vatican City State)")); - ISO_IN("127.0.2.158", _("Saint Vincent And The Grenadines")); - ISO_IN("127.0.3.94", _("Venezuela")); - ISO_IN("127.0.0.92", _("Virgin Islands, British")); - ISO_IN("127.0.3.82", _("Virgin Islands, U.S.")); - ISO_IN("127.0.2.192", _("Viet Nam")); - ISO_IN("127.0.2.36", _("Vanuatu")); - ISO_IN("127.0.3.108", _("Wallis And Futuna")); - ISO_IN("127.0.3.114", _("Samoa")); - ISO_IN("127.0.3.119", _("Yemen")); - ISO_IN("127.0.0.175", _("Mayotte")); - ISO_IN("127.0.3.123", _("Serbia And Montenegro")); - ISO_IN("127.0.2.198", _("South Africa")); - ISO_IN("127.0.3.126", _("Zambia")); - ISO_IN("127.0.0.180", _("Democratic Republic Of The Congo")); - ISO_IN("127.0.2.204", _("Zimbabwe")); -} -#undef ISO_IN - -gint plugin_init(gchar **error) -{ - GError *err = NULL; - - /* Version check */ - if(!check_plugin_version(MAKE_NUMERIC_VERSION(3,7,1,55), - VERSION_NUMERIC, _("GeoLocation"), error)) - return -1; - - if(gtk_clutter_init(0, NULL) != CLUTTER_INIT_SUCCESS) - { - *error = g_strdup_printf(_("Could not initialize clutter")); - return -1; - } - - ip_from_received_header_regex = g_regex_new(EXTRACT_IP_FROM_RECEIVED_HEADER_REGEX, 0, 0, &err); - if(err) { - *error = g_strdup_printf(_("Could not create regular expression: %s\n"), err->message); - g_error_free(err); - return -1; - } - - lat_lon_from_hostip_response_regex = g_regex_new(EXTRACT_LAT_LON_FROM_HOSTIP_RESPONSE_REGEX, 0, 0, &err); - if(err) { - *error = g_strdup_printf(_("Could not create regular expression: %s\n"), err->message); - g_error_free(err); - g_regex_unref(ip_from_received_header_regex); - return -1; - } - - hook_messageview_show = hooks_register_hook(MESSAGE_VIEW_SHOW_DONE_HOOKLIST, my_messageview_show_hook, NULL); - if(hook_messageview_show == (guint) -1) { - *error = g_strdup(_("Failed to register messageview_show hook in the GeoLocation plugin")); - g_regex_unref(ip_from_received_header_regex); - g_regex_unref(lat_lon_from_hostip_response_regex); - return -1; - } - - fill_iso_country_hash(); - - debug_print("GeoLocation plugin loaded\n"); - - return 0; -} - -gboolean plugin_done(void) -{ - - hooks_unregister_hook(MESSAGE_VIEW_SHOW_DONE_HOOKLIST, hook_messageview_show); - - if(!claws_is_exiting()) { - GSList *copy, *walk; - - copy = g_slist_copy(container_list); - for(walk = copy; walk; walk = walk->next) { - GtkWidget *wid = walk->data; - GtkWidget *button = g_object_get_data(G_OBJECT(wid), GEOLOCATION_CONTAINER_DATA_TOGGLEBUTTON); - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE); - gtk_widget_destroy(GTK_WIDGET(wid)); - } - g_slist_free(copy); - if(container_list) { - g_slist_free(container_list); - container_list = NULL; - } - - if(ip_from_received_header_regex) { - g_regex_unref(ip_from_received_header_regex); - ip_from_received_header_regex = NULL; - } - - if(lat_lon_from_hostip_response_regex) { - g_regex_unref(lat_lon_from_hostip_response_regex); - lat_lon_from_hostip_response_regex = NULL; - } - - if(iso_country_hash) { - g_hash_table_destroy(iso_country_hash); - iso_country_hash = NULL; - } - } - - debug_print("GeoLocation plugin unloaded\n"); - - /* returning FALSE because dependant libraries may not be unload-safe. */ - return FALSE; -} - -const gchar *plugin_name(void) -{ - return _("GeoLocation"); -} - -const gchar *plugin_desc(void) -{ - return _("This plugin provides GeoLocation functionality " - "for Claws Mail.\n\n" - "Warning: It is technically impossible to derive the geographic " - "location of senders from their E-Mails with any amount of certainty. " - "The results presented by " - "this plugin are only rough estimates. In particular, mailing list managers " - "often strip sender information from the mails, so mails from mailing lists " - "may be assigned to the location of the mailing list server instead of the " - "mail sender.\n" - "When in doubt, don't trust the results of this plugin, and don't rely on this " - "information to divorce your spouse.\n" - "\nFeedback to <berndth@gmx.de> is welcome " - "(but only if it's not about marital quarrels)."); -} - -const gchar *plugin_type(void) -{ - return "GTK2"; -} - -const gchar *plugin_licence(void) -{ - return "GPL3+"; -} - -const gchar *plugin_version(void) -{ - return VERSION; -} - -struct PluginFeature *plugin_provides(void) -{ - static struct PluginFeature features[] = - { {PLUGIN_UTILITY, N_("GeoLocation integration")}, - {PLUGIN_NOTHING, NULL}}; - return features; -} diff --git a/src/plugins/geolocation/pixmap_earth.h b/src/plugins/geolocation/pixmap_earth.h @@ -1,123 +0,0 @@ -/* GdkPixbuf RGBA C-Source image dump */ - -#ifdef __SUNPRO_C -#pragma align 4 (pixmap_earth) -#endif -#ifdef __GNUC__ -static const guint8 pixmap_earth[] __attribute__ ((__aligned__ (4))) = -#else -static const guint8 pixmap_earth[] = -#endif -{ "" - /* Pixbuf magic (0x47646b50) */ - "GdkP" - /* length: header (24) + pixel_data (2304) */ - "\0\0\11\30" - /* pixdata_type (0x1010002) */ - "\1\1\0\2" - /* rowstride (96) */ - "\0\0\0`" - /* width (24) */ - "\0\0\0\30" - /* height (24) */ - "\0\0\0\30" - /* pixel_data: */ - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "99l\12""99m)99l077l\36++\200\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0""88k\15RR\200s\231\234\264\316\236\241\273\372" - "\271\275\317\372\271\276\320\372\234\246\302\371\206\216\257\361_d\217" - "\244:=oD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0KM{W\227\233\266\351\331" - "\340\350\377\311\327\347\377\356\360\361\377\376\376\376\377\353\354" - "\355\377\253\302\332\377\245\301\337\377\244\277\335\377\227\250\306" - "\374[b\215\270;;n\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0jl\222\202\324\325\336\375\302\313\324" - "\377\305\314\324\377\307\322\335\377\350\354\357\377\313\322\330\377" - "\271\306\323\377\273\314\337\377\264\314\346\377\306\325\344\377\327" - "\332\335\377\315\322\331\377\207\213\244\344:=p.\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\_\211l\343\344\352\375" - "\267\310\332\377\337\353\366\377\325\332\337\377\341\357\376\377\322" - "\335\351\377\331\350\370\377\320\342\364\377\305\331\356\377\273\316" - "\341\377\320\327\336\377\264\276\311\377\360\361\361\377\347\347\347" - "\377\210\214\243\343::m\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0@Bu)\306\310\326\371\376\376\376\377\360\362\363\377\364\364\364" - "\377\327\332\335\377\323\336\351\377\342\361\377\377\335\355\374\377" - "\323\345\367\377\310\331\354\377\307\316\326\377\355\357\360\377\371" - "\372\372\377\370\370\370\377\346\346\346\377\334\334\335\377fi\212\262" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\211\213\250\255\376" - "\376\376\377\376\376\376\377\376\376\376\377\340\343\346\377\323\337" - "\353\377\333\351\367\377\341\360\377\377\337\356\375\377\324\346\370" - "\377\315\335\356\377\345\347\352\377\321\325\333\377\355\356\360\377" - "\372\372\372\377\352\352\352\377\330\330\330\377\262\264\274\3759<oA" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""88n\33\304\305\324\373\376\376\376" - "\377\376\376\376\377\320\325\333\377\325\345\365\377\337\357\377\377" - "\337\357\377\377\340\357\377\377\335\355\375\377\322\345\367\377\315" - "\334\353\377\303\313\323\377\266\310\334\377\241\265\313\377\242\265" - "\312\377\323\326\332\377\330\330\330\377\321\321\321\377`c\200\247\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0BEvi\371\371\372\377\330\333\336\377\314" - "\321\325\377\274\322\352\377\327\352\376\377\336\356\377\377\336\357" - "\377\377\336\356\376\377\327\351\373\377\315\340\365\377\334\345\357" - "\377\376\376\376\377\376\376\376\377\337\343\350\377\317\330\342\377" - "\330\332\335\377\327\327\327\377\274\275\277\377\206\207\235\363@@j\3" - "\0\0\0\0\0\0\0\0\0\0\0\0\200\201\240\216\323\327\333\377\240\277\337" - "\377\254\310\346\377\274\326\362\377\306\336\367\377\325\350\373\377" - "\330\352\373\377\324\347\372\377\315\341\366\377\314\334\356\377\376" - "\376\376\377\376\376\376\377\376\376\376\377\376\376\376\377\366\366" - "\366\377\247\262\277\377\321\321\322\377\214\231\250\377t~\230\37199" - "k\"\0\0\0\0\0\0\0\0\0\0\0\0ns\230\237\334\340\345\377\321\327\335\377" - "\244\301\337\377\257\314\353\377\267\322\357\377\275\326\362\377\303" - "\333\363\377\306\334\363\377\301\330\360\377\320\335\353\377\376\376" - "\376\377\376\376\376\377\376\376\376\377\375\375\375\377\360\360\360" - "\377\324\325\327\377\232\247\265\377\204\217\234\377ex\236\37388k7\0" - "\0\0\0\0\0\0\0\0\0\0\0]c\215\227\241\275\334\377\232\262\314\377\254" - "\273\313\377\335\345\354\377\323\342\361\377\251\306\345\377\254\312" - "\351\377\251\307\347\377\246\304\345\377\247\300\333\377\367\367\370" - "\377\376\376\376\377\376\376\376\377\367\367\367\377\350\350\350\377" - "\330\330\330\377\262\265\271\377Pm\220\377dv\234\37288l/\0\0\0\0\0\0" - "\0\0\0\0\0\0\77Ar}\242\275\333\377\201\247\321\377\241\273\327\377\376" - "\376\376\377\376\376\376\377\320\327\340\377\234\274\337\377\231\273" - "\337\377\224\267\334\377\214\261\330\377\230\262\317\377\206\241\275" - "\377\251\271\314\377\354\354\354\377\336\336\336\377\317\317\317\377" - "\251\254\257\377;^\213\377bn\224\37166l\17\0\0\0\0\0\0\0\0\0\0\0\0;=" - "pC\221\246\307\374s\235\312\377\310\327\351\377\376\376\376\377\376\376" - "\376\377\376\376\376\377\345\351\355\377\245\275\327\377\204\253\323" - "\377~\245\320\377v\236\313\377l\227\306\377v\231\300\377\340\340\340" - "\377\322\322\322\377\304\304\304\377\\s\217\377Jj\225\377U]\206\324\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0..t\2r~\244\343t\234\310\377\232\262\315" - "\377\367\367\367\377\373\373\373\377\375\375\375\377\375\375\375\377" - "\256\274\313\377u\236\313\377o\231\310\377h\223\304\377_\214\277\377" - "X\206\272\377\310\312\314\377\305\305\305\377\270\270\270\377Kd\204\377" - "]t\230\377<>ov\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\77Cth\206\242" - "\307\375`\215\277\377\255\273\312\377\352\352\352\377\355\355\355\377" - "\357\357\357\377~\231\266\377e\221\302\377`\215\277\377Y\210\274\377" - "Q\201\267\377L}\263\377\303\303\303\377\270\270\270\377\227\232\235\377" - "Lc\203\377V`\207\351;;m\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10" - "\10\20\17V_\211\315v\234\305\377d\214\270\377\330\330\330\377\333\333" - "\333\377\252\264\300\377W\201\256\377U\205\271\377Q\201\267\377J|\264" - "\377Cv\257\377\77p\250\377\240\244\251\377\252\252\252\377bp\203\377" - "`o\222\374/0Xm\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0" - "\32\24\25'I[f\220\346q\226\300\377\304\304\304\377\307\307\307\377Xz" - "\240\377Hz\262\377Ex\261\377Bu\255\377\77p\250\377=k\242\377<f\231\377" - "v\206\232\377\211\213\216\377eq\215\37546]\253\0\0\0""0\0\0\0\27\0\0" - "\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\33\0\0\0""4\21\21\40aSY\177" - "\336\265\267\273\376t\206\233\377=m\244\377>n\245\377=l\242\377=i\236" - "\377<e\230\377;a\222\377;]\212\377Vl\215\377]h\214\375,.P\253\0\0\0J" - "\0\0\0""1\0\0\0\30\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\17\0" - "\0\0'\0\0\0>\2\2\5X)+K\252Ze\213\363g~\245\376b\202\252\377Xx\241\377" - "Ts\234\377Yt\233\377_u\231\377^j\217\375@Dk\332\27\27,\205\0\0\0Q\0\0" - "\0:\0\0\0#\0\0\0\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\15\0\0\0!\0\0\0""5\0\0\0G\2\2\5Z\35\36""9\215,-Q\262<@c\306@Dh\314" - "68[\277%'H\250\20\20\40w\0\0\0U\0\0\0D\0\0\0""2\0\0\0\36\0\0\0\12\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3" - "\0\0\0\15\0\0\0\34\0\0\0(\0\0\0""3\0\0\0;\0\0\0\77\0\0\0A\0\0\0\77\0" - "\0\0:\0\0\0""1\0\0\0'\0\0\0\31\0\0\0\13\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\1\0\0\0\6\0\0\0\11\0\0\0\13\0\0\0\14\0\0\0\13\0\0\0\11\0" - "\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0"}; - -