[arch-commits] Commit in gpsbabel/repos/community-x86_64 (9 files)
Balló György
bgyorgy at archlinux.org
Wed Jun 19 11:39:52 UTC 2019
Date: Wednesday, June 19, 2019 @ 11:39:52
Author: bgyorgy
Revision: 482342
archrelease: copy trunk to community-x86_64
Added:
gpsbabel/repos/community-x86_64/PKGBUILD
(from rev 482341, gpsbabel/trunk/PKGBUILD)
gpsbabel/repos/community-x86_64/drop-map.patch
(from rev 482341, gpsbabel/trunk/drop-map.patch)
gpsbabel/repos/community-x86_64/gpsbabel.appdata.xml
(from rev 482341, gpsbabel/trunk/gpsbabel.appdata.xml)
Deleted:
gpsbabel/repos/community-x86_64/0008-Correctly-read-diff-and-terr-from-geo-format.patch
gpsbabel/repos/community-x86_64/PKGBUILD
gpsbabel/repos/community-x86_64/build-fix.patch
gpsbabel/repos/community-x86_64/drop-map.patch
gpsbabel/repos/community-x86_64/fix-map.patch
gpsbabel/repos/community-x86_64/gpsbabel.appdata.xml
---------------------------------------------------------+
0008-Correctly-read-diff-and-terr-from-geo-format.patch | 29
PKGBUILD | 135
build-fix.patch | 58
drop-map.patch | 275 -
fix-map.patch | 2183 --------------
gpsbabel.appdata.xml | 38
6 files changed, 212 insertions(+), 2506 deletions(-)
Deleted: 0008-Correctly-read-diff-and-terr-from-geo-format.patch
===================================================================
--- 0008-Correctly-read-diff-and-terr-from-geo-format.patch 2019-06-19 11:39:48 UTC (rev 482341)
+++ 0008-Correctly-read-diff-and-terr-from-geo-format.patch 2019-06-19 11:39:52 UTC (rev 482342)
@@ -1,29 +0,0 @@
-From 4cecea61aa5a33f4accfa109d0b73d7878462962 Mon Sep 17 00:00:00 2001
-From: Robert Lipe <robertlipe at users.noreply.github.com>
-Date: Sat, 14 Oct 2017 21:59:24 -0500
-Subject: [PATCH 8/8] Correctly read diff and terr from geo format.
-
-Thank you, Rick Richardson.
----
- geo.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/geo.cc b/geo.cc
-index 5c785f38..e6f4560a 100644
---- a/geo.cc
-+++ b/geo.cc
-@@ -74,9 +74,9 @@ void GeoReadLoc()
- waypt_add_url(wpt,
- reader.readElementText(), a.value("text").toString());
- } else if (current_tag == "/loc/waypoint/difficulty") {
-- wpt->gc_data->diff = reader.readElementText().toInt() * 10;
-+ wpt->gc_data->diff = reader.readElementText().toDouble() * 10;
- } else if (current_tag == "/loc/waypoint/terrain") {
-- wpt->gc_data->terr = reader.readElementText().toInt() * 10;
-+ wpt->gc_data->terr = reader.readElementText().toDouble() * 10;
- } else if (current_tag == "/loc/waypoint/container") {
- wpt->gc_data->container = wpt_container(reader.readElementText());
- }
---
-2.14.3
-
Deleted: PKGBUILD
===================================================================
--- PKGBUILD 2019-06-19 11:39:48 UTC (rev 482341)
+++ PKGBUILD 2019-06-19 11:39:52 UTC (rev 482342)
@@ -1,75 +0,0 @@
-# Maintainer: Balló György <ballogyor+arch at gmail dot com>
-# Contributor: Sergej Pupykin <pupykin.s+arch at gmail.com>
-# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org
-# Contributor: William Rea <sillywilly at gmail.com>
-
-pkgname=gpsbabel
-pkgver=1.5.4
-_pkgver=1_5_4
-pkgrel=5
-pkgdesc="Read, write and manipulate GPS waypoints in a variety of formats"
-arch=('x86_64')
-url="https://www.gpsbabel.org/"
-license=('GPL')
-depends=('hicolor-icon-theme' 'libusb-compat' 'qt5-base') # 'qt5-webengine'
-makedepends=('imagemagick' 'qt5-tools')
-source=(https://github.com/gpsbabel/$pkgname/archive/${pkgname}_$_pkgver.tar.gz
- gpsbabel.appdata.xml
- build-fix.patch
- drop-map.patch
- fix-map.patch
- 0008-Correctly-read-diff-and-terr-from-geo-format.patch)
-sha256sums=('8cd740db0b92610abff71e942e8a987df58cd6ca5f25cca86e15f2b00e190704'
- '5eb52ab0c4bdde61c747856e849f9bce9ca660e942c15f730a4330a38fd6a39a'
- '537752bd5d097d836d4d5a77b4f7a5ea68d408d6a648511e4a98865d2742fb46'
- '69b4fad0bc5b33e332dc79c1c65482f942bf5a596b2d82b3d6a565cdd444b6ee'
- 'e00530f3b40a6c516cb45c59bbdfd5f4a801f7bb55e02205e7fc975c262db3a1'
- '384e1603179be2d6cc0b2837da7eb11002e5aefd72c1dbc2ed2697ef4058289f')
-
-prepare() {
- cd $pkgname-${pkgname}_$_pkgver
-
- # Fix build
- patch -Np1 -i ../build-fix.patch
-
- # Drop map
- patch -Np1 -i ../drop-map.patch
-
- # Fix map
- # patch -Np1 -i ../fix-map.patch
-
- # Correctly read diff and terr from geo format
- patch -Np1 -i ../0008-Correctly-read-diff-and-terr-from-geo-format.patch
-
- # Fix path
- sed -i 's|langPath_ = QApplication::applicationDirPath();|langPath_ = "/usr/share/gpsbabel";|' gui/mainwindow.cc
- # sed -i 's|baseFile = QApplication::applicationDirPath() + "/gmapbase.html";|baseFile = "/usr/share/gpsbabel/gmapbase.html";|' gui/map.cc
-
- convert gui/images/appicon.png +set date:create +set date:modify -background none -gravity center -extent 512x512 gui/images/appicon.png
-}
-
-build() {
- cd $pkgname-${pkgname}_$_pkgver
- ./configure --prefix=/usr
- make
-
- # GUI
- cd gui
- qmake-qt5
- lrelease-qt5 *.ts
- make
-}
-
-package() {
- cd $pkgname-${pkgname}_$_pkgver
- make DESTDIR="$pkgdir" install
-
- # GUI
- install -Dm755 gui/objects/gpsbabelfe-bin "$pkgdir"/usr/bin/gpsbabelfe-bin
- install -Dm644 gui/images/appicon.png "$pkgdir"/usr/share/icons/hicolor/512x512/apps/gpsbabel.png
- install -Dm644 gui/gpsbabel.desktop "$pkgdir"/usr/share/applications/gpsbabel.desktop
- install -Dm644 ../$pkgname.appdata.xml "$pkgdir/usr/share/metainfo/$pkgname.appdata.xml"
- # install -Dm644 gui/gmapbase.html "$pkgdir"/usr/share/gpsbabel/gmapbase.html
- install -dm755 "$pkgdir"/usr/share/gpsbabel/translations/
- install -Dm644 gui/*.qm "$pkgdir"/usr/share/gpsbabel/translations/
-}
Copied: gpsbabel/repos/community-x86_64/PKGBUILD (from rev 482341, gpsbabel/trunk/PKGBUILD)
===================================================================
--- PKGBUILD (rev 0)
+++ PKGBUILD 2019-06-19 11:39:52 UTC (rev 482342)
@@ -0,0 +1,60 @@
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: Sergej Pupykin <pupykin.s+arch at gmail.com>
+# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org
+# Contributor: William Rea <sillywilly at gmail.com>
+
+pkgname=gpsbabel
+pkgver=1.6.0
+_pkgver=1_6_0
+pkgrel=1
+pkgdesc="Read, write and manipulate GPS waypoints in a variety of formats"
+arch=('x86_64')
+url="https://www.gpsbabel.org/"
+license=('GPL')
+depends=('hicolor-icon-theme' 'libusb-compat' 'qt5-base') # 'qt5-webengine'
+makedepends=('imagemagick' 'qt5-tools')
+source=(https://github.com/gpsbabel/$pkgname/archive/${pkgname}_$_pkgver.tar.gz
+ gpsbabel.appdata.xml
+ drop-map.patch)
+sha256sums=('ad56796f725dcdb7f52d9a9509d4922f11198c382fe10fc2d6c9efa8159f2090'
+ '5eb52ab0c4bdde61c747856e849f9bce9ca660e942c15f730a4330a38fd6a39a'
+ '5377f1a6f0d52d93f7d604c171ce1f6b18bb389c9e4c67ff4910c4079a2696fd')
+
+prepare() {
+ cd $pkgname-${pkgname}_$_pkgver
+
+ # Remove map due to heavy WebEngine dependency
+ patch -Np1 -i ../drop-map.patch
+
+ # Fix path
+ sed -i 's|langPath_ = QApplication::applicationDirPath();|langPath_ = "/usr/share/gpsbabel";|' gui/mainwindow.cc
+ sed -i 's|baseFile = QApplication::applicationDirPath() + "/gmapbase.html";|baseFile = "/usr/share/gpsbabel/gmapbase.html";|' gui/map.cc
+
+ convert gui/images/appicon.png +set date:create +set date:modify -background none -gravity center -extent 512x512 gui/images/appicon.png
+}
+
+build() {
+ cd $pkgname-${pkgname}_$_pkgver
+ ./configure --prefix=/usr
+ make
+
+ # GUI
+ cd gui
+ qmake-qt5
+ lrelease-qt5 *.ts
+ make
+}
+
+package() {
+ cd $pkgname-${pkgname}_$_pkgver
+ make DESTDIR="$pkgdir" install
+
+ # GUI
+ install -Dm755 gui/objects/gpsbabelfe "$pkgdir"/usr/bin/gpsbabelfe
+ install -Dm644 gui/images/appicon.png "$pkgdir"/usr/share/icons/hicolor/512x512/apps/gpsbabel.png
+ install -Dm644 gui/gpsbabel.desktop "$pkgdir"/usr/share/applications/gpsbabel.desktop
+ install -Dm644 ../$pkgname.appdata.xml "$pkgdir/usr/share/metainfo/$pkgname.appdata.xml"
+ install -Dm644 gui/gmapbase.html "$pkgdir"/usr/share/gpsbabel/gmapbase.html
+ install -dm755 "$pkgdir"/usr/share/gpsbabel/translations/
+ install -Dm644 gui/*.qm "$pkgdir"/usr/share/gpsbabel/translations/
+}
Deleted: build-fix.patch
===================================================================
--- build-fix.patch 2019-06-19 11:39:48 UTC (rev 482341)
+++ build-fix.patch 2019-06-19 11:39:52 UTC (rev 482342)
@@ -1,58 +0,0 @@
-diff -wbBur gpsbabel-1.5.4/tef_xml.cc gpsbabel-1.5.4.my/tef_xml.cc
---- gpsbabel-1.5.4/tef_xml.cc 2017-01-02 08:05:19.000000000 +0300
-+++ gpsbabel-1.5.4.my/tef_xml.cc 2017-02-16 16:20:22.788961096 +0300
-@@ -72,11 +72,11 @@
- bool valid = false;
-
- foreach(QXmlStreamAttribute attr, *attrv) {
-- if (attr.name().compare("Comment", Qt::CaseInsensitive) == 0) {
-- if (attr.value().compare("TourExchangeFormat", Qt::CaseInsensitive) == 0) {
-+ if (attr.name().compare((QString&)"Comment", Qt::CaseInsensitive) == 0) {
-+ if (attr.value().compare((QString&)"TourExchangeFormat", Qt::CaseInsensitive) == 0) {
- valid = true;
- }
-- } else if (attr.name().compare("Version", Qt::CaseInsensitive) == 0) {
-+ } else if (attr.name().compare((QString&)"Version", Qt::CaseInsensitive) == 0) {
- version = attr.value().toString().toDouble();
- }
- }
-@@ -95,9 +95,9 @@
- {
- route = route_head_alloc();
- foreach(QXmlStreamAttribute attr, *attrv) {
-- if (attr.name().compare("Name", Qt::CaseInsensitive) == 0) {
-+ if (attr.name().compare((QString&)"Name", Qt::CaseInsensitive) == 0) {
- route->rte_name = attr.value().toString().trimmed();
-- } else if (attr.name().compare("Software", Qt::CaseInsensitive) == 0) {
-+ } else if (attr.name().compare((QString&)"Software", Qt::CaseInsensitive) == 0) {
- route->rte_desc = attr.value().toString().trimmed();
- }
- }
-@@ -248,20 +248,20 @@
- QString attrstr = attr.value().toString();
- QByteArray attrtext = attrstr.toUtf8();
-
-- if (attr.name().compare("SegDescription", Qt::CaseInsensitive) == 0) {
-+ if (attr.name().compare((QString&)"SegDescription", Qt::CaseInsensitive) == 0) {
- wpt_tmp->shortname = attrstr.trimmed();
-- } else if (attr.name().compare("PointDescription", Qt::CaseInsensitive) == 0) {
-+ } else if (attr.name().compare((QString&)"PointDescription", Qt::CaseInsensitive) == 0) {
- wpt_tmp->description = attrstr.trimmed();
-- } else if (attr.name().compare("ViaStation", Qt::CaseInsensitive) == 0 &&
-- attr.value().compare("true", Qt::CaseInsensitive) == 0) {
-+ } else if (attr.name().compare((QString&)"ViaStation", Qt::CaseInsensitive) == 0 &&
-+ attr.value().compare((QString&)"true", Qt::CaseInsensitive) == 0) {
- wpt_tmp->wpt_flags.fmt_use = 1; /* only a flag */
-
- /* new in TEF V2 */
-- } else if (attr.name().compare("Instruction", Qt::CaseInsensitive) == 0) {
-+ } else if (attr.name().compare((QString&)"Instruction", Qt::CaseInsensitive) == 0) {
- wpt_tmp->description = attrstr.trimmed();
-- } else if (attr.name().compare("Altitude", Qt::CaseInsensitive) == 0) {
-+ } else if (attr.name().compare((QString&)"Altitude", Qt::CaseInsensitive) == 0) {
- wpt_tmp->altitude = attrstr.toDouble();
-- } else if (attr.name().compare("TimeStamp", Qt::CaseInsensitive) == 0) {
-+ } else if (attr.name().compare((QString&)"TimeStamp", Qt::CaseInsensitive) == 0) {
- /* nothing for the moment */
- }
- }
Deleted: drop-map.patch
===================================================================
--- drop-map.patch 2019-06-19 11:39:48 UTC (rev 482341)
+++ drop-map.patch 2019-06-19 11:39:52 UTC (rev 482342)
@@ -1,142 +0,0 @@
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/advdlg.cc gpsbabel-gpsbabel_1_5_4/gui/advdlg.cc
---- gpsbabel-gpsbabel_1_5_4.orig/gui/advdlg.cc 2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/advdlg.cc 2018-01-12 12:14:50.428923572 +0100
-@@ -37,7 +37,6 @@
- {
- ui_.setupUi(this);
- ui_.synthShortNames->setChecked(synthShortNames);
-- ui_.previewGmap->setChecked(previewGmap);
- ui_.debugCombo->setCurrentIndex(debugLevel+1);
- ui_.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QIcon(":images/ok"));
- ui_.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon(":images/cancel"));
-@@ -48,7 +47,6 @@
- void AdvDlg::acceptClicked()
- {
- synthShortNames_ = ui_.synthShortNames->isChecked();
-- previewGmap_ = ui_.previewGmap->isChecked();
- debugLevel_ = ui_.debugCombo->currentIndex()-1;
- accept();
- }
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/advui.ui gpsbabel-gpsbabel_1_5_4/gui/advui.ui
---- gpsbabel-gpsbabel_1_5_4.orig/gui/advui.ui 2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/advui.ui 2018-01-12 12:13:29.919780546 +0100
-@@ -38,13 +38,6 @@
- </widget>
- </item>
- <item>
-- <widget class="QCheckBox" name="previewGmap">
-- <property name="text">
-- <string>Preview in Google Maps</string>
-- </property>
-- </widget>
-- </item>
-- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QComboBox" name="debugCombo">
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/app.pro gpsbabel-gpsbabel_1_5_4/gui/app.pro
---- gpsbabel-gpsbabel_1_5_4.orig/gui/app.pro 2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/app.pro 2018-01-12 12:05:45.541885058 +0100
-@@ -15,13 +15,7 @@
- gui \
- network \
- xml \
--
--greaterThan(QT_MINOR_VERSION, 5) {
-- QT += webenginewidgets
-- DEFINES += HAVE_WEBENGINE
--} else {
-- QT += webkit webkitwidgets
--}
-+ widgets \
-
- unix:DESTDIR = objects
- unix:MOC_DIR = objects
-@@ -72,13 +66,11 @@
- SOURCES += filterwidgets.cc
- SOURCES += format.cc
- SOURCES += formatload.cc
--SOURCES += gmapdlg.cc
- SOURCES += gpx.cc
- SOURCES += help.cc
- SOURCES += latlng.cc
- SOURCES += main.cc
- SOURCES += mainwindow.cc
--SOURCES += map.cc
- SOURCES += optionsdlg.cc
- SOURCES += preferences.cc
- SOURCES += processwait.cc
-@@ -98,11 +90,9 @@
- HEADERS += filterwidgets.h
- HEADERS += format.h
- HEADERS += formatload.h
--HEADERS += gmapdlg.h
- HEADERS += gpx.h
- HEADERS += help.h
- HEADERS += mainwindow.h
--HEADERS += map.h
- HEADERS += optionsdlg.h
- HEADERS += preferences.h
- HEADERS += processwait.h
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/main.cc gpsbabel-gpsbabel_1_5_4/gui/main.cc
---- gpsbabel-gpsbabel_1_5_4.orig/gui/main.cc 2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/main.cc 2018-01-12 12:05:45.541885058 +0100
-@@ -29,7 +29,6 @@
- #include <QTextCodec>
-
- #include "mainwindow.h"
--#include "gmapdlg.h"
-
- #ifdef _WIN32
- const char *pathSeparator = ";";
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/mainwindow.cc gpsbabel-gpsbabel_1_5_4/gui/mainwindow.cc
---- gpsbabel-gpsbabel_1_5_4.orig/gui/mainwindow.cc 2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/mainwindow.cc 2018-01-12 12:05:45.601886984 +0100
-@@ -38,7 +38,6 @@
- #include "donate.h"
- #include "filterdlg.h"
- #include "formatload.h"
--#include "gmapdlg.h"
- #include "help.h"
- #include "optionsdlg.h"
- #include "preferences.h"
-@@ -976,24 +975,6 @@
- formatList_[fidx].bumpWriteUseCount(1);
- }
-
-- // Now output for preview in google maps
-- QString tempName;
-- if (babelData_.previewGmap_) {
-- QTemporaryFile ftemp;
-- ftemp.open();
-- tempName = ftemp.fileName();
-- ftemp.close();
--
-- // Ideally, expost this in the UI. For now, just split the track
-- // if we've no recorded fixes for > 5 mins and we've moved > 300 meters.
-- //args << "-x";
-- //args << "track,pack,sdistance=0.3k,split=5m";
--
-- args << "-o";
-- args << "gpx";
-- args << "-F" << tempName;
-- }
--
- ui_.outputWindow->clear();
- ui_.outputWindow->appendPlainText("gpsbabel " + args.join(" "));
-
-@@ -1005,14 +986,6 @@
- ui_.outputWindow->appendPlainText(outputString);
- if (x) {
- ui_.outputWindow->appendPlainText(tr("Translation successful"));
-- if (babelData_.previewGmap_) {
-- this->hide();
-- GMapDialog dlg(0, tempName, babelData_.debugLevel_ >=1 ? ui_.outputWindow : 0);
-- dlg.show();
-- dlg.exec();
-- QFile(tempName).remove();
-- this->show();
-- }
- }
- else
- ui_.outputWindow->appendPlainText(tr("Error running gpsbabel: %1\n").arg(errorString));
Copied: gpsbabel/repos/community-x86_64/drop-map.patch (from rev 482341, gpsbabel/trunk/drop-map.patch)
===================================================================
--- drop-map.patch (rev 0)
+++ drop-map.patch 2019-06-19 11:39:52 UTC (rev 482342)
@@ -0,0 +1,133 @@
+diff -Naur gpsbabel-gpsbabel_1_6_0.orig/gui/advdlg.cc gpsbabel-gpsbabel_1_6_0/gui/advdlg.cc
+--- gpsbabel-gpsbabel_1_6_0.orig/gui/advdlg.cc 2019-05-02 10:26:47.000000000 +0200
++++ gpsbabel-gpsbabel_1_6_0/gui/advdlg.cc 2019-06-19 13:08:12.030299296 +0200
+@@ -37,7 +37,6 @@
+ {
+ ui_.setupUi(this);
+ ui_.synthShortNames->setChecked(synthShortNames);
+- ui_.previewGmap->setChecked(previewGmap);
+ ui_.debugCombo->setCurrentIndex(debugLevel+1);
+ #if defined (Q_OS_WIN)
+ ui_.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QIcon(":images/ok"));
+@@ -50,7 +49,6 @@
+ void AdvDlg::acceptClicked()
+ {
+ synthShortNames_ = ui_.synthShortNames->isChecked();
+- previewGmap_ = ui_.previewGmap->isChecked();
+ debugLevel_ = ui_.debugCombo->currentIndex()-1;
+ accept();
+ }
+diff -Naur gpsbabel-gpsbabel_1_6_0.orig/gui/advui.ui gpsbabel-gpsbabel_1_6_0/gui/advui.ui
+--- gpsbabel-gpsbabel_1_6_0.orig/gui/advui.ui 2019-05-02 10:26:47.000000000 +0200
++++ gpsbabel-gpsbabel_1_6_0/gui/advui.ui 2019-06-19 13:08:12.030299296 +0200
+@@ -38,13 +38,6 @@
+ </widget>
+ </item>
+ <item>
+- <widget class="QCheckBox" name="previewGmap">
+- <property name="text">
+- <string>Preview in Google Maps</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QComboBox" name="debugCombo">
+diff -Naur gpsbabel-gpsbabel_1_6_0.orig/gui/app.pro gpsbabel-gpsbabel_1_6_0/gui/app.pro
+--- gpsbabel-gpsbabel_1_6_0.orig/gui/app.pro 2019-05-02 10:26:47.000000000 +0200
++++ gpsbabel-gpsbabel_1_6_0/gui/app.pro 2019-06-19 13:10:54.800233673 +0200
+@@ -11,14 +11,8 @@
+ QT += core \
+ gui \
+ network \
+- xml
+-
+-qtHaveModule(webenginewidgets) {
+- QT += webenginewidgets webchannel
+- DEFINES += HAVE_WEBENGINE
+-} else {
+- QT += webkit webkitwidgets
+-}
++ xml \
++ widgets
+
+ unix:DESTDIR = objects
+ unix:MOC_DIR = objects
+@@ -72,13 +66,11 @@
+ SOURCES += filterwidgets.cc
+ SOURCES += format.cc
+ SOURCES += formatload.cc
+-SOURCES += gmapdlg.cc
+ SOURCES += gpx.cc
+ SOURCES += help.cc
+ SOURCES += latlng.cc
+ SOURCES += main.cc
+ SOURCES += mainwindow.cc
+-SOURCES += map.cc
+ SOURCES += optionsdlg.cc
+ SOURCES += preferences.cc
+ SOURCES += processwait.cc
+@@ -98,11 +90,9 @@
+ HEADERS += filterwidgets.h
+ HEADERS += format.h
+ HEADERS += formatload.h
+-HEADERS += gmapdlg.h
+ HEADERS += gpx.h
+ HEADERS += help.h
+ HEADERS += mainwindow.h
+-HEADERS += map.h
+ HEADERS += optionsdlg.h
+ HEADERS += preferences.h
+ HEADERS += processwait.h
+diff -Naur gpsbabel-gpsbabel_1_6_0.orig/gui/mainwindow.cc gpsbabel-gpsbabel_1_6_0/gui/mainwindow.cc
+--- gpsbabel-gpsbabel_1_6_0.orig/gui/mainwindow.cc 2019-05-02 10:26:47.000000000 +0200
++++ gpsbabel-gpsbabel_1_6_0/gui/mainwindow.cc 2019-06-19 13:12:30.790606265 +0200
+@@ -62,7 +62,6 @@
+ #include "donate.h" // for Donate
+ #include "filterdlg.h" // for FilterDialog
+ #include "formatload.h" // for FormatLoad
+-#include "gmapdlg.h" // for GMapDialog
+ #include "help.h" // for ShowHelp
+ #include "optionsdlg.h" // for OptionsDlg
+ #include "preferences.h" // for Preferences
+@@ -1027,24 +1026,6 @@
+ formatList_[fidx].bumpWriteUseCount(1);
+ }
+
+- // Now output for preview in google maps
+- QString tempName;
+- if (babelData_.previewGmap_) {
+- QTemporaryFile ftemp;
+- ftemp.open();
+- tempName = ftemp.fileName();
+- ftemp.close();
+-
+- // Ideally, expost this in the UI. For now, just split the track
+- // if we've no recorded fixes for > 5 mins and we've moved > 300 meters.
+- //args << "-x";
+- //args << "track,pack,sdistance=0.3k,split=5m";
+-
+- args << "-o";
+- args << "gpx";
+- args << "-F" << tempName;
+- }
+-
+ ui_.outputWindow->clear();
+ ui_.outputWindow->appendPlainText("gpsbabel " + args.join(" "));
+
+@@ -1056,14 +1037,6 @@
+ ui_.outputWindow->appendPlainText(outputString);
+ if (x) {
+ ui_.outputWindow->appendPlainText(tr("Translation successful"));
+- if (babelData_.previewGmap_) {
+- this->hide();
+- GMapDialog dlg(nullptr, tempName, babelData_.debugLevel_ >=1 ? ui_.outputWindow : nullptr);
+- dlg.show();
+- dlg.exec();
+- QFile(tempName).remove();
+- this->show();
+- }
+ } else {
+ ui_.outputWindow->appendPlainText(tr("Error running gpsbabel: %1\n").arg(errorString));
+ }
Deleted: fix-map.patch
===================================================================
--- fix-map.patch 2019-06-19 11:39:48 UTC (rev 482341)
+++ fix-map.patch 2019-06-19 11:39:52 UTC (rev 482342)
@@ -1,2183 +0,0 @@
-From e1e9151eab24f4addb79f3128866ad49ae5ef639 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Sat, 2 Dec 2017 20:25:58 -0700
-Subject: [PATCH 1/7] get gui map preview working with webengine.
-
----
- gui/.gitignore | 2 ++
- gui/app.pro | 6 ++++--
- gui/gmapbase.html | 12 ++++++------
- gui/map.cc | 47 ++++++++++++++++++++++++++---------------------
- gui/map.h | 5 ++++-
- 5 files changed, 42 insertions(+), 30 deletions(-)
-
-diff --git a/gui/.gitignore b/gui/.gitignore
-index 0b02c28d..bb724360 100644
---- a/gui/.gitignore
-+++ b/gui/.gitignore
-@@ -4,3 +4,5 @@
- /makelinuxdist.sh
- /objects/
- /tmp/
-+/release/
-+/debug/
-diff --git a/gui/app.pro b/gui/app.pro
-index 78761a06..335fc802 100755
---- a/gui/app.pro
-+++ b/gui/app.pro
-@@ -1,8 +1,10 @@
- # $Id: app.pro,v 1.19 2010-11-01 03:30:42 robertl Exp $
- #
-
--CONFIG += qt release
--#CONFIG += qt debug console
-+CONFIG += qt
-+CONFIG(debug, debug|release) {
-+ CONFIG += console
-+}
-
- # For Mac, x86 and x64, but not PPC binary. Ignored on other OSes.
- # macx:CONFIG -= x86_64
-diff --git a/gui/gmapbase.html b/gui/gmapbase.html
-index a85faa10..39d008eb 100644
---- a/gui/gmapbase.html
-+++ b/gui/gmapbase.html
-@@ -7,7 +7,7 @@
- <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
- type="text/javascript"></script>
- <script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js">
-- </script>"
-+ </script>
- <script type="text/javascript">
- var greenDotIcon = new GIcon();
-
-@@ -398,12 +398,12 @@
-
-
- function load() {
-- if (GBrowserIsCompatible()) {
-- //var map = new GMap2(document.getElementById("map"));
-- //map.setCenter( new GLatLng(0,0), 2 );
-- //var mgr = new MarkerManager(map);
-+ if (GBrowserIsCompatible()) {
-+ if (typeof qt != 'undefined') {
-+ new QWebChannel(qt.webChannelTransport, function(channel) { mclicker = channel.objects.mclicker; });
-+ }
-+ }
- }
-- }
-
-
- </script>
-diff --git a/gui/map.cc b/gui/map.cc
-index 23cee4d7..9ea04d66 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -69,7 +69,17 @@ Map::Map(QWidget *parent,
- manager_ = new QNetworkAccessManager(this);
- connect(this,SIGNAL(loadFinished(bool)),
- this,SLOT(loadFinishedX(bool)));
-- this->logTimeX("Start map constuctor");
-+ this->logTime("Start map constuctor");
-+
-+#if HAVE_WEBENGINE
-+ MarkerClicker *mclicker = new MarkerClicker(this);
-+ QWebChannel* channel = new QWebChannel(this);
-+ this->page()->setWebChannel(channel);
-+ channel->registerObject(QStringLiteral("mclicker"), mclicker);
-+ connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
-+ connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
-+#endif
-+
- QString baseFile = QApplication::applicationDirPath() + "/gmapbase.html";
- if (!QFile(baseFile).exists()) {
- QMessageBox::critical(0, appName,
-@@ -90,7 +100,7 @@ Map::~Map()
- //------------------------------------------------------------------------
- void Map::loadFinishedX(bool f)
- {
-- this->logTimeX("Done initial page load");
-+ this->logTime("Done initial page load");
- if (!f)
- QMessageBox::critical(0, appName,
- tr("Failed to load Google maps base page"));
-@@ -134,28 +144,23 @@ static QString fmtLatLng(const LatLng &l) {
- //------------------------------------------------------------------------
- void Map::showGpxData()
- {
-+
-+#if !defined(HAVE_WEBENGINE)
- MarkerClicker *mclicker = new MarkerClicker(this);
--#if HAVE_WEBENGINE
-- QWebChannel* channel = new QWebChannel(this);
-- this->page()->setWebChannel(channel);
-- channel->registerObject(QStringLiteral("mclicker"), mclicker);
--// this->addToJavaScriptWindowObject("mclicker", mclicker);
--#else
- this->page()->mainFrame()->addToJavaScriptWindowObject("mclicker", mclicker);
--#endif
- connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
-- connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTimeX(const QString &)));
--
-+ connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
-+#endif
- // It is appreciably faster to do the encoding on the C++ side.
- int numLevels = 18;
- double zoomFactor = 2;
- PolylineEncoder encoder(numLevels, zoomFactor, 0.00001);
-
-
-- this->logTimeX("Start defining JS string");
-+ this->logTime("Start defining JS string");
- QStringList scriptStr;
- scriptStr
-- << "mclicker.logTime(\"Start JS execution\");"
-+ << "mclicker.logTimeX(\"Start JS execution\");"
- << "var map = new GMap2(document.getElementById(\"map\"));"
- << "var bounds = new GLatLngBounds;"
- << "var waypts = [];"
-@@ -169,7 +174,7 @@ void Map::showGpxData()
- << "var pn = map.getPane(G_MAP_MARKER_PANE);"
- << "pn.style.KhtmlUserSelect='none';"
- << "pn.style.KhtmlUserDrag='none';"
-- << "mclicker.logTime(\"Done prelim JS definition\");"
-+ << "mclicker.logTimeX(\"Done prelim JS definition\");"
- << QString("var zoomFactor = %1;").arg(zoomFactor)
- << QString("var numLevels = %1;").arg(numLevels)
- ;
-@@ -195,7 +200,7 @@ void Map::showGpxData()
- << " GEvent.bind(waypts[i], \"click\", ftemp, ftemp.clicked);"
- << " map.addOverlay(waypts[i]);"
- << "}"
-- << "mclicker.logTime(\"Done waypoints definition\");"
-+ << "mclicker.logTimeX(\"Done waypoints definition\");"
- ;
-
- // Tracks
-@@ -231,7 +236,7 @@ void Map::showGpxData()
- << " bounds.extend(trkbound.getSouthWest());"
- << " bounds.extend(trkbound.getNorthEast());"
- << "}"
-- << "mclicker.logTime(\"Done track definition\");"
-+ << "mclicker.logTimeX(\"Done track definition\");"
- ;
-
- // Routes
-@@ -263,17 +268,17 @@ void Map::showGpxData()
- << " bounds.extend(rtebound.getSouthWest());"
- << " bounds.extend(rtebound.getNorthEast());"
- << "}"
-- << "mclicker.logTime(\"Done route definition\");"
-+ << "mclicker.logTimeX(\"Done route definition\");"
- ;
-
- scriptStr
- << "map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));"
-- << "mclicker.logTime(\"done setCenter\");"
-+ << "mclicker.logTimeX(\"Done setCenter\");"
- ;
-
-- this->logTimeX("Done defining JS string");
-+ this->logTime("Done defining JS string");
- evaluateJS(scriptStr);
-- this->logTimeX("Done JS evaluation");
-+ this->logTime("Done JS evaluation");
- }
-
- //------------------------------------------------------------------------
-@@ -288,7 +293,7 @@ void Map::markerClicked(int t, int i){
- }
-
- //------------------------------------------------------------------------
--void Map::logTimeX(const QString &s)
-+void Map::logTime(const QString &s)
- {
- // fprintf(stderr, "Log: %s: %d ms\n", s.toStdString().c_str(), stopWatch.elapsed());
- if (textEdit_) {
-diff --git a/gui/map.h b/gui/map.h
-index baa57e91..20dd949a 100644
---- a/gui/map.h
-+++ b/gui/map.h
-@@ -44,6 +44,9 @@ public slots:
- void clickedX(int t, int i) {
- emit markerClicked(t, i);
- }
-+ void logTimeX(const QString &s) {
-+ emit logTime(s);
-+ }
-
- signals:
- void markerClicked(int t, int i);
-@@ -87,7 +90,7 @@ class Map : public QWebView
- void frameTrack(int i);
- void frameRoute(int i);
-
-- void logTimeX(const QString &);
-+ void logTime(const QString &);
-
- signals:
- void waypointClicked(int i);
-
-From 5583695da76991e34ebe93aca619c7aee94386de Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 10:39:24 -0700
-Subject: [PATCH 2/7] update to google maps api v3.
-
----
- gui/gmapbase.html | 553 +++++++++++++++---------------------------------------
- gui/map.cc | 164 ++++++++--------
- 2 files changed, 243 insertions(+), 474 deletions(-)
-
-diff --git a/gui/gmapbase.html b/gui/gmapbase.html
-index 39d008eb..73a14f53 100644
---- a/gui/gmapbase.html
-+++ b/gui/gmapbase.html
-@@ -4,412 +4,167 @@
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
- <title>Google Maps JavaScript</title>
-- <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
-- type="text/javascript"></script>
-+ <script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBx9CSaJaOdcC5SV2LmaZZB6EOxFm1hLH4"
-+ type="text/javascript"></script>
- <script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js">
- </script>
- <script type="text/javascript">
-- var greenDotIcon = new GIcon();
--
-- greenDotIcon.image =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAuF1F01CYAAABhSURBVAjX" +
-- "Vc07EYNgFAXh7/41WhCAjLigjgBKTDA4SIeDJD4igjqXgvc2p9jZOQE+aqlDgx96YYpNfFEJV9rw" +
-- "9sLjEIlAmguaWxHHVmX7WIsr6V/Q34qTsQgTWsx7IQ14LpGFGBx6omuVAAAAAElFTkSuQmCC" +
-- "";
--
-- greenDotIcon.shadow =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAAAsAAAAHCAYAAADebrddAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAuO2OsuMUAAABSSURBVBjT" +
-- "tc2xCYNgGAbh5wt/YZUiA4g4QiZwcifJDCIu8FoKPxZJkSuPg6skvuXhB/4Xt15UFYwYMGHDjk/r" +
-- "wheW7vjEluSKq2rG++Z+JFnhBAGmEETSZHQ5AAAAAElFTkSuQmCC" +
-- "";
--
-- greenDotIcon.transparent =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAvJ2621csAAAA5SURBVAjX" +
-- "ZY3BDQAgDAKPxv2n0rnwZ1vLh4QLINvoKDBdArFJoM4ncHqMhtLjhf+nK/z+ANYIy8IFAWkMmzto" +
-- "LrsAAAAASUVORK5CYII=" +
-- "";
--
-- greenDotIcon.mozPrintImage
-- "data:image/gif;base64,"+
-- "R0lGODdhBwAHAOMAAATCBITWhDTKNLzavBTGFNTe1AzGDEzOTOTi5ATGBJzWnNzi3FzOXAAAAAAA" +
-- "AAAAACwAAAAABwAHAAAEGhCNQ4RaI4GdwuFAYhChtglaogJKyB1LYMIRADs=" +
-- "";
--
-- greenDotIcon.printImage =
-- "data:image/gif;base64,"+
-- "R0lGODlhBwAHAKEAAATCBATGBP///wAAACH5BAEAAAIALAAAAAAHAAcAAAINVIAQp8ePlot0WpVA" +
-- "AQA7" +
-- "";
--
-- greenDotIcon.printShadow =
-- "data:image/gif;base64,"+
-- "R0lGODlhCwAHAIAAAISChP///yH5BAEAAAEALAAAAAALAAcAAAIMjI+py+0JQoxoSlMAADs=" +
-- "";
--
-- greenDotIcon.iconSize = new GSize(7,7);
-- greenDotIcon.shadowSize = new GSize(11,7);
-- greenDotIcon.iconAnchor = new GPoint(4,4);
-- greenDotIcon.infoWindowAnchor = new GPoint(4,0);
-- greenDotIcon.imageMap = [6,0,6,1,6,2,6,3,6,4,6,5,6,6,0,6,0,5,0,4,0,3,0,2,0,1,1,0];
--
-- var redDotIcon = new GIcon();
--
-- redDotIcon.image =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQEfHu83AQcAAABjSURBVAjX" +
-- "Vc0xEYNQFETR836NFgQgAxfUCEiJiUwc0GGBOpGACOo8isDks80Wd+5uwIc2eaDDhilY4gQrmnDL" +
-- "EG9m9BdIxK/3gq424t9NOT/kfVLyLZhqo8qrBAsG7JeRPDEes/UYQBcqkmIAAAAASUVORK5CYII=" +
-- "";
--
-- redDotIcon.shadow =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAAAsAAAAHCAYAAADebrddAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAuO2OsuMUAAABSSURBVBjT" +
-- "tc2xCYNgGAbh5wt/YZUiA4g4QiZwcifJDCIu8FoKPxZJkSuPg6skvuXhB/4Xt15UFYwYMGHDjk/r" +
-- "wheW7vjEluSKq2rG++Z+JFnhBAGmEETSZHQ5AAAAAElFTkSuQmCC" +
-- "";
--
-- redDotIcon.transparent =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAvJ2621csAAAA5SURBVAjX" +
-- "ZY3BDQAgDAKPxv2n0rnwZ1vLh4QLINvoKDBdArFJoM4ncHqMhtLjhf+nK/z+ANYIy8IFAWkMmzto" +
-- "LrsAAAAASUVORK5CYII=" +
-- "";
-- redDotIcon.mozPrintImage
-- "data:image/png;base64,"+
-- "R0lGODdhBwAHAOMAAMwCBNyGhNQyNNy6vNQWFMwKDOTW1NRKTOTe3NQCBNyanNQKDNRaXOTi5AAA" +
-- "AAAAACwAAAAABwAHAAAEGrCNQ4RCAyTAw9lgQWhkInAgoKQJgwTFxhgRADs=" +
-- "";
-- redDotIcon.printImage =
-- "data:image/png;base64,"+
-- "R0lGODlhBwAHAKEAAMwCBNQCBP///wAAACH5BAEAAAIALAAAAAAHAAcAAAIMVAB3yaGMnmtQ0lUA" +
-- "ADs=" +
-- "";
-- redDotIcon.printShadow =
-- "data:image/png;base64,"+
-- "R0lGODlhCwAHAIAAAISChP///yH5BAEAAAEALAAAAAALAAcAAAIMjI+py+0JQoxoSlMAADs=" +
-- "";
--
-- redDotIcon.iconSize = new GSize(7,7);
-- redDotIcon.shadowSize = new GSize(11,7);
-- redDotIcon.iconAnchor = new GPoint(4,4);
-- redDotIcon.infoWindowAnchor = new GPoint(4,0);
-- redDotIcon.imageMap = [6,0,6,1,6,2,6,3,6,4,6,5,6,6,0,6,0,5,0,4,0,3,0,2,0,1,1,0];
-- var blueIcon = new GIcon();
-- blueIcon.image =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcMBidsiEMAAASrSURBVFjD" +
-- "xZZbbBRlGIafPe/szLa7hdKWbqAVExppjBUrWEu5MYoolKiQbIAbORgTjTTBGGOi8cKYaLxSE7nR" +
-- "EGONqBTkoiCKirWRpDFCKTRtw0K32wPd7ml2d2Z2Zme9aDG0QeSwtF/yZ5Lv/5P3+fO+/5eBW6je" +
-- "3t4a7lFZ/+/AsWPH6kOh0AsLBpBIJD7t6OgwFgxAVdWWwcHB2L0CsN9sc/XqR5ZoqorS1fUdUAIP" +
-- "1oHNCZFhuDp8zwFWPVDXnMpq+Pd8kXyz/j57SamPrGFhbEpmKDLBQCR6fPT7t1+D8YE7BbDdbHP7" +
-- "9uCLZ/omm4LbglZBcKEaBVQd8g43wqKlVK2sv9+5fterUcUrmcO/nSx6Bqqrq5vCkxpTiSzDExki" +
-- "UZWRmEYkYTCSMgnJFhSpgupn9u2317+8t+gAZt5oUk2J4YkUY1MZRmMKowmdSKrASNbGqCEwnsyT" +
-- "TWhUrlh3oNgZ8GhqBtNdRXgiTSJrkMpbkU2YAmTJieZy4dQUSrMZSnSdkWIC7NyxvWkqpYKzmpFo" +
-- "lrhaIJyCjNUCixzgkLAVTNw5FX86gaLEzxfVgoaGh5ouXLqKgchgJE3/lQwZwwoeEUQvuAWceg5R" +
-- "yeDNxhgY6nypqACBQPXj5wZTDF9NE00a4HKBSwBBBMmLjQJuTcEnp8jKfd2ET3QXNQN5Q28aSbrw" +
-- "VzmxFFJYHHkD0bTbfD6SlWVmdiJp9WQzVFmmONnX91fRB1EqlZZyavTw5OmP3iPx5/UCdf61719s" +
-- "3PAkquHmQugi+Btecdif69CHDp8qigXBYHCtnFFJ9rY/P0cc66rXP4yrZXR/8yMBSw+RSQdIPvTl" +
-- "rT87nOWBogA0NjY2yXLKnNsXqiSfaa94FosJbj8//HIFSrzTwSyrRW89GHYsbn70rgECgcD6cDj8" +
-- "69y+5t97AKsXzDTkk1C6HEQPeCQQPFCxEn3nwTO2pz/+8q4Acrlc8+TkZNes21c4PAWbbxtmBiwS" +
-- "uBaDZ0Zc9E4vjwfKqnA9tmuHb3d3wb/hs6MEnnritkMYj8fLBEH4YxZU2e59BXsVFHSw2UAUQZwR" +
-- "98zYIEq4DR23kkEQKxBrWzbXVD68WZ8IoiiJHkWTu+XM1FjOiFUbRv5AfuCr85a54lu3bq1fs2ZN" +
-- "r81mE9va2rLX+l4r9syqd3XTsXRa3FsC3lLw+qa/JaU4rFZEJYOgZhFnlqDI2M0CFKwsrbQgZy/1" +
-- "dB75ehOxn8ZvaEFLS0uTLMtcLw4gmxhm7zsWpzl4WvI7QfKDpxTEEhC9WK023EoWp6ri1jSciopT" +
-- "UaitECgtjVFePnDo0CfBFZ2f72q8Jn5DCwKBwLqzZ8/2/Jdnub8/WJ87V15Tu+mNt3Rh+RbsyxY7" +
-- "fSKiBUSnjtMSxZobx+ORh0p8qVPfnujsMPqPHL/lDGia1hyLxY7cNLrm5OXQ0f17gD3TDVcdLPEB" +
-- "BoQvA9E7noTRaLRGkqTfb2+caP0Qvvu/4tbW1mWqqtLQ0NDNPNUsgI0bNzan02na2trGFwQgEAis" +
-- "Gxsb62ceaxaAoijNyWSya8EA4vF4vWEYg/MJ8O8rkCRpS3t7O6FQKMECVSWgzLfoP0Pf/kzVF9v7" +
-- "AAAAAElFTkSuQmCC" +
-- "";
--
-- blueIcon.shadow =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAYAAABU1PscAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcMJYUL+TEAAAEmSURBVFjD" +
-- "7ZetbgJBFEbPEBTpE6DQqyrQpJKgEPuY1U1ln6CqIQh0gyAEQRAV3JptA9v5Hyhscr/kus3knNlv" +
-- "JrtGROhyenQ8KqACKqACKqACKqACKqACt0u/dAFjTHffQAT8+JrwIoLJ/SOLgK+BD8cmrYCvUngg" +
-- "TyAA/wBMI5ZZNJMNn3UGAvB1wlJVjkB7w/s3gn8DNqXwSQIe+KqZnxxPen9snYFXYF9amzOumDPg" +
-- "ga+BZ8f1PL9U732MQQEHfA94BN4zqpQkEeTz2tnhZ8BL4RkAWDYVA/gEdqnwXgEHvKsyFTAARhn1" +
-- "XtgkYq93q4AFfggcbLtkyaiRsWULrEtr8+fh07lANYo/D1ImBP90z/BnAq1M/vurMgf+V6CVeVfg" +
-- "RYRveXcZHbtZkpsAAAAASUVORK5CYII=" +
-- "";
--
-- blueIcon.printImage =
-- "data:image/gif;base64,"+
-- "R0lGODlhIAAgAOcAAAQCBARu3AQ+fHx+fDw+PARWtERurAQeRASG9DRGZJSu3ARKlDRuvAR67AQi" +
-- "ZHyWzFRWVCRWtDyG5DxWvDQCBBRKnAQubAwWBBxyzAQ6pJSWlARi1FxunBR65CxizERmnAQujHSS" +
-- "zCSO7FyKzAQCLCQiJCRClNTS1ASC9ARCpJSm3ExinISKjKyqpARKtGRiZBxSnKSinAwODAR25Bxe" +
-- "rAQqVAx67Bx2zFR6vARSvAQCFARezDx6zByK7DRWxBxOnBQ2bAQSPBRmxDRizAQ2nFyW3CROjJSS" +
-- "lLSytAxOrARy3BQ6hExOTARWxAQqhHye1FRedFSa5AQuhBRy5Aw+pJyWlDxmtAQynCSa/ARGtExq" +
-- "pIyKhDRKjAQmVAyS/CxGfCR+3AR+7AQqbFxeXCxetFSGzAwudAQ+pARq3FRuvCRq1AQylDSO5GyO" +
-- "zARGrKyurAROtFxqdKSmpAwuXAx+7GSCxAQGFDyCzBxOrAQWPCxKpBxClARaxBxu3JyalERqtDQy" +
-- "NKS25DR6zGyW1CxezBR25DRq1CxWpCxqxISChERCRFxaXFRSVERivAyK9ExmrISi1ESG3HySxGSK" +
-- "xER6xCxOlFRqnFxuxAwCBERuvBRKrCyO7AyC9Ax25Bw6hDRKbHya1AQydAwaDFR+xBRqzIyOjDxa" +
-- "vARm1GRmZLS2tBxy3ARu5BR67AQulAQCNARCrKyqrBxSpKSipAQqXAQCHByK9BxOpAQSRAxOtARy" +
-- "5IyKjAQmXAR+9AQqdAQ+rAROvAx+9ARazJyanP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMMALAAAAAAgACAA" +
-- "AAj+AIcJHDjwBMGDCBMqRIJEocOHA2W9gEgxoTACFTMKBHSEAgASrnRofDiGxYcQkEBNMgBD5MiD" +
-- "W6AEUpByUJEobAS8JCjnk4oHbUaUicQGSw8xOwXG+NKmDg5KgsD0cFTIVlIAVSrhMMAAkZBOKID1" +
-- "0ZO05CErZHDl2NAARachJpKWihOhgi8XwZSg4NXH1IGkLRJQyZAlx6m2HTxwSTpMDhA8FWLRwOCF" +
-- "byMHjKvMCTIQwBJBhvas6bJzka6Dva440dIqQwo7L0sNICgKxBrVGdw0KZBnJKyJA1ODkELETY4d" +
-- "aJQs0CiHycALUmwTefUrGJoZKDgJqfAX4hEIA8WPXGl1xRccPqdy7e3UR80QPSY8mZm16yCEUqUG" +
-- "YpJy5YyLJunxgoIN7RHiwwQTpLHCLQgdkQhCFiTRxAartNXJFGoYeMkKlriE0BuoJKTDDzTc0MMm" +
-- "EvBghRaW1AARLIxABAAttACg0RFjMOYQE/jpqJAwD/qYUCohCokQLIsYiZAw4Ck5kAyKlOBkZzZO" +
-- "GRAAOw==" +
-- "";
--
-- blueIcon.mozPrintImage =
-- "data:image/gif;base64,"+
-- "R0lGODdhIAAgAOcAAAQGBAR25Hx6fAQ+pERCRKy2vER6xARaxJSWlFRedCR+3CxGfFyKzBxerMzO" +
-- "zJyWlDxmtASG9AROtLy6tBx2zGR2lARq3KympAQqhFxqdExmrAR+7ISKjBxOnCxqrAQujARGrFSC" +
-- "rJSm3CSO7GyKrMTGxDRizDxalHyWzERenNza3ARWtBRqzKSutHyOrCxOlKS25FR2rARi1JyenDRu" +
-- "vLzCzAx+7Bxu3AQ2nAw+pLSytDR6zByK7AxOrGyGrARy3BxWpGyOzERmpFR+xAx25ARCpFSa5Cxe" +
-- "tNTW1Ly+xBR25BQ2bExqpJSSlAQynBRKrCSa/DRWxHye1KyurFx6rERqtBxyzLS2tDyCzISChDRG" +
-- "ZARezIyatBxClNTS1JyalARSvLy+vARu3KyqtFxuxASC9IyKjBxOrAQylARKtESG3DSO5MzKzExi" +
-- "pOTi5HySxFR6vBRmxKSinAyC9BSS/HSCrGyW1CxezBR65FxupDxWvERuvAR67Hx+fAQ+rARazFRm" +
-- "hCxKpGx+rFSGzBRy5FRuvGSCxCxWpBQ6hDyG5DRq1CxqxJSu3CRWtExmlERivISStCRq1FyW3AyK" +
-- "9HSSzISi1GSKxHSKpMTCxCyO7ARWxDx6zBxy3KyqrHya1ERilAQ6pAx67ERurDRKbFxynAQuhNze" +
-- "3FR6rARm1IyetIyOjCxizDxavMzO1AROvLy6vAR+9BxOpAQulARGtMTGzKSuvAx+9LSyvByK9AxO" +
-- "tARy5ARCrKyutLS2vJyanARu5KSipBR67AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAIAAgAAAI/gDduDEl" +
-- "kODAgwgNKizIcODCgyrYJGz48OHEgVeAHSRYkaJHjgJnaBTIEORFkwYLemmCBAkvXiVSekQ4U+AV" +
-- "DkLeVJJiaU+IMCk7WuR4JQEMRpU82ZFkJBMJUzJJSjVZUMcoESiCMBikZg0UHlwmggxKc8YCrXAM" +
-- "7NgxaQ6eWDSlkkTpBsmXF3BEQVjEgkgEG5ECzd1IVWYYDocgHMkFRgafMsFWpRBb0uOVDI2eDJBw" +
-- "QFcZWDdYFaA5lPQELUVAgWjMJ4KSVXnGfmwo8MKSJx2ANKBAhw+hR6QGXxROEAGgXhzDINqhqMuH" +
-- "WnEXWizBYfAnJxiYyBpQpMTGmgrD7vRBiOSDE+w4Zq1YgXymRfFzHTkp9QHH6i2/foToSLwTgo30" +
-- "oYHDLq5sYUEAZZQRxyktUKYQAlcUdAkaaDjhB2eoeAaLEoREskogQvjgQgU1NFSCKkGV4sQAaWgi" +
-- "gy6wlEEEJ5HcoceNhQjiwEMl9DGWKSf04OIvG8jY4R1RFNIGJEBNNRB8cplSAgkeWMFDJolsAgEV" +
-- "qUAnHUJTICDbd2HwcksrTkYnEIRq0vXdSW44oAoSg8nkJpwElZAFacQ5SFuePvIpV2VxJXSFKnV+" +
-- "RxWfD80wQ5uD2hnlQDMQ0ISiiX5JqEBsAFCobIu6GRAAOw==" +
-- "";
--
-- blueIcon.printShadow =
-- "data:image/gif;base64,"+
-- "R0lGODlhMAAgAIAAAISChP///yH5BAEAAAEALAAAAAAwACAAAAI6jI+py+0Po5y02ouz3rz7D4bi" +
-- "SJbmiabqyrYd4CLwHNApjddobu96foIpeisey0g0IXWxkLD5bEqbBQA7" +
-- "";
--
-- blueIcon.transparent =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcMOggD9MQAAARUSURBVFjD" +
-- "xZdbaBxVGIC/c3Z3dmdnJ91Nazdr1sZ6oUJT7dauGGz7IkiNSotCH6q1D2oFn/IifdO8iaBvweJj" +
-- "oSIiJSCFegEFKRZUkLaktxRDs9mkaTZ7md3ZmdmdnfFhQ2lI29h2k/zwP8w5B/7v/Lf5D77vs5xe" +
-- "uHBB/p9zD6KSZeTUqVNyYmKClZJlAcrlMqOjo2sHYNs24+PjawOwc2dWOraNdeYMQggpxHNSiB1S" +
-- "iKTsFIDwff+um4ffPSSf6d/Or9fWk+1/gq51cequYGa+yrX8LFfzBaZPfoLvz3gr4oH+/q38NXaD" +
-- "w2++zKZ0EqSk5UFE76JvSz8v7X2d7V/8SWjPp3JFAHp7e8nNOcyX60zOmuQLNlNFh3zZZcrwmKgK" +
-- "rFiS3teGCG376IEggvfa9FouthdjctagWLUxHDDcIAYBKqEA1YCKWWmhlB16ntzdWQ8IIaRjm3iR" +
-- "FLnZGvmCTb7cYNpwuW5AzlGYbYRp1GzUukm82aSjHjj0ztvMGzYovUwV6pRsn5wBphSwPgShGAHf" +
-- "I9KwSdTKWFapsx7IZLZz8d+buGiM52tcvm5iuhKiGmg6RFSUZgPNMtHrRa5eO91ZgHS6l/PjBpM3" +
-- "axQqLoTDEFZB1SCmE8An4ljEqwb16hj+5I9eR0PQcptMVcIkUgrCNxChFmgegXicSk839dkK0bpJ" +
-- "Sszzy9jYAzeiuwIYRo2GXWDu9y/xS2e925Mz8eJnZPe+gu1GuDhxCRIZlKffko3xk15HQnDw4EFZ" +
-- "NW3K57/xbjcOILd+TMnu5o/vfiYt/iY/F4JYnGbfPpTwRtkRgGw2S7VqLFmPPqpLL5gE4UEkwQ+/" +
-- "XYcuvZ2Y3Ztp7juO8shu+dAA6XSaXC63ZN1JHAGpg1eDVgXW9YEWhWgM1Cgkt9A8dJzg4Ih8KIBG" +
-- "o8Hc3Nzi2/co0g/EwTNBxCC8AaILxjW9rdEodKcID7xH4oOzsvvVr6V4bK+87yQslUqoqroYqvt9" +
-- "/GAK/CYEAqBpoC0Yjy6EQYsRcZtELBNVS6Jt3sPjPTvYNnhcWlYZy6lSNedpuEVct4V75YS3hO7A" +
-- "gQPScRwGBgYWe+DKMaQ7DTLUvvUt1dsgMZ0QEHEswg0b1bFQrRphq0o8lia14Vl2Pb+LXTu34dyY" +
-- "xr1ywrvjPDAyMiILhQLDw8N3LKlw5qhUNr1ALZJq375rHehdyFAIzTJRbQvNsVDrJppt8lQyhFGf" +
-- "QgkVGT02vGR2CN4pAc+dO3fXmDn/fO6JwEa5+Y2jNNU+CG5CiWtoAjSliSIKyMYNotEqXXGD7386" +
-- "TfPSaNvoVx8unwOO41AsFu+ZuX7rprf4zxmRsHHhK4fv+7f2v+XI/XXCQqFALBa7r2bi+3ZnRrL9" +
-- "+/dL27bJZDKsliwCGBwcpFarMTQ05K0JQDqdZmZmhtWURQCWZVGpVNYOoFQq4bruqgLcqgJd12U2" +
-- "m2UlH6L3fBkJIWS7pHxvNQH+A1CDKAII3hWoAAAAAElFTkSuQmCC" +
-- "";
--
-- blueIcon.iconSize = new GSize(32,32);
-- blueIcon.shadowSize = new GSize(48,32);
-- blueIcon.iconAnchor = new GPoint(4,32);
-- blueIcon.infoWindowAnchor = new GPoint(16,0);
-- blueIcon.imageMap = [9,0,9,1,9,2,9,3,13,4,16,5,17,6,18,7,18,8,18,9,18,10,18,11,17,
-- 12,17,13,18,14,19,15,20,16,21,17,24,18,30,19,29,20,27,21,24,22,20,23,5,24,5,
-- 25,4,26,4,27,4,28,4,29,4,30,3,31,2,31,2,30,3,29,3,28,3,27,3,26,3,25,4,24,4,
-- 23,4,22,4,21,4,20,5,19,5,18,5,17,5,16,5,15,6,14,6,13,6,12,6,11,6,10,6,9,7,
-- 8,7,7,7,6,7,5,7,4,8,3,8,2,8,1,9,0];
--
-- var redIcon = new GIcon();
-- redIcon.image =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcGFC46EYEAAASQSURBVFjD" +
-- "xZdbbBRVGMf/57Lbod2dgXZrSzskaAg21GARXLek8YFYA2oIQcHUQKLGRI1oIPaNBy9vPhDjCyHx" +
-- "gfhmmihpMSSiD2pIqRCpklIuttRiL7Dtbju7szvXc44PbElBUgGX9ktOMvl/k3y/+W6ZA9yD9ff3" +
-- "r8ZDMvpfL3R3d68fHR19ackAcrncZz09PVgyANd1t46MjOQeFgBfyNne3m66rgvRaJ4E8EgCeIwC" +
-- "PA9MOMDVhw6wcuXKlJ0v4OXhoZGP9+7VGigFtW1kslkMpdMYzmS+O3z9+sE0cP5BAdhCzt27d79x" +
-- "deDC5s6mx3lNGKLCshDJ5aA7DlYDSBrG2u3V1e9K142d87wfyp4B0zSTl789BoQ+wnQacnYWolBA" +
-- "GARQSoFTitpoFO/reudUEAx3O86RsgJIpTbHp2fgBD6cXA6FIEBRKYSl1MUphR8EmBYCT2naobIC" +
-- "NDc3L3d9n6+yZjEeOLCUQlEpBFIiABCjFBKAV9IVUFnWEmzcuDE1M2vDQIihkMGSEpNhCBCCesZg" +
-- "UAqhFFylYEuJWSHOlRWgubk5OXrxAioJxR+eh4yUWEEpaimFQSmqKEUgJVyl4CiF0657oKyLqLGx" +
-- "sXV8YBCXwxCTQqCCEGiEIE4pVlAKKAUPQEFKjAvR+6vv/1LWDAilkvSvIdRyjhVKQSOkGI9EtERV" +
-- "Fa3jHDO5HDwAJBrFScs6X+5FxO2CXS3sQtdR3/v8byH65hwGsOnFmpqzr65ahXByEqc8D3Wcv9NG" +
-- "yLFTnneyLCXYs2dPyrEL6C4WOuYHB4BNmnaw4Dg4fPEipurqMGHbMCjFumj0+ycikTVlAWhpaUnm" +
-- "8/kcIUTO19dHIvUaITsUAI0x9Fy5Ar00EQ2c45VY7M9nKiqe/d8Apmm2jo2N9d6p1zJ2iBMCASBU" +
-- "CtWcwygBGJTiUc6x3zB+3q/rR3GPe+GuAEEQpKanp0/P157kvJoT8poAwJVCJSHQCYFBCHRKb516" +
-- "xrCjqur1LxOJwoeG8c3T0ejW+25Cy7LMeDx+Zr62nLE3lxECqRQ4ITe/mjEYc8+lo5SCA6CaMSQp" +
-- "3bk+Gt05HASwpOzLK3VmynXH84zV+Ep91et5g//KQEdHR4vrumhra7ut+aaFOOIqVWSEQGcMOqU3" +
-- "g88rAQHgAfCVQljakp5SqGcMTYyltpnmB8+vXbvNc90vej1v8K4ZSKVSyWw2Kzs7O2fn6xfC0M5K" +
-- "WbNJ047XUfpcJaWIz0FQiggAVyn4paCOEAiEQKKhAVNKwYvFvn7v7NlP0sClBUtgmmbrwMBA791K" +
-- "Mymle7xYbP+Nsaa3DOOAqKh4gWiaaSxbhgjn0JRCGkBBCIScXwp0/afD/f3Hf7TtE/fcA77vJ2dm" +
-- "Zk4s1DgTQlz6NJt9e66RKdAUA5aHQFgExgBMPPAmzGQy6wzD+Og+RllKYPBB/1pva8Jdu3atcV0X" +
-- "GzZs6MMi2W0AW7ZsSebzeezbt29sSQBM02y9cePG71hEo3dcQpKWZfUtGUAmk0lKKUcWE+DWFOi6" +
-- "vr2rqwvXrl3LYonMBDCVSCT4Ygb9B9fYD7KPxTs8AAAAAElFTkSuQmCC" +
-- "";
--
-- redIcon.shadow = "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAYAAABU1PscAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcBFGF7h0YAAAEpSURBVFjD" +
-- "7Zc/S8RAEEffSiqLqyyvEhGr48orrC1ShnxMsRbxU1jIcZXFVWIhcoiIMDZRkpj9n1MDM7BFIAzv" +
-- "ZX+zbIyIMOU6YOKlAiqgAiqgAiqgAiqgAirwd1XkNjDGTHcHAuCX+4QXEUzqH1kAfA3cWXZ5A3zk" +
-- "wgNpAh74Q6AMaHPfrGT4pBnwwFcRsTxJEeh/8GJE+Dqi1S3wnAsfJeCAPwUWref3pu/QTlwDu9zY" +
-- "dLhCZsABXwOXltOtGiv3LkavgAP+DFgnRClKwsvntBuGvwBuMmeAnsQWeImFdwpY4CvgynKizIDj" +
-- "hHh/iTwArzHwVoEB+CPgLXAA543MUD0Bj7mx+fFye40QjezrQczywZ//Z/iOQK9Wv32rTIH/FuhV" +
-- "ORV4EeETEmkXA+M0hOsAAAAASUVORK5CYII=" +
-- "";
--
-- redIcon.printImage = "data:image/gif;base64,"+
-- "R0lGODlhIAAgAMYAAAQCBISGhHwODHx+fLQWFERCREQGBJQqLLQyNMzOzJwSFEw2PJyipNQaHGQO" +
-- "DCQmJDxeXCwGBJSSlIwSFLQuLFQWFJQ2NLxeXFQKDKQiJFxaXOQyNOxydGRmZAwODMQaHKQqLKwW" +
-- "FKyurOQmJGweJIwaHNxSVIyOjEQODKQaHHQODJSalJQSDGxiZOQ+PNxeXBQCBIyKjIQaHLwWFExO" +
-- "TEwGBJwqLKQSFKyqrNwiJDwCBMQqLGRiZISKjIQSFKSipNweHGQWFJQ+PFwKDGRaXOQ6POxWVJya" +
-- "nJQWFMwuLAwCBISGjHwSFLQaHERGREQKDJQuLMRCRPz+/JwWFFwyNNQeHGwODCwqLDQGBJSWlIwW" +
-- "FFwSFJQ6PKwiJFxeXOQ2NGxqbBQWFMwaHKwqLLSytOQuLORSVHQSFJSanJQSFORGROxiZBwCBLwa" +
-- "HFRWVEwKDJwuLKQWFDwGBMwmJKSmpFwODP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5" +
-- "BAEAAHYALAAAAAAgACAAAAf+gHaCg4MJhIeIiYpkIoqOj4M/PJCUiUcFlZmCThIQADAwSpqPXjEW" +
-- "Fy8mUSAyMKOIAUQca2ZqRRsbSQ6vhD9URi5lOUBAOSMNb7yCRyTCDR/QDWJtTMpXaBPTIdtNH20h" +
-- "PspePSxxaT5Mad0EcSrKMS1pKg4qE3EfMyFTWMp0C1ZDrKTr1iSOAGV2flRgIsCHli5z8qWQowxA" +
-- "ljdsBsHYQiFEEAwUX5WSQujJGwNQatRxEOHViQGEIrx5g+FJQHQhM+GYNMjAzDcBBdhrByDTDxqD" +
-- "ZM7E4EDolBDeFKjgBymLhkFyMNCkN+FpmxlNtsVhYsVBjSc5BWmIgSbpE6ZnKnywCNHmKwF9CtIo" +
-- "GHOAKiEJMAmxeRO3HIEPBAre2GvDgqtEIjokYsOkRJcdSZJQsAFHCApIdNw8AgBAiZKimbLwRJjI" +
-- "TYwsrBUdCRwbERnJtRHhuJr70ArevQV5KPAg+CDSYYwHAgA7";
--
-- redIcon.mozPrintImage = "data:image/gif;base64,"+
-- "R0lGODdhIAAgAOcAABQSFHx+fIQSFJRSVLwWFLSytEw2PIQ2NJSWlKQSFEwKDORGRMwuLFwyNMzO" +
-- "zGwODKSmpJx6fIxubNQaHJwqLKQiJJQSDHROTFwKDISKjLQuLNza3MTCxNxeXOQuLLxeXMQqLIw+" +
-- "PLSipLQWFGweJLSmpGRaXJR+fJxWVKSipNzW1HwODKRmZNwiJJwSFFwSFOQ6PISGhIQaHMwaHLy6" +
-- "vJyanKQaHEwSFNxSVNTW1KQqLEQGBIwSFMQaHHRCRJQuLJSalKwWFNTOzHQODKyurKSKjJxqbNwe" +
-- "HJQWFHxWVGQODJSSlOTi5MzKzOxydOQ2NJQ+PLSurHxeXJxeXOxWVISChKRKTLwaHLS2tERCRKQW" +
-- "FFQKDMRCRKyqrLSChNQeHKwiJJQSFHxSVFwODIyOjLQyNNze3MTGxOxiZOQyNMwmJLQaHLSqrGxi" +
-- "ZKRaXHwSFKxydOQmJJwWFGQWFOQ+PISGjMS+vFQWFORSVKwqLEQKDIwWFJwuLJSanNTS1HQSFJxu" +
-- "bJRCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAIAAgAAAI/gCZMDEj" +
-- "kOBAgwgLKhy4kGBChhscPJzYUOFELF0YaqS4USBDhwJrQPjYsSTHgg4QOHBQIAqHiiY1ymSCpU6g" +
-- "Dx1wcNGBggZHgwWBOiRiwgkaPAtgpHnCAJDHpx6BzmRCpAEVOh7iHDnSIs6XIiBBWiRJEAKJNHFm" +
-- "9Fg7YcYaGVOlLhSYA4iAGQRGBNEyoseVEW/IjhVLkEYGC1rCvBEQZk2PEVoOPCU8OSqWNjxWKBnC" +
-- "Q4vfIHLYHBwrUyoWAw8wPHjT+LEWKCVhJoRw480bGUjAqCEQxIaUimGjRgWSpADDAi/KBJmzpURC" +
-- "uRPPZCB5QcGOHwowKHkpVWxDGjEQ4ApRoGCLHgxDBLyJQpI0UPAak5DPvrpzkCk5hJcuSASIQz96" +
-- "kLfFZjzIEcQVPcgxAATPNYQADQydsEV5BLpwYF5B7PVGCBJEIMEZYp1BhhkG5XDDgOlZcOBja4Am" +
-- "BxIW5OFGEw9xEIBYKviQohaOjbCGFgm4kAcFcNghnEM2HsmEHSz8AAYIDDCgAQVWeCFCcAv1B91H" +
-- "NERBRBNxlYQAFoLF9NFDDDlARn6xUSRURWcEsB9lDdLJRJxzvalfR29isUSdbbaXZw0pyBXTm8ER" +
-- "lEIWCJSppKDRAUBiZd6ZiVBAADs=";
--
-- redIcon.printShadow = "data:image/gif;base64,"+
-- "R0lGODlhMAAgAIAAAISChP///yH5BAEAAAEALAAAAAAwACAAAAI5jI+py+0Po5y02ouz3rz7D4bi" +
-- "SJbmiabqyrYd4CLwHNApjddobu96foIpeisey0g0IXWxkLAJjUYLADs=";
--
-- redIcon.transparent = "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-- "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcBLT5+D04AAAQkSURBVFjD" +
-- "xZdNbFVFFIC/Off29VL63m2htaW9LNwQI1VBGtIFblg0MW5INJgQ2LmykmhwrysW7kUSFm5c+/OW" +
-- "ulSiCYvGpEIgkNKmpZS+1/b99c199945LmgbahEKPtuTnGQyM8n55vzNDKrK83RyclJ2su9lVHiO" +
-- "FItFmZmZ4f+S5wJUq1WKxeLeAVhrmZ6e3huA8fFxsdaSDUcYY6TfGBkwRrqMkXYB+M9aPHToEPVa" +
-- "g/fv3eXLCxcYEkHqdcrLy3w3MiL3ymWuPHzIoqp7WQCjqv+6ePnyZZmeuslXg6+QVKu4lRVctYo2" +
-- "Gmgc44swby1XZ2e5Vqm4tnsgiiJuf/8DpC3SR49wq6tkjQZpkqCq+CL053JcLBQ409UlP66tubYC" +
-- "OFXypRWaSYtmtUojSVhTJQU8IC9CK0koZRlvB0F7k3BkZERsq8XhyirzpRLTccz9LGM+TZlLU8rO" +
-- "UXGOVedYU0XbnYQnTpxgZbVOSMrd1KPiHAtpCsYw6HmEImSqWFXqzrGaZe0FOHr0KDO3/qLLCH/G" +
-- "MWXn6BWhX4RQhP0iJM5hVWmq8ru17Q3B8PAw81M3uZ2mLGQZncYQGENehF4RUCUGGs4xn2X8Eceu" +
-- "rQCZKnL/Lv2+T+T7DHgeB3I5+vJ5BvJ5EueIVTG5HD83Gu1tRMYY+frqN2T1Bt+2YmbTdPN0PcbI" +
-- "ewcP8uHhw6QLC/wWxwz4Pu8EgfxqrWuLB86fP0+z3uCntcYW4wCjQUCj2eTKrVssDQzwoF4nFOH1" +
-- "XI43cjlpC8CxY8eo1WoAW4y/lctJYAwKBJ5H8c4dCusVMeT7fNDdzVgQyH8GiKKIubm5bfP9nodv" +
-- "DBmQqnLA9wnXAUIRXvV9Pg1DPgtDMTu8sJ66KUkSSqXSVq90dMiGcV+VLmMoGENoDAWRTR30PM7s" +
-- "38+1vj4+7+mRk52d8sJJWKlUyOfzW+Z6PI99xuBU8Y15fGrPI9wYr6uq0gQOeB4nRXgzl+OL3l6p" +
-- "OEdNlSVrqXkeLVWuW+u20Z07d06stZw6dWrLfCnLsKp4xlDwPAoij40/EQIDxEBLlXS9S8aqDHoe" +
-- "r3ke70YR40eOEFvL9fWK2eaBsbExlpeXuXTp0pYEnEoSN+R5MhoEDIjQJUJ+A0KEDsCq0lo32swy" +
-- "kiyjb2iIJVXi7m4mbtxgUdV98qwQRFHE1NTUU+P1IMscwLDvy0dhSNbZiQkCwn376PB9AlUeAY0s" +
-- "I/V9kkKBK5OT/FKrOYCLO8mBVqvFysrKMzN3/oneYIwRAbqBFFgD9IkX0scv2gnL5TJhGO64jvU/" +
-- "PMe2leHZs2fFWsvx48fZLdkCcPr0aWq1GhMTE25PAKIoYnFxkd0U+ecnpFKp7B1AuVzGOberAJtV" +
-- "EIahjI6OMjs7u6sAmx+Tjdurr6+PpaWlXXPD3/FDQDWrWIGPAAAAAElFTkSuQmCC";
--
-- redIcon.iconSize = new GSize(32,32);
-- redIcon.shadowSize = new GSize(48,32);
-- redIcon.iconAnchor = new GPoint(4,32);
-- redIcon.infoWindowAnchor = new GPoint(16,0);
-- redIcon.imageMap = [9,0,9,1,9,2,9,3,13,4,16,5,17,6,18,7,18,8,18,9,18,10,18,11,17,
-- 12,17,13,18,14,19,15,20,16,21,17,24,18,30,19,29,20,27,21,24,22,20,23,5,24,5,25,
-- 4,26,4,27,4,28,4,29,4,30,3,31,2,31,2,30,3,29,3,28,3,27,3,26,3,25,4,24,4,23,4,
-- 22,4,21,4,20,5,19,5,18,5,17,5,16,5,15,6,14,6,13,6,12,6,11,6,10,6,9,7,8,7,7,7,
-- 6,7,5,7,4,8,3,8,2,8,1,9,0];
--
--
-- function MarkerHandler(t, i) {
-- this.type = t;
-- this.number = i;
-- }
--
-- MarkerHandler.prototype.clicked = function () {
-- mclicker.clickedX(this.type, this.number);
-- }
--
-- function RTPolyline(l, stp, enp, ckobj) {
-- var s = new GMarker(stp, {title:nm,icon:greenDotIcon});
-- var e = new GMarker(enp, {title:nm,icon:redDotIcon});
--
-- this.line = l;
-- this.start = s;
-- this.end = e;
-- GEvent.bind(this.line, "click", ckobj, ckobj.clicked);
-- GEvent.bind(this.start, "click", ckobj, ckobj.clicked);
-- GEvent.bind(this.end, "click", ckobj, ckobj.clicked);
-- map.addOverlay(l);
-- map.addOverlay(s);
-- map.addOverlay(e);
-- }
--
-- RTPolyline.prototype.hide = function () {
-- this.line.hide();
-- this.start.hide();
-- this.end.hide();
-- }
--
-- RTPolyline.prototype.show = function () {
-- this.line.show();
-- this.start.show();
-- this.end.show();
-- }
-- RTPolyline.prototype.getBounds = function () {
-- return this.line.getBounds();
-- }
--
--
-- function load() {
-- if (GBrowserIsCompatible()) {
-- if (typeof qt != 'undefined') {
-- new QWebChannel(qt.webChannelTransport, function(channel) { mclicker = channel.objects.mclicker; });
-- }
-- }
-- }
--
-+/*jslint
-+ this, for
-+*/
-+var greenDotIcon = {};
-+var redDotIcon = {};
-+var blueIcon = {};
-+var redIcon = {};
-+function initialize() {
-+ greenDotIcon.url =
-+ "data:image/png;base64," +
-+ "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-+ "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAuF1F01CYAAABhSURBVAjX" +
-+ "Vc07EYNgFAXh7/41WhCAjLigjgBKTDA4SIeDJD4igjqXgvc2p9jZOQE+aqlDgx96YYpNfFEJV9rw" +
-+ "9sLjEIlAmguaWxHHVmX7WIsr6V/Q34qTsQgTWsx7IQ14LpGFGBx6omuVAAAAAElFTkSuQmCC" +
-+ "";
-+ greenDotIcon.size = new google.maps.Size(7, 7);
-+ greenDotIcon.anchor = new google.maps.Point(4, 4);
-+
-+ redDotIcon.url =
-+ "data:image/png;base64," +
-+ "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-+ "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQEfHu83AQcAAABjSURBVAjX" +
-+ "Vc0xEYNQFETR836NFgQgAxfUCEiJiUwc0GGBOpGACOo8isDks80Wd+5uwIc2eaDDhilY4gQrmnDL" +
-+ "EG9m9BdIxK/3gq424t9NOT/kfVLyLZhqo8qrBAsG7JeRPDEes/UYQBcqkmIAAAAASUVORK5CYII=" +
-+ "";
-+ redDotIcon.size = new google.maps.Size(7, 7);
-+ redDotIcon.anchor = new google.maps.Point(4, 4);
-+
-+ blueIcon.url =
-+ "data:image/png;base64," +
-+ "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-+ "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcMBidsiEMAAASrSURBVFjD" +
-+ "xZZbbBRlGIafPe/szLa7hdKWbqAVExppjBUrWEu5MYoolKiQbIAbORgTjTTBGGOi8cKYaLxSE7nR" +
-+ "EGONqBTkoiCKirWRpDFCKTRtw0K32wPd7ml2d2Z2Zme9aDG0QeSwtF/yZ5Lv/5P3+fO+/5eBW6je" +
-+ "3t4a7lFZ/+/AsWPH6kOh0AsLBpBIJD7t6OgwFgxAVdWWwcHB2L0CsN9sc/XqR5ZoqorS1fUdUAIP" +
-+ "1oHNCZFhuDp8zwFWPVDXnMpq+Pd8kXyz/j57SamPrGFhbEpmKDLBQCR6fPT7t1+D8YE7BbDdbHP7" +
-+ "9uCLZ/omm4LbglZBcKEaBVQd8g43wqKlVK2sv9+5fterUcUrmcO/nSx6Bqqrq5vCkxpTiSzDExki" +
-+ "UZWRmEYkYTCSMgnJFhSpgupn9u2317+8t+gAZt5oUk2J4YkUY1MZRmMKowmdSKrASNbGqCEwnsyT" +
-+ "TWhUrlh3oNgZ8GhqBtNdRXgiTSJrkMpbkU2YAmTJieZy4dQUSrMZSnSdkWIC7NyxvWkqpYKzmpFo" +
-+ "lrhaIJyCjNUCixzgkLAVTNw5FX86gaLEzxfVgoaGh5ouXLqKgchgJE3/lQwZwwoeEUQvuAWceg5R" +
-+ "yeDNxhgY6nypqACBQPXj5wZTDF9NE00a4HKBSwBBBMmLjQJuTcEnp8jKfd2ET3QXNQN5Q28aSbrw" +
-+ "VzmxFFJYHHkD0bTbfD6SlWVmdiJp9WQzVFmmONnX91fRB1EqlZZyavTw5OmP3iPx5/UCdf61719s" +
-+ "3PAkquHmQugi+Btecdif69CHDp8qigXBYHCtnFFJ9rY/P0cc66rXP4yrZXR/8yMBSw+RSQdIPvTl" +
-+ "rT87nOWBogA0NjY2yXLKnNsXqiSfaa94FosJbj8//HIFSrzTwSyrRW89GHYsbn70rgECgcD6cDj8" +
-+ "69y+5t97AKsXzDTkk1C6HEQPeCQQPFCxEn3nwTO2pz/+8q4Acrlc8+TkZNes21c4PAWbbxtmBiwS" +
-+ "uBaDZ0Zc9E4vjwfKqnA9tmuHb3d3wb/hs6MEnnritkMYj8fLBEH4YxZU2e59BXsVFHSw2UAUQZwR" +
-+ "98zYIEq4DR23kkEQKxBrWzbXVD68WZ8IoiiJHkWTu+XM1FjOiFUbRv5AfuCr85a54lu3bq1fs2ZN" +
-+ "r81mE9va2rLX+l4r9syqd3XTsXRa3FsC3lLw+qa/JaU4rFZEJYOgZhFnlqDI2M0CFKwsrbQgZy/1" +
-+ "dB75ehOxn8ZvaEFLS0uTLMtcLw4gmxhm7zsWpzl4WvI7QfKDpxTEEhC9WK023EoWp6ri1jSciopT" +
-+ "UaitECgtjVFePnDo0CfBFZ2f72q8Jn5DCwKBwLqzZ8/2/Jdnub8/WJ87V15Tu+mNt3Rh+RbsyxY7" +
-+ "fSKiBUSnjtMSxZobx+ORh0p8qVPfnujsMPqPHL/lDGia1hyLxY7cNLrm5OXQ0f17gD3TDVcdLPEB" +
-+ "BoQvA9E7noTRaLRGkqTfb2+caP0Qvvu/4tbW1mWqqtLQ0NDNPNUsgI0bNzan02na2trGFwQgEAis" +
-+ "Gxsb62ceaxaAoijNyWSya8EA4vF4vWEYg/MJ8O8rkCRpS3t7O6FQKMECVSWgzLfoP0Pf/kzVF9v7" +
-+ "AAAAAElFTkSuQmCC" +
-+ "";
-+ blueIcon.size = new google.maps.Size(32, 32);
-+ blueIcon.anchor = new google.maps.Point(4, 32);
-+
-+ redIcon.url =
-+ "data:image/png;base64," +
-+ "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-+ "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcGFC46EYEAAASQSURBVFjD" +
-+ "xZdbbBRVGMf/57Lbod2dgXZrSzskaAg21GARXLek8YFYA2oIQcHUQKLGRI1oIPaNBy9vPhDjCyHx" +
-+ "gfhmmihpMSSiD2pIqRCpklIuttRiL7Dtbju7szvXc44PbElBUgGX9ktOMvl/k3y/+W6ZA9yD9ff3" +
-+ "r8ZDMvpfL3R3d68fHR19ackAcrncZz09PVgyANd1t46MjOQeFgBfyNne3m66rgvRaJ4E8EgCeIwC" +
-+ "PA9MOMDVhw6wcuXKlJ0v4OXhoZGP9+7VGigFtW1kslkMpdMYzmS+O3z9+sE0cP5BAdhCzt27d79x" +
-+ "deDC5s6mx3lNGKLCshDJ5aA7DlYDSBrG2u3V1e9K142d87wfyp4B0zSTl789BoQ+wnQacnYWolBA" +
-+ "GARQSoFTitpoFO/reudUEAx3O86RsgJIpTbHp2fgBD6cXA6FIEBRKYSl1MUphR8EmBYCT2naobIC" +
-+ "NDc3L3d9n6+yZjEeOLCUQlEpBFIiABCjFBKAV9IVUFnWEmzcuDE1M2vDQIihkMGSEpNhCBCCesZg" +
-+ "UAqhFFylYEuJWSHOlRWgubk5OXrxAioJxR+eh4yUWEEpaimFQSmqKEUgJVyl4CiF0657oKyLqLGx" +
-+ "sXV8YBCXwxCTQqCCEGiEIE4pVlAKKAUPQEFKjAvR+6vv/1LWDAilkvSvIdRyjhVKQSOkGI9EtERV" +
-+ "Fa3jHDO5HDwAJBrFScs6X+5FxO2CXS3sQtdR3/v8byH65hwGsOnFmpqzr65ahXByEqc8D3Wcv9NG" +
-+ "yLFTnneyLCXYs2dPyrEL6C4WOuYHB4BNmnaw4Dg4fPEipurqMGHbMCjFumj0+ycikTVlAWhpaUnm" +
-+ "8/kcIUTO19dHIvUaITsUAI0x9Fy5Ar00EQ2c45VY7M9nKiqe/d8Apmm2jo2N9d6p1zJ2iBMCASBU" +
-+ "CtWcwygBGJTiUc6x3zB+3q/rR3GPe+GuAEEQpKanp0/P157kvJoT8poAwJVCJSHQCYFBCHRKb516" +
-+ "xrCjqur1LxOJwoeG8c3T0ejW+25Cy7LMeDx+Zr62nLE3lxECqRQ4ITe/mjEYc8+lo5SCA6CaMSQp" +
-+ "3bk+Gt05HASwpOzLK3VmynXH84zV+Ep91et5g//KQEdHR4vrumhra7ut+aaFOOIqVWSEQGcMOqU3" +
-+ "g88rAQHgAfCVQljakp5SqGcMTYyltpnmB8+vXbvNc90vej1v8K4ZSKVSyWw2Kzs7O2fn6xfC0M5K" +
-+ "WbNJ047XUfpcJaWIz0FQiggAVyn4paCOEAiEQKKhAVNKwYvFvn7v7NlP0sClBUtgmmbrwMBA791K" +
-+ "Mymle7xYbP+Nsaa3DOOAqKh4gWiaaSxbhgjn0JRCGkBBCIScXwp0/afD/f3Hf7TtE/fcA77vJ2dm" +
-+ "Zk4s1DgTQlz6NJt9e66RKdAUA5aHQFgExgBMPPAmzGQy6wzD+Og+RllKYPBB/1pva8Jdu3atcV0X" +
-+ "GzZs6MMi2W0AW7ZsSebzeezbt29sSQBM02y9cePG71hEo3dcQpKWZfUtGUAmk0lKKUcWE+DWFOi6" +
-+ "vr2rqwvXrl3LYonMBDCVSCT4Ygb9B9fYD7KPxTs8AAAAAElFTkSuQmCC" +
-+ "";
-+ redIcon.size = new google.maps.Size(32, 32);
-+ redIcon.anchor = new google.maps.Point(4, 32);
-+
-+ setupWebChannel();
-+}
-+
-+
-+function MarkerHandler(t, i) {
-+ this.type = t;
-+ this.number = i;
-+}
-+
-+MarkerHandler.prototype.clicked = function () {
-+ mclicker.clickedX(this.type, this.number);
-+};
-+
-+function RTPolyline(map, l, stp, enp, nm, ckobj) {
-+ var s = new google.maps.Marker({map: map, position: stp, title: nm, icon: greenDotIcon});
-+ var e = new google.maps.Marker({map: map, position: enp, title: nm, icon: redDotIcon});
-+
-+ this.line = l;
-+ this.start = s;
-+ this.end = e;
-+ this.bounds = calcBounds(l.getPath());
-+ attachHandler(l, ckobj);
-+ attachHandler(s, ckobj);
-+ attachHandler(e, ckobj);
-+}
-+
-+RTPolyline.prototype.hide = function () {
-+ this.line.setVisible(false);
-+ this.start.setVisible(false);
-+ this.end.setVisible(false);
-+};
-+
-+RTPolyline.prototype.show = function () {
-+ this.line.setVisible(true);
-+ this.start.setVisible(true);
-+ this.end.setVisible(true);
-+};
-+
-+RTPolyline.prototype.getBounds = function () {
-+ return this.bounds;
-+};
-+
-+function calcBounds(path) {
-+ var bounds = new google.maps.LatLngBounds();
-+ path.forEach(function (e,n) {
-+ bounds.extend(e);
-+ });
-+ return bounds;
-+}
-+
-+function attachHandler(object, handler) {
-+ object.addListener("click", function () {
-+ handler.clicked();
-+ });
-+}
-+
-+function setupWebChannel() {
-+ if (typeof qt != "undefined") {
-+ new QWebChannel(qt.webChannelTransport, function (channel) {mclicker = channel.objects.mclicker;});
-+ }
-+}
-+
-+google.maps.event.addDomListener(window, "load", initialize);
-
- </script>
-+
- </head>
-
-- <body style="height:100%; -khtml-user-select:none;" onload="load()" onunload="GUnload()" topmargin="0" leftmargin="0">
-+ <body style="height:100%; -khtml-user-select:none;" topmargin="0" leftmargin="0">
- <div id="map" style="width:100% ; height:100%"></div>
- </body>
- </html>
-diff --git a/gui/map.cc b/gui/map.cc
-index 9ea04d66..d384a1f6 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -27,8 +27,10 @@
- #include <QNetworkAccessManager>
- #if HAVE_WEBENGINE
- #include <QWebEngineView>
-+#include <QWebEnginePage>
- #include <QWebChannel>
- #else
-+#include <QWebView>
- #include <QWebFrame>
- #include <QWebPage>
- #endif
-@@ -73,21 +75,22 @@ Map::Map(QWidget *parent,
-
- #if HAVE_WEBENGINE
- MarkerClicker *mclicker = new MarkerClicker(this);
-- QWebChannel* channel = new QWebChannel(this);
-+ QWebChannel* channel = new QWebChannel(this->page());
- this->page()->setWebChannel(channel);
-+ // Note: A current limitation is that objects must be registered before any client is initialized.
- channel->registerObject(QStringLiteral("mclicker"), mclicker);
- connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
- connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
- #endif
-
-- QString baseFile = QApplication::applicationDirPath() + "/gmapbase.html";
-+ QString baseFile = QApplication::applicationDirPath() + "/gmapbasev3.html";
- if (!QFile(baseFile).exists()) {
- QMessageBox::critical(0, appName,
- tr("Missing \"gmapbase.html\" file. Check installation"));
- }
- else {
- QString urlStr = "file:///" + baseFile;
-- load(QUrl(urlStr));
-+ this->load(QUrl(urlStr));
- }
- }
-
-@@ -138,7 +141,7 @@ static QStringList makeLiteralVar(const QString &name, const string &s)
-
- //------------------------------------------------------------------------
- static QString fmtLatLng(const LatLng &l) {
-- return QString("%1, %3").arg(l.lat(), 0, 'f', 5) .arg(l.lng(), 0, 'f', 5);
-+ return QString("{lat: %1, lng: %3}").arg(l.lat(), 0, 'f', 5) .arg(l.lng(), 0, 'f', 5);
- }
-
- //------------------------------------------------------------------------
-@@ -146,6 +149,7 @@ void Map::showGpxData()
- {
-
- #if !defined(HAVE_WEBENGINE)
-+ // Historically this was done here in showGpxData.
- MarkerClicker *mclicker = new MarkerClicker(this);
- this->page()->mainFrame()->addToJavaScriptWindowObject("mclicker", mclicker);
- connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
-@@ -160,21 +164,22 @@ void Map::showGpxData()
- this->logTime("Start defining JS string");
- QStringList scriptStr;
- scriptStr
-- << "mclicker.logTimeX(\"Start JS execution\");"
-- << "var map = new GMap2(document.getElementById(\"map\"));"
-- << "var bounds = new GLatLngBounds;"
-+ << "//mclicker.logTimeX(\"Start JS execution\");"
-+ << "var map = new google.maps.Map(document.getElementById(\"map\"));"
-+ << "var bounds = new google.maps.LatLngBounds();"
- << "var waypts = [];"
- << "var rtes = [];"
- << "var trks = [];"
-- << "map.enableScrollWheelZoom();"
-- << "map.enableContinuousZoom();"
-- << "map.addControl(new GLargeMapControl());"
-- << "map.addControl(new GScaleControl());"
-- << "map.addControl(new GMapTypeControl());"
-- << "var pn = map.getPane(G_MAP_MARKER_PANE);"
-- << "pn.style.KhtmlUserSelect='none';"
-- << "pn.style.KhtmlUserDrag='none';"
-- << "mclicker.logTimeX(\"Done prelim JS definition\");"
-+ << "var idx;"
-+ << "//map.enableScrollWheelZoom();"
-+ << "//map.enableContinuousZoom();"
-+ << "//map.addControl(new GLargeMapControl());"
-+ << "//map.addControl(new GScaleControl());"
-+ << "//map.addControl(new GMapTypeControl());"
-+ << "//var pn = map.getPane(G_MAP_MARKER_PANE);"
-+ << "//pn.style.KhtmlUserSelect='none';"
-+ << "//pn.style.KhtmlUserDrag='none';"
-+ << "//mclicker.logTimeX(\"Done prelim JS definition\");"
- << QString("var zoomFactor = %1;").arg(zoomFactor)
- << QString("var numLevels = %1;").arg(numLevels)
- ;
-@@ -185,8 +190,8 @@ void Map::showGpxData()
- int num=0;
- foreach (const GpxWaypoint &pt, gpx_.getWaypoints() ) {
- scriptStr
-- << QString("waypts[%1] = new GMarker(new GLatLng(%2), "
-- "{title:\"%3\",icon:blueIcon});")
-+ << QString("waypts[%1] = new google.maps.Marker({map: map, position: %2, "
-+ "title: \"%3\", icon: blueIcon});")
- .arg(num)
- .arg(fmtLatLng(pt.getLocation()))
- .arg(stripDoubleQuotes(pt.getName()));
-@@ -194,86 +199,85 @@ void Map::showGpxData()
- }
-
- scriptStr
-- << "for( var i=0; i<waypts.length; ++i ) {"
-- << " bounds.extend(waypts[i].getPoint());"
-- << " var ftemp = new MarkerHandler(0, i);"
-- << " GEvent.bind(waypts[i], \"click\", ftemp, ftemp.clicked);"
-- << " map.addOverlay(waypts[i]);"
-+ << "for (idx = 0; idx < waypts.length; idx += 1) {"
-+ << " bounds.extend(waypts[idx].getPosition());"
-+ << " attachHandler(waypts[idx], new MarkerHandler(0, idx));"
- << "}"
-- << "mclicker.logTimeX(\"Done waypoints definition\");"
-+ << "//mclicker.logTimeX(\"Done waypoints definition\");"
- ;
-
- // Tracks
- num = 0;
- foreach (const GpxTrack &trk, gpx_.getTracks()) {
-- vector <LatLng> epts;
-+ vector <LatLng> pts;
-+ QString path;
- foreach (const GpxTrackSegment seg, trk.getTrackSegments()) {
- foreach (const GpxTrackPoint pt, seg.getTrackPoints()) {
-- epts.push_back(pt.getLocation());
-+ pts.push_back(pt.getLocation());
- }
- }
-- string encPts, encLevels;
-- encoder.dpEncode(encPts, encLevels, epts);
-+ // maps v3 Polylines do not use encoded paths.
-+ foreach (const LatLng ll, pts) {
-+ path.append(fmtLatLng(ll));
-+ path.append(QLatin1String(", "));
-+ }
-+ path.chop(2);
-
- scriptStr
-- << QString("var startPt = new GLatLng(%1);").arg(fmtLatLng(epts[0]))
-- << QString("var endPt = new GLatLng(%1);").arg(fmtLatLng(epts[epts.size()-1]))
-- << QString("var idx = %1;").arg(num)
-- << QString("var nm = \"%1\";").arg(stripDoubleQuotes(trk.getName()))
-- << makeLiteralVar("encpts", encPts)
-- << makeLiteralVar("enclvs", encLevels)
--
-- << "var trk = GPolyline.fromEncoded({color:\"#0000E0\", weight:2, opacity:0.6,"
-- << "points:encpts, zoomFactor:zoomFactor, levels:enclvs, numLevels:numLevels});"
-- << "trks[idx] = new RTPolyline(trk, startPt, endPt, new MarkerHandler(1, idx));"
-+ << QString("trks[%1] = new RTPolyline(\n"
-+ " map,\n"
-+ " new google.maps.Polyline({map: map, strokeColor: \"#0000E0\", strokeWeight: 2, strokeOpacity: 0.6, path: [%2]}),\n"
-+ " new google.maps.LatLng(%3),\n"
-+ " new google.maps.LatLng(%4),\n"
-+ " \"%5\",\n"
-+ " new MarkerHandler(1, %1)\n);"
-+ ).arg(num).arg(path).arg(fmtLatLng(pts.front())).arg(fmtLatLng(pts.back())).arg(stripDoubleQuotes(trk.getName()))
-+ << QString("bounds.union(trks[%1].getBounds());").arg(num)
- ;
- num++;
- }
-
- scriptStr
-- << "for( var i=0; i<trks.length; ++i ) {"
-- << " var trkbound = trks[i].getBounds();"
-- << " bounds.extend(trkbound.getSouthWest());"
-- << " bounds.extend(trkbound.getNorthEast());"
-- << "}"
-- << "mclicker.logTimeX(\"Done track definition\");"
-+ << "//mclicker.logTimeX(\"Done track definition\");"
- ;
-
- // Routes
- num = 0;
- foreach (const GpxRoute &rte, gpx_.getRoutes()) {
-- vector <LatLng> epts;
-+ vector <LatLng> pts;
-+ QString path;
- foreach (const GpxRoutePoint &pt, rte.getRoutePoints()) {
-- epts.push_back(pt.getLocation());
-+ pts.push_back(pt.getLocation());
-+ }
-+ // maps v3 Polylines do not use encoded paths.
-+ foreach (const LatLng ll, pts) {
-+ path.append(fmtLatLng(ll));
-+ path.append(QLatin1String(", "));
- }
-- string encPts, encLevels;
-- encoder.dpEncode(encPts, encLevels, epts);
-+ path.chop(2);
-+
- scriptStr
-- << QString("var startPt = new GLatLng(%1);").arg(fmtLatLng(epts[0]))
-- << QString("var endPt = new GLatLng(%1);").arg(fmtLatLng(epts[epts.size()-1]))
-- << QString("var idx = %1;").arg(num)
-- << QString("var nm = \"%1\";").arg(stripDoubleQuotes(rte.getName()))
-- << makeLiteralVar("encpts", encPts)
-- << makeLiteralVar("enclvs", encLevels)
-- << "var rte = GPolyline.fromEncoded({color:\"#8000B0\", weight:2, opacity:0.6,"
-- << " points:encpts, zoomFactor:zoomFactor, levels:enclvs, numLevels:numLevels});"
-- << "rtes[idx] = new RTPolyline(rte, startPt, endPt, new MarkerHandler(2, idx));"
-+ << QString("rtes[%1] = new RTPolyline(\n"
-+ " map,\n"
-+ " new google.maps.Polyline({map: map, strokeColor: \"#0000E0\", strokeWeight: 2, strokeOpacity: 0.6, path: [%2]}),\n"
-+ " new google.maps.LatLng(%3),\n"
-+ " new google.maps.LatLng(%4),\n"
-+ " \"%5\",\n"
-+ " new MarkerHandler(2, %1)\n);"
-+ ).arg(num).arg(path).arg(fmtLatLng(pts.front())).arg(fmtLatLng(pts.back())).arg(stripDoubleQuotes(rte.getName()))
-+ << QString("bounds.union(rtes[%1].getBounds());").arg(num)
- ;
- num++;
- }
-
- scriptStr
-- << "for( var i=0; i<rtes.length; ++i ) {"
-- << " var rtebound = rtes[i].getBounds();"
-- << " bounds.extend(rtebound.getSouthWest());"
-- << " bounds.extend(rtebound.getNorthEast());"
-- << "}"
- << "mclicker.logTimeX(\"Done route definition\");"
- ;
-
- scriptStr
-- << "map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));"
-- << "mclicker.logTimeX(\"Done setCenter\");"
-+ << "map.setCenter(bounds.getCenter());"
-+ << "map.fitBounds(bounds);"
-+ << "//mclicker.logTimeX(\"Done setCenter\");"
- ;
-
- this->logTime("Done defining JS string");
-@@ -326,12 +330,13 @@ void Map::hideAllTracks()
- }
-
- //------------------------------------------------------------------------
-+// TACKY: we assume the waypoints list and JS waypts[] are parallel.
- void Map::showWaypoints(const QList<GpxWaypoint> &waypoints)
- {
- QStringList scriptStr;
- int i=0;
- foreach(const GpxWaypoint &pt, waypoints) {
-- scriptStr << QString("waypts[%1].%2();").arg(i++).arg(pt.getVisible()?"show":"hide");
-+ scriptStr << QString("waypts[%1].setVisible(%2);").arg(i++).arg(pt.getVisible()?"true":"false");
- }
- evaluateJS(scriptStr);
- }
-@@ -341,7 +346,7 @@ void Map::hideAllWaypoints()
- QStringList scriptStr;
- scriptStr
- << "for( var i=0; i<waypts.length; ++i ) {"
-- << " waypts[i].hide();"
-+ << " waypts[i].setVisible(false);"
- << "}"
- ;
- evaluateJS(scriptStr);
-@@ -372,8 +377,8 @@ void Map::hideAllRoutes()
- //------------------------------------------------------------------------
- void Map::setWaypointVisibility(int i, bool show)
- {
-- evaluateJS(QString("waypts[%1].%2();\n")
-- .arg(i).arg(show?"show": "hide"));
-+ evaluateJS(QString("waypts[%1].setVisible(%2);\n")
-+ .arg(i).arg(show?"true": "false"));
- }
-
- //------------------------------------------------------------------------
-@@ -401,7 +406,7 @@ void Map::setRouteVisibility(int i, bool show)
- //------------------------------------------------------------------------
- void Map::panTo(const LatLng &loc)
- {
-- evaluateJS(QString("map.panTo(new GLatLng(%1));").arg(fmtLatLng(loc)));
-+ evaluateJS(QString("map.panTo(new google.maps.LatLng(%1));").arg(fmtLatLng(loc)));
- }
-
- //------------------------------------------------------------------------
-@@ -419,22 +424,24 @@ void Map::resizeEvent ( QResizeEvent * ev)
- //------------------------------------------------------------------------
- void Map::setWaypointColorRed(int i)
- {
-- evaluateJS(QString("waypts[%1].setImage(redIcon.image)").arg(i));
-+ evaluateJS(QString("waypts[%1].setIcon(redIcon)").arg(i));
- }
-
- //------------------------------------------------------------------------
- void Map::setWaypointColorBlue(int i)
- {
-- evaluateJS(QString("waypts[%1].setImage(blueIcon.image)").arg(i));
-+ evaluateJS(QString("waypts[%1].setIcon(blueIcon)").arg(i));
- }
-
- //------------------------------------------------------------------------
- void Map::frameTrack(int i)
- {
- QStringList scriptStr;
-+
- scriptStr
-- << QString("var trkbound = trks[%1].getBounds();").arg(i)
-- << "map.setCenter(trkbound.getCenter(), map.getBoundsZoomLevel(trkbound));"
-+ << QString("map.setCenter(trks[%1].getBounds().getCenter());").arg(i)
-+ << QString("map.fitBounds(trks[%1].getBounds());").arg(i)
-+
- ;
- evaluateJS(scriptStr);
- }
-@@ -445,8 +452,8 @@ void Map::frameRoute(int i)
- {
- QStringList scriptStr;
- scriptStr
-- << QString("var rtebound = rtes[%1].getBounds();").arg(i)
-- << "map.setCenter(rtebound.getCenter(), map.getBoundsZoomLevel(rtebound));"
-+ << QString("map.setCenter(rtes[%1].getBounds().getCenter());").arg(i)
-+ << QString("map.fitBounds(rtes[%1].getBounds());").arg(i)
- ;
- evaluateJS(scriptStr);
- }
-@@ -455,6 +462,13 @@ void Map::frameRoute(int i)
- //------------------------------------------------------------------------
- void Map::evaluateJS(const QString &s, bool upd)
- {
-+QFile data("output.txt");
-+if (data.open(QFile::WriteOnly | QIODevice::Append)) {
-+ QTextStream out(&data);
-+ out << s;
-+ out << '\n';
-+}
-+data.close();
- #if HAVE_WEBENGINE
- this->page()->runJavaScript(s);
- #else
-
-From 99ae1f4e7e73e094be3cac98fca89314ee3d7810 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 10:49:24 -0700
-Subject: [PATCH 3/7] add debug clicker logging back, restore page name.
-
----
- gui/map.cc | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/gui/map.cc b/gui/map.cc
-index d384a1f6..e4d3c1e7 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -83,7 +83,7 @@ Map::Map(QWidget *parent,
- connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
- #endif
-
-- QString baseFile = QApplication::applicationDirPath() + "/gmapbasev3.html";
-+ QString baseFile = QApplication::applicationDirPath() + "/gmapbase.html";
- if (!QFile(baseFile).exists()) {
- QMessageBox::critical(0, appName,
- tr("Missing \"gmapbase.html\" file. Check installation"));
-@@ -164,7 +164,7 @@ void Map::showGpxData()
- this->logTime("Start defining JS string");
- QStringList scriptStr;
- scriptStr
-- << "//mclicker.logTimeX(\"Start JS execution\");"
-+ << "mclicker.logTimeX(\"Start JS execution\");"
- << "var map = new google.maps.Map(document.getElementById(\"map\"));"
- << "var bounds = new google.maps.LatLngBounds();"
- << "var waypts = [];"
-@@ -179,7 +179,7 @@ void Map::showGpxData()
- << "//var pn = map.getPane(G_MAP_MARKER_PANE);"
- << "//pn.style.KhtmlUserSelect='none';"
- << "//pn.style.KhtmlUserDrag='none';"
-- << "//mclicker.logTimeX(\"Done prelim JS definition\");"
-+ << "mclicker.logTimeX(\"Done prelim JS definition\");"
- << QString("var zoomFactor = %1;").arg(zoomFactor)
- << QString("var numLevels = %1;").arg(numLevels)
- ;
-@@ -203,7 +203,7 @@ void Map::showGpxData()
- << " bounds.extend(waypts[idx].getPosition());"
- << " attachHandler(waypts[idx], new MarkerHandler(0, idx));"
- << "}"
-- << "//mclicker.logTimeX(\"Done waypoints definition\");"
-+ << "mclicker.logTimeX(\"Done waypoints definition\");"
- ;
-
- // Tracks
-@@ -238,7 +238,7 @@ void Map::showGpxData()
- }
-
- scriptStr
-- << "//mclicker.logTimeX(\"Done track definition\");"
-+ << "mclicker.logTimeX(\"Done track definition\");"
- ;
-
- // Routes
-@@ -277,7 +277,7 @@ void Map::showGpxData()
- scriptStr
- << "map.setCenter(bounds.getCenter());"
- << "map.fitBounds(bounds);"
-- << "//mclicker.logTimeX(\"Done setCenter\");"
-+ << "mclicker.logTimeX(\"Done setCenter\");"
- ;
-
- this->logTime("Done defining JS string");
-
-From 3aff1296e36d47ca493d2d0b16d38871beaa37d2 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 12:29:25 -0700
-Subject: [PATCH 4/7] improve js debug & cleanup unused map stuff.
-
----
- gui/map.cc | 76 ++++++++++++++++++++++++--------------------------------------
- gui/map.h | 8 +++++++
- 2 files changed, 37 insertions(+), 47 deletions(-)
-
-diff --git a/gui/map.cc b/gui/map.cc
-index e4d3c1e7..9bed4a32 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -37,10 +37,15 @@
- #include <QApplication>
- #include <QCursor>
- #include <QFile>
-+#include <QTextStream>
-
- #include <math.h>
-+#include <string>
-+#include <vector>
- #include "appname.h"
--#include "dpencode.h"
-+
-+using std::string;
-+using std::vector;
-
- //------------------------------------------------------------------------
- static QString stripDoubleQuotes(const QString s) {
-@@ -92,6 +97,14 @@ Map::Map(QWidget *parent,
- QString urlStr = "file:///" + baseFile;
- this->load(QUrl(urlStr));
- }
-+
-+#ifdef DEBUG_JS_GENERATION
-+ dbgdata_ = new QFile("mapdebug.js");
-+ if (dbgdata_->open(QFile::WriteOnly | QIODevice::Truncate)) {
-+ dbgout_ = new QTextStream(dbgdata_);
-+ }
-+#endif
-+
- }
-
- //------------------------------------------------------------------------
-@@ -99,6 +112,16 @@ Map::~Map()
- {
- if (busyCursor_)
- QApplication::restoreOverrideCursor();
-+#ifdef DEBUG_JS_GENERATION
-+ if (dbgout_) {
-+ delete dbgout_;
-+ dbgout_ = NULL;
-+ }
-+ if (dbgdata_) {
-+ delete dbgdata_;
-+ dbgdata_ = NULL;
-+ }
-+#endif
- }
- //------------------------------------------------------------------------
- void Map::loadFinishedX(bool f)
-@@ -115,30 +138,6 @@ void Map::loadFinishedX(bool f)
- busyCursor_ = false;
- }
-
--//------------------------------------------------------------------------
--
--static QStringList makeLiteralVar(const QString &name, const string &s)
--{
-- QStringList out;
-- out << QString("var %1 = ").arg(name);
--
-- QString ws = "\"";
-- for (unsigned int i=0; i<s.length(); i++) {
-- if (s[i] =='\\') {
-- ws += s[i];
-- }
-- ws += s[i];
-- if (ws.length() > 5120) {
-- ws += "\" + ";
-- out << ws;
-- ws = "\"";
-- }
-- }
-- ws += "\";";
-- out << ws;
-- return out;
--}
--
- //------------------------------------------------------------------------
- static QString fmtLatLng(const LatLng &l) {
- return QString("{lat: %1, lng: %3}").arg(l.lat(), 0, 'f', 5) .arg(l.lng(), 0, 'f', 5);
-@@ -155,11 +154,6 @@ void Map::showGpxData()
- connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
- connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
- #endif
-- // It is appreciably faster to do the encoding on the C++ side.
-- int numLevels = 18;
-- double zoomFactor = 2;
-- PolylineEncoder encoder(numLevels, zoomFactor, 0.00001);
--
-
- this->logTime("Start defining JS string");
- QStringList scriptStr;
-@@ -171,17 +165,7 @@ void Map::showGpxData()
- << "var rtes = [];"
- << "var trks = [];"
- << "var idx;"
-- << "//map.enableScrollWheelZoom();"
-- << "//map.enableContinuousZoom();"
-- << "//map.addControl(new GLargeMapControl());"
-- << "//map.addControl(new GScaleControl());"
-- << "//map.addControl(new GMapTypeControl());"
-- << "//var pn = map.getPane(G_MAP_MARKER_PANE);"
-- << "//pn.style.KhtmlUserSelect='none';"
-- << "//pn.style.KhtmlUserDrag='none';"
- << "mclicker.logTimeX(\"Done prelim JS definition\");"
-- << QString("var zoomFactor = %1;").arg(zoomFactor)
-- << QString("var numLevels = %1;").arg(numLevels)
- ;
-
- mapPresent_ = true;
-@@ -462,13 +446,11 @@ void Map::frameRoute(int i)
- //------------------------------------------------------------------------
- void Map::evaluateJS(const QString &s, bool upd)
- {
--QFile data("output.txt");
--if (data.open(QFile::WriteOnly | QIODevice::Append)) {
-- QTextStream out(&data);
-- out << s;
-- out << '\n';
--}
--data.close();
-+#ifdef DEBUG_JS_GENERATION
-+ *dbgout_ << s;
-+ *dbgout_ << '\n';
-+ dbgout_->flush();
-+#endif
- #if HAVE_WEBENGINE
- this->page()->runJavaScript(s);
- #else
-diff --git a/gui/map.h b/gui/map.h
-index 20dd949a..c25653f4 100644
---- a/gui/map.h
-+++ b/gui/map.h
-@@ -29,8 +29,12 @@
- #endif
- #include <QPlainTextEdit>
- #include <QTime>
-+#include <QFile>
-+#include <QTextStream>
- #include "gpx.h"
-
-+//#define DEBUG_JS_GENERATION
-+
- class QNetworkAccessManager;
-
-
-@@ -98,6 +102,10 @@ class Map : public QWebView
- void routeClicked(int i);
-
- private:
-+#ifdef DEBUG_JS_GENERATION
-+ QFile *dbgdata_;
-+ QTextStream *dbgout_;
-+#endif
- QNetworkAccessManager *manager_;
- const Gpx &gpx_;
- bool mapPresent_;
-
-From dd5931ab1e8d77d89e79b49d1176947b5443e3a3 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 16:08:50 -0700
-Subject: [PATCH 5/7] update gmapbase.html for modern stds compliance.
-
----
- gui/gmapbase.html | 17 +++++++----------
- 1 file changed, 7 insertions(+), 10 deletions(-)
-
-diff --git a/gui/gmapbase.html b/gui/gmapbase.html
-index 73a14f53..d0be535b 100644
---- a/gui/gmapbase.html
-+++ b/gui/gmapbase.html
-@@ -1,14 +1,11 @@
--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
--<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%">
-+<!DOCTYPE html>
-+<html style="height: 100%">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
- <title>Google Maps JavaScript</title>
-- <script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBx9CSaJaOdcC5SV2LmaZZB6EOxFm1hLH4"
-- type="text/javascript"></script>
-- <script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js">
-- </script>
-- <script type="text/javascript">
-+ <script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBx9CSaJaOdcC5SV2LmaZZB6EOxFm1hLH4"></script>
-+ <script src="qrc:///qtwebchannel/qwebchannel.js"></script>
-+ <script>
- /*jslint
- this, for
- */
-@@ -164,7 +161,7 @@
-
- </head>
-
-- <body style="height:100%; -khtml-user-select:none;" topmargin="0" leftmargin="0">
-- <div id="map" style="width:100% ; height:100%"></div>
-+ <body style="height: 100%; margin: 0">
-+ <div id="map" style="width: 100%; height: 100%"></div>
- </body>
- </html>
-
-From 716989222715498c502a40e1e270b47fd2d16d66 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 16:30:13 -0700
-Subject: [PATCH 6/7] delete obsolete & unused html files.
-
----
- gui/basepage.html | 29 ----
- gui/testx.html | 121 ---------------
- gui/testy.html | 449 ------------------------------------------------------
- 3 files changed, 599 deletions(-)
- delete mode 100644 gui/basepage.html
- delete mode 100644 gui/testx.html
- delete mode 100644 gui/testy.html
-
-diff --git a/gui/basepage.html b/gui/basepage.html
-deleted file mode 100644
-index 70ef378d..00000000
---- a/gui/basepage.html
-+++ /dev/null
-@@ -1,29 +0,0 @@
--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
--<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%">
-- <head>
-- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
-- <title>Google Maps JavaScript</title>
-- <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
-- type="text/javascript"></script>
-- <script type="text/javascript">
--
-- //<![CDATA[
--
-- function load() {
-- if (GBrowserIsCompatible()) {
-- var map = new GMap2(document.getElementById("map"));
-- map.setCenter( new GLatLng(0,0),2 );
-- map.enableContinuousZoom();
-- map.disableDragging();
-- }
-- }
--
-- //]]>
-- </script>
-- </head>
--
-- <body style="height:100%" onload="load()" onunload="GUnload()" topmargin="0" leftmargin="0">
-- <div id="map" style="width:100% ; height:100%"></div>
-- </body>
--</html>
-diff --git a/gui/testx.html b/gui/testx.html
-deleted file mode 100644
-index aeae96e2..00000000
---- a/gui/testx.html
-+++ /dev/null
-@@ -1,121 +0,0 @@
--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
--<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%">
-- <head>
-- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
-- <title>Google Maps JavaScript</title>
-- <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
-- type="text/javascript"></script>
-- <script type="text/javascript">
--
--myuri="data:image/png;base64,"+
--"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAQK0lEQVR4AQEgEN/vAP///wDg4OAA" +
--"4ODgAODg4ADg4OAA4ODgAODg4ADg4OAA4ODgBNXV1RbPz88A0NDQAN3a1QCBj6MAAB9WAAQnXAAE" +
--"J1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQn" +
--"XAD///8AAP///wCWlpYAlpaWAJaWlgCWlpYAlpaWAJaWlgCUlJQAoqKiPJWVlWR6enoAg4F9AGZv" +
--"fAAMLWAAAiVbAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdc" +
--"AAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBkZGQAZGRkAGRkZABkZGQAZGRkAGRkZABgYGAAh4eH" +
--"p2VlZYNHREAANz9KAAQkWAACJVsABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wA" +
--"BCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cA" +
--"Z2dnAGdnZwBkZGQGj4+P62xqZ3BFTl0AByhaAAElWwAEJ1sABCdcAAQnXAAEJ1wABCdcAAQnXAAE" +
--"J1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBn" +
--"Z2cAZ2dnAGdnZwBnZ2cAZ2dnAGdnZwBpaWkmlJOQ/T5JWUIBIFgSACJbMgImXTYAI1ooACBWCgEi" +
--"VgAEJlsABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdc" +
--"AAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZ2dnAGZmZgB0c3JOfIGJ/z1ajdtvibr1eZPD" +
--"/3KPxP9fgrz9Pmqp4xlIh6MDJ142AyNWAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wA" +
--"BCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZ2dnAGRkZACAf3x8" +
--"ZXGF/4mgz/+lueH/kanZ/4Oh1v92nNj/aJzf/1Wc6f8vhtn/CT19gwMjVgAEJ1wABCdcAAQnXAAE" +
--"J1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBn" +
--"Z2cAZ2dnAGNjYwCKiISrV2iH/32Yz/99mc//b5DL/2GKzP9Th8//RYfX/ziQ5/8unv//H4bq/wcy" +
--"cGwDJVgABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP//" +
--"/wBnZ2cAZ2dnAGdnZwBnZ2cAZ2dnAGRkZAKOjYrVSGCL/26OzP9hhMT/VH3D/0d5xv85ec3/Kn7a" +
--"/xyK7/8Rivf/GH/w/xtQp9sDI1UIBCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wA" +
--"BCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZ2dnAGpqaRyJior1OlmS/1d8w/9Hcbv/" +
--"O228/yppwf8Za83/DXbh/wWF9f8Jf/H/IHHg/yxPqe8DJVgYBCdcAAQnXAAEJ1wABCdcAAQnXAAE" +
--"J1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZmZmAHRzckJ8" +
--"gYf/LFKZ/z5puP8oXLP/EFGz/wNUvf8AYtH/AHns/wKE9v8QeOj/MGbT/yM/jMUBJFYABCdcAAQn" +
--"XAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdn" +
--"ZwBnZ2cAZGRkAIB+e2xpc4P/Hkuf/xtQrP8DQqr/AEiz/wBYxf8Abd3/AIL1/wiA8v8ccN//OFu+" +
--"/w4taGICJlkABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8A" +
--"AP///wBnZ2cAZ2dnAGdnZwBnZ2cAY2NjAIyKhZ1NX37/Azqg/wA7pv8ARrL/AFLA/wBi0/8AeOv/" +
--"AoT3/w956v8vaNX/K0aOxQAkVgIEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAE" +
--"J1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZGRkAJOQi8kxTX//C0Kl/xRLofkW" +
--"UKTtF1qw7xdvzf0QivP/B4T3/xpw4P88YL//DS9rmwIlWAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQn" +
--"XAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAaGhoEpKR" +
--"j/EgO2bDCC5oVgosXiQGKFoQByhaDgwuYUwWSZb/KnbM/zdy1/8nSZ7/AC6O/wQoYFAEJlkABCdc" +
--"AAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dn" +
--"AGdnZwBmZmYAcHBwNo6Ojf9iZ20uHThiAAAjWgAEJ1wABCZZAAIoaIEAK5T/DTeP/z9gov8FM5T/" +
--"ADyo/wFAm+8EJ1s0BCVZAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD/" +
--"//8AAP///wBnZ2cAZ2dnAGdnZwBkZGQAe3t7ZoSEhfF7encMenp8ABk2YgAAJFsABCdZGAEuhekA" +
--"Mpz/AC+S/wMthf8AOaH/AEev/wBWxP8CT63rBClgRAQiUwAEJ1sABCdcAAQnXAAEJ1wABCdcAAQn" +
--"XAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBjY2MAhYWFnX19fc1+fX0Ae3x9ABMy" +
--"YAABJFkABCllfAAwk/8AMJH/AS+N/wA2nf8ARKz/AFG7/wBezP8Ab+H/AW3V/QNFjaEEJVggAyNV" +
--"AAMmWgAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBkZGQAjY2N" +
--"z3h4eJuIhoQAW2Z2AAAjWgAEJ1skAi1+8QEwk/8AMJL/ADWc/wBCqv8AT7j/AFzJ/wBp2P8Aduf/" +
--"AYX5/wmD9/8QZMb1DkGKqQcsZU4CJVgSASRWAAElWAACJVkABCdcAAQnXAD///8AAP///wBnZ2cA" +
--"Z2dnAGdnZwBoaGgMj4+P8XZ2dmSLiYYAOk1sAAAhWAAEKWZqADKa/wAxmP8AM5r/AD+n/wBNtv8A" +
--"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";
--
--var myIcon = new GIcon();
--//myIcon.image = 'icons/image.png';
--myIcon.image = myuri;
--myIcon.shadow = 'icons/shadow.png';
--myIcon.iconSize = new GSize(32,32);
--myIcon.shadowSize = new GSize(48,32);
--myIcon.iconAnchor = new GPoint(0,32);
--myIcon.infoWindowAnchor = new GPoint(16,0);
--myIcon.printImage = 'icons/printImage.gif';
--myIcon.mozPrintImage = 'icons/mozPrintImage.gif';
--myIcon.printShadow = 'icons/printShadow.gif';
--myIcon.transparent = 'icons/transparent.png';
--myIcon.imageMap = [9,0,9,1,9,2,9,3,14,4,16,5,17,6,18,7,19,8,19,9,18,10,18,11,18,12,17,13,18,14,19,15,20,16,22,17,25,18,30,19,29,20,27,21,25,22,22,23,19,24,21,25,25,26,26,27,23,28,6,29,6,30,6,31,1,31,1,30,1,29,3,28,3,27,3,26,3,25,3,24,4,23,4,22,4,21,4,20,4,19,5,18,5,17,5,16,5,15,5,14,6,13,6,12,6,11,6,10,6,9,6,8,7,7,7,6,7,5,7,4,7,3,8,2,8,1,8,0];
-- //<![CDATA[
-- function load() {
-- if (GBrowserIsCompatible()) {
-- var map = new GMap2(document.getElementById("map"));
-- map.setCenter( new GLatLng(0,0),2 );
-- map.enableContinuousZoom();
-- map.disableDragging();
-- var marker = new GMarker(new GLatLng(45, -90));
-- map.addOverlay(marker);
-- var marker2 = new GMarker(new GLatLng(0, 0), {icon:myIcon});
-- map.addOverlay(marker2);
-- }
-- }
--
-- //]]>
-- </script>
-- </head>
--
-- <body style="height:100%" onload="load()" onunload="GUnload()" topmargin="0" leftmargin="0">
-- <div id="map" style="width:100% ; height:100%"></div>
-- </body>
--</html>
-diff --git a/gui/testy.html b/gui/testy.html
-deleted file mode 100644
-index 3341b113..00000000
---- a/gui/testy.html
-+++ /dev/null
-@@ -1,449 +0,0 @@
--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
--<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%">
-- <head>
-- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
-- <title>Google Maps JavaScript</title>
-- <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
-- type="text/javascript"></script>
-- <script src="http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js"> </script>
-- <script type="text/javascript">
--
-- var blueIcon = new GIcon();
-- blueIcon.image =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAQK0lEQVR4AQEgEN/vAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPT0yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs7OzLLKysnQAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo6Oj" +
-- "wWFhYXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAm5ub/zw8PF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzQWlJOT/zMAAAoAAAAOAAAuNgAAMTwAABYeAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeXVxShomM/0Rln/t5kcH/h6DR" +
-- "/32c0v9kicX/QG6u/xpTmrcAABgmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKiYeL" +
-- "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" +
-- "gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAALW1tZdnZ2fXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrNNYWFibAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJubm/9UVFR2AAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMUEFB" +
-- "Qf8gICBmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAGAAAAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAz867BuDoBEAAAAASUVORK5CYII=" +
-- "";
--
-- blueIcon.shadow =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAYAAABU1PscAAAYK0lEQVR4AQEgGN/nAP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wAA////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAA////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAA////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAKAAAACoAAAAqAAAAKgAAACoAAAAqAAAABgAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAD///8A////AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABUAAAAVAAAAFQAAABUAAAA" +
-- "VAAAAFQAAABUAAAAVAAAAFQAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wAA////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQA" +
-- "AABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8AAP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABU" +
-- "AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/" +
-- "//8A////AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAFQAAABUAAAAVAAAAFIAAABUAAAAVAAA" +
-- "AFIAAABUAAAAVAAAAFQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wAA////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAABAAAAFQAAABUAAAAVAAAAFQAAABUAAAAKgAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP//" +
-- "/wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAACAAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAA" +
-- "VAAAAFQAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD///8A" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAFQA" +
-- "AABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAAAsAAAAKgAAACoAAAAQAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wAA////AP//" +
-- "/wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAqAAAANAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABU" +
-- "AAAAVAAAAFQAAAAqAAAAKgAAABAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8AAP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAABoA" +
-- "AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACoAAAAqAAAAKgAA" +
-- "ACoAAAAqAAAAKgAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AAD///8A////AP///wD///8AAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wAA////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8AAP///wD///8AAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAD///8AAAAAAAAA" +
-- "AAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wBJdBZJOfZP2gAAAABJRU5ErkJggg==" +
-- "";
-- blueIcon.iconSize = new GSize(32,32);
-- blueIcon.shadowSize = new GSize(48,32);
-- blueIcon.iconAnchor = new GPoint(4,32);
-- blueIcon.infoWindowAnchor = new GPoint(16,0);
-- blueIcon.printImage =
-- "data:image/png;base64,"+
-- "R0lGODlhIAAgAOcAAAQCBARu3AQ+fHx+fDw+PARWtERurAQeRASG9DRGZJSu3ARKlDRuvAR67AQi" +
-- "ZHyWzFRWVCRWtDyG5DxWvDQCBBRKnAQubAwWBBxyzAQ6pJSWlARi1FxunBR65CxizERmnAQujHSS" +
-- "zCSO7FyKzAQCLCQiJCRClNTS1ASC9ARCpJSm3ExinISKjKyqpARKtGRiZBxSnKSinAwODAR25Bxe" +
-- "rAQqVAx67Bx2zFR6vARSvAQCFARezDx6zByK7DRWxBxOnBQ2bAQSPBRmxDRizAQ2nFyW3CROjJSS" +
-- "lLSytAxOrARy3BQ6hExOTARWxAQqhHye1FRedFSa5AQuhBRy5Aw+pJyWlDxmtAQynCSa/ARGtExq" +
-- "pIyKhDRKjAQmVAyS/CxGfCR+3AR+7AQqbFxeXCxetFSGzAwudAQ+pARq3FRuvCRq1AQylDSO5GyO" +
-- "zARGrKyurAROtFxqdKSmpAwuXAx+7GSCxAQGFDyCzBxOrAQWPCxKpBxClARaxBxu3JyalERqtDQy" +
-- "NKS25DR6zGyW1CxezBR25DRq1CxWpCxqxISChERCRFxaXFRSVERivAyK9ExmrISi1ESG3HySxGSK" +
-- "xER6xCxOlFRqnFxuxAwCBERuvBRKrCyO7AyC9Ax25Bw6hDRKbHya1AQydAwaDFR+xBRqzIyOjDxa" +
-- "vARm1GRmZLS2tBxy3ARu5BR67AQulAQCNARCrKyqrBxSpKSipAQqXAQCHByK9BxOpAQSRAxOtARy" +
-- "5IyKjAQmXAR+9AQqdAQ+rAROvAx+9ARazJyanP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMMALAAAAAAgACAA" +
-- "AAj+AIcJHDjwBMGDCBMqRIJEocOHA2W9gEgxoTACFTMKBHSEAgASrnRofDiGxYcQkEBNMgBD5MiD" +
-- "W6AEUpByUJEobAS8JCjnk4oHbUaUicQGSw8xOwXG+NKmDg5KgsD0cFTIVlIAVSrhMMAAkZBOKID1" +
-- "0ZO05CErZHDl2NAARachJpKWihOhgi8XwZSg4NXH1IGkLRJQyZAlx6m2HTxwSTpMDhA8FWLRwOCF" +
-- "byMHjKvMCTIQwBJBhvas6bJzka6Dva440dIqQwo7L0sNICgKxBrVGdw0KZBnJKyJA1ODkELETY4d" +
-- "aJQs0CiHycALUmwTefUrGJoZKDgJqfAX4hEIA8WPXGl1xRccPqdy7e3UR80QPSY8mZm16yCEUqUG" +
-- "YpJy5YyLJunxgoIN7RHiwwQTpLHCLQgdkQhCFiTRxAartNXJFGoYeMkKlriE0BuoJKTDDzTc0MMm" +
-- "EvBghRaW1AARLIxABAAttACg0RFjMOYQE/jpqJAwD/qYUCohCokQLIsYiZAw4Ck5kAyKlOBkZzZO" +
-- "GRAAOw==" +
-- "";
--
-- blueIcon.mozPrintImage =
-- "data:image/png;base64,"+
-- "R0lGODdhIAAgAOcAAAQGBAR25Hx6fAQ+pERCRKy2vER6xARaxJSWlFRedCR+3CxGfFyKzBxerMzO" +
-- "zJyWlDxmtASG9AROtLy6tBx2zGR2lARq3KympAQqhFxqdExmrAR+7ISKjBxOnCxqrAQujARGrFSC" +
-- "rJSm3CSO7GyKrMTGxDRizDxalHyWzERenNza3ARWtBRqzKSutHyOrCxOlKS25FR2rARi1JyenDRu" +
-- "vLzCzAx+7Bxu3AQ2nAw+pLSytDR6zByK7AxOrGyGrARy3BxWpGyOzERmpFR+xAx25ARCpFSa5Cxe" +
-- "tNTW1Ly+xBR25BQ2bExqpJSSlAQynBRKrCSa/DRWxHye1KyurFx6rERqtBxyzLS2tDyCzISChDRG" +
-- "ZARezIyatBxClNTS1JyalARSvLy+vARu3KyqtFxuxASC9IyKjBxOrAQylARKtESG3DSO5MzKzExi" +
-- "pOTi5HySxFR6vBRmxKSinAyC9BSS/HSCrGyW1CxezBR65FxupDxWvERuvAR67Hx+fAQ+rARazFRm" +
-- "hCxKpGx+rFSGzBRy5FRuvGSCxCxWpBQ6hDyG5DRq1CxqxJSu3CRWtExmlERivISStCRq1FyW3AyK" +
-- "9HSSzISi1GSKxHSKpMTCxCyO7ARWxDx6zBxy3KyqrHya1ERilAQ6pAx67ERurDRKbFxynAQuhNze" +
-- "3FR6rARm1IyetIyOjCxizDxavMzO1AROvLy6vAR+9BxOpAQulARGtMTGzKSuvAx+9LSyvByK9AxO" +
-- "tARy5ARCrKyutLS2vJyanARu5KSipBR67AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAIAAgAAAI/gDduDEl" +
-- "kODAgwgNKizIcODCgyrYJGz48OHEgVeAHSRYkaJHjgJnaBTIEORFkwYLemmCBAkvXiVSekQ4U+AV" +
-- "DkLeVJJiaU+IMCk7WuR4JQEMRpU82ZFkJBMJUzJJSjVZUMcoESiCMBikZg0UHlwmggxKc8YCrXAM" +
-- "7NgxaQ6eWDSlkkTpBsmXF3BEQVjEgkgEG5ECzd1IVWYYDocgHMkFRgafMsFWpRBb0uOVDI2eDJBw" +
-- "QFcZWDdYFaA5lPQELUVAgWjMJ4KSVXnGfmwo8MKSJx2ANKBAhw+hR6QGXxROEAGgXhzDINqhqMuH" +
-- "WnEXWizBYfAnJxiYyBpQpMTGmgrD7vRBiOSDE+w4Zq1YgXymRfFzHTkp9QHH6i2/foToSLwTgo30" +
-- "oYHDLq5sYUEAZZQRxyktUKYQAlcUdAkaaDjhB2eoeAaLEoREskogQvjgQgU1NFSCKkGV4sQAaWgi" +
-- "gy6wlEEEJ5HcoceNhQjiwEMl9DGWKSf04OIvG8jY4R1RFNIGJEBNNRB8cplSAgkeWMFDJolsAgEV" +
-- "qUAnHUJTICDbd2HwcksrTkYnEIRq0vXdSW44oAoSg8nkJpwElZAFacQ5SFuePvIpV2VxJXSFKnV+" +
-- "RxWfD80wQ5uD2hnlQDMQ0ISiiX5JqEBsAFCobIu6GRAAOw==" +
-- "";
-- blueIcon.printShadow =
-- "data:image/png;base64,"+
-- "R0lGODlhMAAgAIAAAISChP///yH5BAEAAAEALAAAAAAwACAAAAI6jI+py+0Po5y02ouz3rz7D4bi" +
-- "SJbmiabqyrYd4CLwHNApjddobu96foIpeisey0g0IXWxkLD5bEqbBQA7" +
-- "";
-- blueIcon.transparent =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAQK0lEQVR4AQEgEN/vAP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////ANPT0wL///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8As7OzArKysgL///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8Ao6Oj" +
-- "AmFhYQL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8Am5ubAjw8PAL///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD/" +
-- "//8A////AP///wD///8A////AP///wAzMzQClJOTAjMAAAIAAAACAAAuAgAAMQIAABYC////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wBeXVwChomMAkRlnwJ5kcECh6DR" +
-- "An2c0gJkicUCQG6uAhpTmgIAABgC////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wCKiYcC" +
-- "UV50AqO34gKXrdgCh6LTAnqa0gJsltMCX5XaAlWb5gIwjOICBD1+Av///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD/" +
-- "//8A////AP///wClpKICNEltApCn2AJ5ls0CbI7LAl6IywJRhs8CQ4fYAjSO5wInmPkCH4juAgQs" +
-- "aQL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP//" +
-- "/wD///8A////AP///wD///8A////AP///wCjoZ4CLEd5AnKQygJgg8ICUnzCAkR4xgI2eM4CJ33b" +
-- "AhqK8AIPifYCFXjnAhxPpgL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8AAP///wD///8A////AP///wD///8A////AAAAAAKcmZMCKk+SAlV5vgJFb7oC" +
-- "N2y8AipqwgIXas4CCnbhAgOE9wIJfe4CHm7cAixKoQL///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AF1cWwKJ" +
-- "i4sCKlWmAjlltAIoXbMCC0+zAgBRvQIAZNMCAHvtAgOD9QIRd+YCL2LMAiZBkAL///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP//" +
-- "/wD///8A////AI6NiwJfaXUCJlWxAhRKqAIAPqgCAEu1AgBbyAIAb+ACAIP2Agl+7wIcbtsCPFi6" +
-- "AgAdRwL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "AP///wD///8A////AP///wD///8A////AKqppgIxRGcCCD+lAgA7pAIARa8CAFK+AgBk0wIAe+0C" +
-- "A4P1AhF35gIsYc0CMkuPAv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AKeloQIVNW4CGU6rAhpNnQIb" +
-- "UqECG12tAh50zgIPk/8CBXzwAhtt2wJFYroCACBkAv///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AJmX" +
-- "lQIPLVoCABA4Av///wD///8A////AAAAAAIROIcCOoDNAjJp1QIbQZECADGVAgUkUgL///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////" +
-- "AP///wD///8AWVlZAoyMjQL///8A////AP///wD///8A////AAIrdQIAMJkCACmHAk5qoQIALJYC" +
-- "AD2lAgBDoQIFBhUC////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8AAP///wD///8A////AP///wD///8Ajo6OAn9/fwL///8A////AP///wD///8ACRkMAgAvjAIA" +
-- "MZcCADGYAgApggIAOqMCAEewAgBVwgIAVbYCBRQ8Av///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8AqqqqAmJiYgL///8A////AP//" +
-- "/wD///8AAipyAgAxmQIAL4sCAC6JAgA4oQIARa0CAFG8AgBezAIAbN0CAHHdAgNJkwL///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8ApKSk" +
-- "Ak1NTQL///8A////AP///wAJFwUCAS2CAgAvjgIAMJcCADWdAgBCqwIAT7kCAFzJAgBp2QIAducC" +
-- "AIP2AgqC9gIQZMYCEUiYAgAcRwL///8A////AP///wD///8A////AP///wD///8AAP///wD///8A" +
-- "////AP///wD///8Ak5OTAlZWVgL///8A////AP///wADKWkCADGbAgAwlgIAM5oCAECoAgBNtwIA" +
-- "WsYCAGbWAgBz5AIAgfMCCH/xAhJ25gIbb90CJmnWAjFgygIsSaACI0CQAho5gwINLnACBypeAgMm" +
-- "WwL///8AAP///wD///8A////AP///wBVVVUCjIyMAo+PjwL///8A////AP///wANAgACAi2BAgAy" +
-- "mwIAPaYCAEq0AgBXwwIAZNMCAHHiAgB/8QIFgfMCEHjoAhlw3gIkaNQCL2DKAjhXvQI8VbwCPFS+" +
-- "AlZsvwJJYp0CABJEAv///wD///8AAP///wD///8A////AP///wCTk5MCf39/Av///wD///8A////" +
-- "AP///wD///8A////AAYwdgIMTqwCAFbFAgBh0gIAb+ECAHzvAgKB9AINeOkCFnDgAiFp1wIqX8wC" +
-- "NVfBAlluxgJLZKoCUWmYAgAAGAL///8A////AP///wD///8AAP///wD///8A////AP///wCvr68C" +
-- "ZGRkAv///wD///8A////AP///wD///8A////AP///wAAAhUCIU+MAhxfqwIcc8kCIozsAi2N7wI4" +
-- "h+QCPnnMAkBqtAJKaacCWG+ZAgQoUAL///8A////AP///wD///8A////AP///wD///8AAP///wD/" +
-- "//8A////AP///wCoqKgCUlJSAv///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8AAAAHAgAAHQIAAB0CAAAAAv///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8AAP///wD///8A////AP///wCUlJQCXl5eAv///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8AAP///wD///8A////AE9PTwKMjIwCj4+PAv///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AJmZmQKA" +
-- "gIAC////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP//" +
-- "/wD///8A////ALW1tQJnZ2cC////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8AAP///wD///8A////AKysrAJYWFgC////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AJubmwJUVFQC////AP///wD/" +
-- "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" +
-- "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8ADAwMAkFB" +
-- "QQIgICAC////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" +
-- "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "AP///wD///8AAAAAAgAAAAL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" +
-- "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" +
-- "//8A////AP///wD///8AVS7w8bXTfrgAAAAASUVORK5CYII=" +
-- "";
-- blueIcon.imageMap = [9,0,9,1,9,2,9,3,13,4,16,5,17,6,18,7,18,8,18,9,18,10,18,11,17,12,17,13,18,14,19,15,20,16,21,17,24,18,30,19,29,20,27,21,24,22,20,23,5,24,5,25,4,26,4,27,4,28,4,29,4,30,3,31,2,31,2,30,3,29,3,28,3,27,3,26,3,25,4,24,4,23,4,22,4,21,4,20,5,19,5,18,5,17,5,16,5,15,6,14,6,13,6,12,6,11,6,10,6,9,7,8,7,7,7,6,7,5,7,4,8,3,8,2,8,1,9,0];
--
-- var redIcon = new GIcon(blueIcon);
-- redIcon.image =
-- "data:image/png;base64,"+
-- "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAQK0lEQVR4AQEgEN/vAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/PzyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsbGxLrCwsGwAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo6Oj" +
-- "t2JiYmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAm5ub/0FBQV4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFRUUck5OT/z5cXRgAAAAWFAAAOBYAADwJAAAiAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeXl5Uh4aI/5E5Ofe+XV3/2F9f" +
-- "/9pTU//HQUH/oysr/4AYGLMWAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFhYWL" +
-- "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" +
-- "f3//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAALOzs5NoaGjPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKurq8lZWVmXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYmP9XV1d2AAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OTkJC" +
-- "Qv8kJCRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAHAAAAOsUFBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
-- "AAAAAAAAAAAAAAAAAAAAakHkz/3IBgAAAAAASUVORK5CYII=" +
-- "";
--
--
-- function load() {
-- if (GBrowserIsCompatible()) {
-- var map = new GMap2(document.getElementById("map"));
-- map.setCenter( new GLatLng(0,0),2 );
-- map.enableContinuousZoom();
-- map.disableDragging();
-- var marker = new GMarker(new GLatLng(45, -90));
-- map.addOverlay(marker);
-- var mgr = new MarkerManager(map);
-- var marker2 = new GMarker(new GLatLng(0, 0), {icon:redIcon});
-- map.addOverlay(marker2);
-- var pn = map.getPane(G_MAP_MARKER_PANE);
-- //var div = document.getElementById(pn);
-- pn.style.KhtmlUserSelect='none';
-- pn.style.KhtmlUserDrag='none';
-- }
-- }
--
--
-- </script>
-- </head>
--
-- <body style="height:100%; -khtml-user-select:none;" onload="load()" onunload="GUnload()" topmargin="0" leftmargin="0">
-- <div id="map" style="width:100% ; height:100%"></div>
-- </body>
--</html>
-
-From 707f3f6f21b74e47e23fc6409a22018bcffe3ed0 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Fri, 8 Dec 2017 08:20:30 -0700
-Subject: [PATCH 7/7] gui map js beautification and corrections.
-
----
- gui/map.cc | 56 ++++++++++++++++++++++++++++++++++----------------------
- 1 file changed, 34 insertions(+), 22 deletions(-)
-
-diff --git a/gui/map.cc b/gui/map.cc
-index 9bed4a32..a4fe2a26 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -143,6 +143,28 @@ static QString fmtLatLng(const LatLng &l) {
- return QString("{lat: %1, lng: %3}").arg(l.lat(), 0, 'f', 5) .arg(l.lng(), 0, 'f', 5);
- }
-
-+//------------------------------------------------------------------------
-+static QString makePath(const vector <LatLng> &pts) {
-+ // maps v3 Polylines do not use encoded paths.
-+ QString path;
-+ int lncount = 0;
-+ bool someoutput = false;
-+ foreach (const LatLng ll, pts) {
-+ if (lncount == 0) {
-+ if (someoutput) {
-+ path.append(QChar(','));
-+ }
-+ path.append(QLatin1String("\n "));
-+ } else if (lncount == 1) {
-+ path.append(QLatin1String(", "));
-+ }
-+ path.append(fmtLatLng(ll));
-+ someoutput = true;
-+ lncount = (lncount + 1) % 2;
-+ }
-+ return path;
-+}
-+
- //------------------------------------------------------------------------
- void Map::showGpxData()
- {
-@@ -200,17 +222,12 @@ void Map::showGpxData()
- pts.push_back(pt.getLocation());
- }
- }
-- // maps v3 Polylines do not use encoded paths.
-- foreach (const LatLng ll, pts) {
-- path.append(fmtLatLng(ll));
-- path.append(QLatin1String(", "));
-- }
-- path.chop(2);
-+ path = makePath(pts);
-
- scriptStr
- << QString("trks[%1] = new RTPolyline(\n"
- " map,\n"
-- " new google.maps.Polyline({map: map, strokeColor: \"#0000E0\", strokeWeight: 2, strokeOpacity: 0.6, path: [%2]}),\n"
-+ " new google.maps.Polyline({\n map: map,\n strokeColor: \"#0000E0\",\n strokeWeight: 2,\n strokeOpacity: 0.6,\n path: [%2\n ]\n }),\n"
- " new google.maps.LatLng(%3),\n"
- " new google.maps.LatLng(%4),\n"
- " \"%5\",\n"
-@@ -233,17 +250,12 @@ void Map::showGpxData()
- foreach (const GpxRoutePoint &pt, rte.getRoutePoints()) {
- pts.push_back(pt.getLocation());
- }
-- // maps v3 Polylines do not use encoded paths.
-- foreach (const LatLng ll, pts) {
-- path.append(fmtLatLng(ll));
-- path.append(QLatin1String(", "));
-- }
-- path.chop(2);
-+ path = makePath(pts);
-
- scriptStr
- << QString("rtes[%1] = new RTPolyline(\n"
- " map,\n"
-- " new google.maps.Polyline({map: map, strokeColor: \"#0000E0\", strokeWeight: 2, strokeOpacity: 0.6, path: [%2]}),\n"
-+ " new google.maps.Polyline({\n map: map,\n strokeColor: \"#8000B0\",\n strokeWeight: 2,\n strokeOpacity: 0.6,\n path: [%2\n ]\n }),\n"
- " new google.maps.LatLng(%3),\n"
- " new google.maps.LatLng(%4),\n"
- " \"%5\",\n"
-@@ -306,8 +318,8 @@ void Map::hideAllTracks()
- {
- QStringList scriptStr;
- scriptStr
-- << "for( var i=0; i<trks.length; ++i ) {"
-- << " trks[i].hide();"
-+ << "for (idx = 0; idx < trks.length; idx += 1) {"
-+ << " trks[idx].hide();"
- << "}"
- ;
- evaluateJS(scriptStr);
-@@ -329,8 +341,8 @@ void Map::hideAllWaypoints()
- {
- QStringList scriptStr;
- scriptStr
-- << "for( var i=0; i<waypts.length; ++i ) {"
-- << " waypts[i].setVisible(false);"
-+ << "for (idx = 0; idx < waypts.length; idx += 1) {"
-+ << " waypts[idx].setVisible(false);"
- << "}"
- ;
- evaluateJS(scriptStr);
-@@ -352,8 +364,8 @@ void Map::hideAllRoutes()
- {
- QStringList scriptStr;
- scriptStr
-- << "for( var i=0; i<rtes.length; ++i ) {"
-- << " rtes[i].hide();"
-+ << "for (idx = 0; idx < rtes.length; idx += 1) {"
-+ << " rtes[idx].hide();"
- << "}"
- ;
- evaluateJS(scriptStr);
-@@ -408,13 +420,13 @@ void Map::resizeEvent ( QResizeEvent * ev)
- //------------------------------------------------------------------------
- void Map::setWaypointColorRed(int i)
- {
-- evaluateJS(QString("waypts[%1].setIcon(redIcon)").arg(i));
-+ evaluateJS(QString("waypts[%1].setIcon(redIcon);").arg(i));
- }
-
- //------------------------------------------------------------------------
- void Map::setWaypointColorBlue(int i)
- {
-- evaluateJS(QString("waypts[%1].setIcon(blueIcon)").arg(i));
-+ evaluateJS(QString("waypts[%1].setIcon(blueIcon);").arg(i));
- }
-
- //------------------------------------------------------------------------
Deleted: gpsbabel.appdata.xml
===================================================================
--- gpsbabel.appdata.xml 2019-06-19 11:39:48 UTC (rev 482341)
+++ gpsbabel.appdata.xml 2019-06-19 11:39:52 UTC (rev 482342)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component type="desktop-application">
- <id>org.gpsbabel.gpsbabel</id>
- <launchable type="desktop-id">gpsbabel.desktop</launchable>
- <name>GPSBabel</name>
- <summary>Qt GUI interface for GPSBabel</summary>
- <metadata_license>CC0-1.0</metadata_license>
- <project_license>GPL-2.0</project_license>
- <description>
- <p>GPSBabel converts waypoints, tracks, and routes between popular GPS receivers such as Garmin or Magellan and mapping programs like Google Earth or Basecamp. Literally hundreds of GPS receivers and programs are supported. It also has powerful manipulation tools for such data. such as filtering duplicates points or simplifying tracks.</p>
- </description>
- <screenshots>
- <screenshot type="default">
- <image>https://screenshots.debian.net/screenshots/000/015/197/large.png</image>
- </screenshot>
- </screenshots>
- <url type="bugtracker">https://github.com/gpsbabel/gpsbabel/issues</url>
- <url type="homepage">https://www.gpsbabel.org/</url>
-</component>
Copied: gpsbabel/repos/community-x86_64/gpsbabel.appdata.xml (from rev 482341, gpsbabel/trunk/gpsbabel.appdata.xml)
===================================================================
--- gpsbabel.appdata.xml (rev 0)
+++ gpsbabel.appdata.xml 2019-06-19 11:39:52 UTC (rev 482342)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop-application">
+ <id>org.gpsbabel.gpsbabel</id>
+ <launchable type="desktop-id">gpsbabel.desktop</launchable>
+ <name>GPSBabel</name>
+ <summary>Qt GUI interface for GPSBabel</summary>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>GPL-2.0</project_license>
+ <description>
+ <p>GPSBabel converts waypoints, tracks, and routes between popular GPS receivers such as Garmin or Magellan and mapping programs like Google Earth or Basecamp. Literally hundreds of GPS receivers and programs are supported. It also has powerful manipulation tools for such data. such as filtering duplicates points or simplifying tracks.</p>
+ </description>
+ <screenshots>
+ <screenshot type="default">
+ <image>https://screenshots.debian.net/screenshots/000/015/197/large.png</image>
+ </screenshot>
+ </screenshots>
+ <url type="bugtracker">https://github.com/gpsbabel/gpsbabel/issues</url>
+ <url type="homepage">https://www.gpsbabel.org/</url>
+</component>
More information about the arch-commits
mailing list