[qmapshack] 04/18: Imported Upstream version 1.0.0

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sat Mar 7 14:36:16 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository qmapshack.

commit 99a98f2ade0c8043b400afc932a4293a2036a107
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat Mar 7 13:20:24 2015 +0100

    Imported Upstream version 1.0.0
---
 .hg/00changelog.i                                  |  Bin 0 -> 57 bytes
 .../2014-08-10_14-17-09_parent_rev_212_41i_1d.bak  |   60 +
 .../2014-08-10_14-17-09_parent_rev_212_5C3Eit.bak  |  124 +
 .../2014-08-10_14-17-09_parent_rev_212_5yS1bt.bak  |  329 +++
 .../2014-08-10_14-17-09_parent_rev_212_63JmLB.bak  |   86 +
 .../2014-08-10_14-17-09_parent_rev_212_6f2vC4.bak  |    0
 .../2014-08-10_14-17-09_parent_rev_212_8xXTxE.bak  |   93 +
 .../2014-08-10_14-17-09_parent_rev_212_E5WdFy.bak  |    0
 .../2014-08-10_14-17-09_parent_rev_212_EUeX2W.bak  |   63 +
 .../2014-08-10_14-17-09_parent_rev_212_H2s6va.bak  |  350 +++
 .../2014-08-10_14-17-09_parent_rev_212_HGPpdo.bak  |   77 +
 .../2014-08-10_14-17-09_parent_rev_212_IPn_yT.bak  |  239 ++
 .../2014-08-10_14-17-09_parent_rev_212_KAC_3x.bak  |  122 +
 .../2014-08-10_14-17-09_parent_rev_212_M_J4ty.bak  |  100 +
 .../2014-08-10_14-17-09_parent_rev_212_Mwh9Qb.bak  |  156 ++
 .../2014-08-10_14-17-09_parent_rev_212_Nvr8BO.bak  |  362 +++
 .../2014-08-10_14-17-09_parent_rev_212_O2w2no.bak  |   27 +
 .../2014-08-10_14-17-09_parent_rev_212_Ozaask.bak  |  186 ++
 .../2014-08-10_14-17-09_parent_rev_212_PVfnen.bak  |  109 +
 .../2014-08-10_14-17-09_parent_rev_212_Q80F4i.bak  |  115 +
 .../2014-08-10_14-17-09_parent_rev_212_QYFq9x.bak  |  198 ++
 .../2014-08-10_14-17-09_parent_rev_212_QhKuka.bak  |   69 +
 .../2014-08-10_14-17-09_parent_rev_212_RHnNae.bak  |  219 ++
 .../2014-08-10_14-17-09_parent_rev_212_TbVumX.bak  |  175 ++
 .../2014-08-10_14-17-09_parent_rev_212_TlaYCc.bak  |   55 +
 .../2014-08-10_14-17-09_parent_rev_212_V50HTU.bak  |  512 ++++
 .../2014-08-10_14-17-09_parent_rev_212_WQ5EF6.bak  |  220 ++
 .../2014-08-10_14-17-09_parent_rev_212_Wvm2XK.bak  |  348 +++
 .../2014-08-10_14-17-09_parent_rev_212_XyikZV.bak  |   88 +
 .../2014-08-10_14-17-09_parent_rev_212_XzwqFK.bak  |   74 +
 .../2014-08-10_14-17-09_parent_rev_212_ZQmjwC.bak  |  145 +
 .../2014-08-10_14-17-09_parent_rev_212__FyHdw.bak  |  227 ++
 .../2014-08-10_14-17-09_parent_rev_212__oamrT.bak  |  250 ++
 .../2014-08-10_14-17-09_parent_rev_212__xosYF.bak  |  173 ++
 .../2014-08-10_14-17-09_parent_rev_212_aFBa4m.bak  |  533 ++++
 .../2014-08-10_14-17-09_parent_rev_212_c8KLTi.bak  |   31 +
 .../2014-08-10_14-17-09_parent_rev_212_cFEYOV.bak  |  113 +
 .../2014-08-10_14-17-09_parent_rev_212_dQbVnU.bak  |  127 +
 .../2014-08-10_14-17-09_parent_rev_212_dXCOib.bak  |  140 +
 .../2014-08-10_14-17-09_parent_rev_212_gPbjzI.bak  |  360 +++
 .../2014-08-10_14-17-09_parent_rev_212_irk_tW.bak  |  406 +++
 .../2014-08-10_14-17-09_parent_rev_212_jkEjw8.bak  |   15 +
 .../2014-08-10_14-17-09_parent_rev_212_pZMY9I.bak  |  466 ++++
 .../2014-08-10_14-17-09_parent_rev_212_s1NHwd.bak  |    0
 .../2014-08-10_14-17-09_parent_rev_212_uCwhiy.bak  |  317 +++
 .../2014-08-10_14-17-09_parent_rev_212_ygOGzc.bak  |  374 +++
 .../2015-02-22_12-03-51_parent_rev_750_8rXOP9.bak  |   14 +
 .../2015-02-22_12-03-51_parent_rev_750_BKqvxh.bak  |   30 +
 .../2015-02-22_12-03-51_parent_rev_750_Yt2BGo.bak  |   11 +
 .../2015-02-22_12-03-51_parent_rev_750_oX1H7k.bak  |    0
 .../2015-02-22_12-03-51_parent_rev_750_q0CIcf.bak  |    0
 .../2015-02-22_12-03-51_parent_rev_750_urUEGg.bak  |   14 +
 .../Trashcan/CDetailsTrk_6SCvxa.cpp.bak            |   78 +-
 .../Trashcan/CDetailsTrk_8daxWy.cpp.bak            |   80 +-
 .../Trashcan/CDetailsWpt_JkBB6Z.h.bak              |   29 +-
 .../Trashcan/CDetailsWpt_KUyyGh.cpp.bak            |  155 +-
 .../Trashcan/CDetailsWpt_VqnTW1.cpp.bak            |  142 +-
 .../Trashcan/CDetailsWpt_wgDUq1.h.bak              |   35 +-
 .../Trashcan/CDiskCache_ZGaMAX.cpp.bak             |    7 +-
 .../Trashcan/CDiskCache_ceXfpe.cpp.bak             |    8 +-
 .../Trashcan/CGisItemTrk_RakRPD.cpp.bak            |  108 +-
 .../Trashcan/CGisItemTrk_jYp8hv.h.bak              |   54 +-
 .hg/Trashcan/CGisItemWpt_dhk314.cpp.bak            |  458 ++++
 .hg/Trashcan/CGisItemWpt_lZD09f.h.bak              |  117 +
 .hg/Trashcan/CGisItemWpt_qCGlIQ.cpp.bak            |  476 ++++
 .hg/Trashcan/CGisItemWpt_v6zJBd.h.bak              |  119 +
 .../Trashcan/CGisListWks_3x8ATJ.cpp.bak            |  384 +--
 .hg/Trashcan/CGisListWks_HrzlcL.cpp.bak            |  159 ++
 .../Trashcan/CGisListWks_N1Po8J.cpp.bak            |  370 +--
 .hg/Trashcan/CGisListWks_w3G0J5.cpp.bak            |  164 ++
 .hg/Trashcan/CGisWidget_0r6eN4.cpp.bak             |  215 ++
 .hg/Trashcan/CGisWidget_1Gl0ex.cpp.bak             |  217 ++
 .../Trashcan/CMakeLists_OYf8I5.txt.bak             |    4 +-
 .hg/Trashcan/CMakeLists_SIS4BY.txt.bak             |  256 ++
 .../Trashcan/CMakeLists_XwOIvC.txt.bak             |    6 +-
 .hg/Trashcan/CMakeLists_lr2bNv.txt.bak             |  253 ++
 .hg/Trashcan/CPlotSpeed__YNWxV.cpp.bak             |  116 +
 .hg/Trashcan/CScrOptWpt_XBKh1B.cpp.bak             |   89 +
 .hg/Trashcan/CScrOptWpt_xMZh5g.cpp.bak             |   89 +
 .hg/Trashcan/IGisItem_5WFVpa.h.bak                 |  375 +++
 .../Trashcan/IGisItem_APOLa5.cpp.bak               |  222 +-
 .hg/Trashcan/IGisItem_GNArfG.h.bak                 |  375 +++
 .hg/Trashcan/IGisItem_SGAlUU.cpp.bak               |  286 ++
 .../Trashcan/IGisItem_W2uRAd.cpp.bak               |    7 +-
 .../Trashcan/IGisItem_g1UeWY.cpp.bak               |    2 +-
 .hg/Trashcan/IGisItem_sh1ohv.h.bak                 |  402 +++
 .../Trashcan/IGisItem_xTCUle.cpp.bak               |  228 +-
 .hg/Trashcan/IGisItem_xsSU6A.h.bak                 |  404 +++
 .hg/Trashcan/IGisItem_yfQJAp.cpp.bak               |  286 ++
 .../Trashcan/IGisProject_117WVD.cpp.bak            |  123 +-
 .../Trashcan/IGisProject_AqlgcN.cpp.bak            |  121 +-
 .hg/Trashcan/IGisProject_duaZSF.h.bak              |  212 ++
 .hg/Trashcan/IGisProject_hRc9Iq.h.bak              |  230 ++
 .hg/Trashcan/IGisWidget_GlUnqs.ui.bak              |   95 +
 .hg/Trashcan/IGisWidget_f8_was.ui.bak              |   98 +
 .hg/Trashcan/IScrOptWpt_EtgN4L.ui.bak              |  114 +
 .hg/Trashcan/IScrOptWpt_j6Rx9x.ui.bak              |  105 +
 .hg/Trashcan/IWptIconDialog_7JMhQt.ui.bak          |   31 +
 .hg/Trashcan/IWptIconDialog_c__AmQ.ui.bak          |   74 +
 .../Trashcan/changelog_CYEUr4.txt.bak              |   16 +
 .../Trashcan/changelog_z3flxg.txt.bak              |    7 +
 .../Trashcan/resources_NOfdMH.qrc.bak              |  182 +-
 .../Trashcan/resources_VTtTG0.qrc.bak              |  193 +-
 .hg/bookmarks                                      |    0
 .hg/branch                                         |    1 +
 .hg/cache/branch2-base                             |    5 +
 .hg/cache/branch2-served                           |    5 +
 .hg/cache/rbc-names-v1                             |  Bin 0 -> 21 bytes
 .hg/cache/rbc-revs-v1                              |  Bin 0 -> 6384 bytes
 .hg/cur-message.txt                                |    0
 .hg/dirstate                                       |  Bin 0 -> 50367 bytes
 .hg/hgrc                                           |    6 +
 .hg/last-message.txt                               |    1 +
 .hg/requires                                       |    4 +
 .hg/shelves/2014-08-10_14-17-09_parent_rev_212     |  107 +
 .hg/shelves/2015-02-22_12-03-51_parent_rev_750     |    0
 .hg/store/00changelog.d                            |  Bin 0 -> 137629 bytes
 .hg/store/00changelog.i                            |  Bin 0 -> 51072 bytes
 .hg/store/00manifest.d                             |  Bin 0 -> 421920 bytes
 .hg/store/00manifest.i                             |  Bin 0 -> 50944 bytes
 .../data/3rdparty/_c_get_opt/_c_get_opt.cpp.i      |  Bin 0 -> 6266 bytes
 .hg/store/data/3rdparty/_c_get_opt/_c_get_opt.h.i  |  Bin 0 -> 1676 bytes
 .../data/3rdparty/_c_get_opt/_c_make_lists.txt.i   |  Bin 0 -> 515 bytes
 .../data/3rdparty/_c_get_opt/class_get_opt.html.i  |  Bin 0 -> 5517 bytes
 .hg/store/data/3rdparty/_c_get_opt/getopt.pro.i    |  Bin 0 -> 125 bytes
 .hg/store/data/3rdparty/_c_get_opt/main.cpp.i      |  Bin 0 -> 536 bytes
 .../3rdparty/_d_b_converter/_c_main_window.cpp.i   |  Bin 0 -> 1797 bytes
 .../3rdparty/_d_b_converter/_c_main_window.h.i     |  Bin 0 -> 969 bytes
 .../3rdparty/_d_b_converter/_c_make_lists.txt.i    |  Bin 0 -> 1180 bytes
 .../data/3rdparty/_d_b_converter/_c_qlgt_db.cpp.i  |  Bin 0 -> 4395 bytes
 .../data/3rdparty/_d_b_converter/_c_qlgt_db.h.i    |  Bin 0 -> 1259 bytes
 .../data/3rdparty/_d_b_converter/_c_qms_db.cpp.i   |  Bin 0 -> 1690 bytes
 .../data/3rdparty/_d_b_converter/_c_qms_db.h.i     |  Bin 0 -> 864 bytes
 .../3rdparty/_d_b_converter/_i_main_window.ui.i    |  Bin 0 -> 881 bytes
 .../data/3rdparty/_d_b_converter/converter.cpp.i   |  Bin 0 -> 576 bytes
 .hg/store/data/3rdparty/_d_b_converter/main.cpp.i  |  Bin 0 -> 710 bytes
 .../data/3rdparty/_d_b_converter/qlgt/_c_qlb.cpp.i |  Bin 0 -> 1085 bytes
 .../data/3rdparty/_d_b_converter/qlgt/_c_qlb.h.i   |  Bin 0 -> 1221 bytes
 .../_d_b_converter/qlgt/_c_qlgt_diary.cpp.i        |  Bin 0 -> 1894 bytes
 .../3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.h.i |  Bin 0 -> 818 bytes
 .../_d_b_converter/qlgt/_c_qlgt_route.cpp.i        |  Bin 0 -> 2060 bytes
 .../3rdparty/_d_b_converter/qlgt/_c_qlgt_route.h.i |  Bin 0 -> 1007 bytes
 .../_d_b_converter/qlgt/_c_qlgt_track.cpp.i        |  Bin 0 -> 2058 bytes
 .../3rdparty/_d_b_converter/qlgt/_c_qlgt_track.h.i |  Bin 0 -> 2685 bytes
 .../3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.cpp.i |  Bin 0 -> 2420 bytes
 .../3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.h.i   |  Bin 0 -> 1168 bytes
 .../3rdparty/_d_b_converter/qlgt/_i_item.cpp.i     |  Bin 0 -> 536 bytes
 .../data/3rdparty/_d_b_converter/qlgt/_i_item.h.i  |  Bin 0 -> 700 bytes
 .../_d_b_converter/qlgt/_i_qlgt_overlay.cpp.i      |  Bin 0 -> 2009 bytes
 .../_d_b_converter/qlgt/_i_qlgt_overlay.h.i        |  Bin 0 -> 923 bytes
 .../data/3rdparty/_d_b_converter/resources.qrc.i   |  Bin 0 -> 158 bytes
 .hg/store/data/_c_make_lists.txt.i                 |  Bin 0 -> 8826 bytes
 .hg/store/data/_c_pack_config.cmake.i              |  Bin 0 -> 1025 bytes
 .hg/store/data/_configure_checks.cmake.i           |  Bin 0 -> 545 bytes
 .hg/store/data/_doxyfile.i                         |  Bin 0 -> 26279 bytes
 .hg/store/data/_gpx_examples/_c_o_p_y_r_i_g_h_t.i  |  Bin 0 -> 554 bytes
 .hg/store/data/_gpx_examples/basecamp.gpx.i        |  Bin 0 -> 1603 bytes
 .hg/store/data/_gpx_examples/qlandkarte.gpx.i      |  Bin 0 -> 1064 bytes
 .hg/store/data/_l_i_c_e_n_s_e.i                    |  Bin 0 -> 12189 bytes
 .hg/store/data/_r_e_a_d_m_e.md.i                   |  Bin 0 -> 2617 bytes
 .hg/store/data/call___uncrustify.cfg.i             |  Bin 0 -> 1116 bytes
 .hg/store/data/call___uncrustify.sh.i              |  Bin 0 -> 448 bytes
 .hg/store/data/changelog.txt.i                     |  Bin 0 -> 4033 bytes
 .hg/store/data/cmake/_c_make_lists.txt.i           |  Bin 0 -> 91 bytes
 .hg/store/data/cmake/_modules/_c_make_lists.txt.i  |  Bin 0 -> 464 bytes
 .../_c_o_p_y_i_n_g-_c_m_a_k_e-_s_c_r_i_p_t_s.i     |  Bin 0 -> 773 bytes
 .../cmake/_modules/_define_c_make_defaults.cmake.i |  Bin 0 -> 562 bytes
 .../cmake/_modules/_define_compiler_flags.cmake.i  |  Bin 0 -> 277 bytes
 .../_modules/_define_installation_paths.cmake.i    |  Bin 0 -> 966 bytes
 .../data/cmake/_modules/_find_d_m_t_x.cmake.i      |  Bin 0 -> 797 bytes
 .../data/cmake/_modules/_find_e_x_i_f.cmake.i      |  Bin 0 -> 785 bytes
 .../data/cmake/_modules/_find_g_d_a_l.cmake.i      |  Bin 0 -> 1114 bytes
 .../data/cmake/_modules/_find_g_p_s_d.cmake.i      |  Bin 0 -> 787 bytes
 .../data/cmake/_modules/_find_j_p_e_g.cmake.i      |  Bin 0 -> 886 bytes
 .../data/cmake/_modules/_find_p_r_o_j.cmake.i      |  Bin 0 -> 1067 bytes
 .../cmake/_modules/_find_qext_serial_port.cmake.i  |  Bin 0 -> 868 bytes
 .../data/cmake/_modules/_find_qt_soap.cmake.i      |  Bin 0 -> 827 bytes
 .../data/cmake/_modules/_find_xerces_c.cmake.i     |  Bin 0 -> 869 bytes
 .../data/cmake/_modules/_macro_copy_file.cmake.i   |  Bin 0 -> 654 bytes
 .../_macro_ensure_out_of_source_build.cmake.i      |  Bin 0 -> 427 bytes
 .hg/store/data/cmake__uninstall.cmake.in.i         |  Bin 0 -> 447 bytes
 .hg/store/data/config.h.cmake.i                    |  Bin 0 -> 476 bytes
 .hg/store/data/features.txt.i                      |  Bin 0 -> 727 bytes
 .hg/store/data/maproom.1.i                         |  Bin 0 -> 473 bytes
 .hg/store/data/maproom.desktop.i                   |  Bin 0 -> 358 bytes
 .hg/store/data/mkfile.i                            |  Bin 0 -> 415 bytes
 .hg/store/data/nsi/3rdparty.txt.i                  |  Bin 0 -> 2632 bytes
 .hg/store/data/nsi/_help.ico.i                     |  Bin 0 -> 1290 bytes
 .../data/nsi/_m_u_i___h_e_a_d_e_r_i_m_a_g_e.bmp.i  |  Bin 0 -> 20155 bytes
 ...m_u_i___w_e_l_c_o_m_e_f_i_n_i_s_h_p_a_g_e.bmp.i |  Bin 0 -> 109742 bytes
 .hg/store/data/nsi/_q_map_shack.ico.i              |  Bin 0 -> 1695 bytes
 .hg/store/data/nsi/_q_map_shack___installer.nsi.i  |  Bin 0 -> 4261 bytes
 .../data/nsi/_q_map_shack___installer32.nsi.i      |  Bin 0 -> 3255 bytes
 .hg/store/data/nsi/copyfiles.bat.i                 |  Bin 0 -> 1860 bytes
 .hg/store/data/nsi/copyfiles32.bat.i               |  Bin 0 -> 1377 bytes
 .hg/store/data/nsi/gdalicon.ico.i                  |  Bin 0 -> 1768 bytes
 .hg/store/data/nsi/kfm__home.ico.i                 |  Bin 0 -> 7597 bytes
 .hg/store/data/nsi/konsole.ico.i                   |  Bin 0 -> 6522 bytes
 .hg/store/data/qmapshack.1.i                       |  Bin 0 -> 873 bytes
 .hg/store/data/qmapshack.desktop.i                 |  Bin 0 -> 519 bytes
 .hg/store/data/src/_c_about.cpp.i                  |  Bin 0 -> 802 bytes
 .hg/store/data/src/_c_about.h.i                    |  Bin 0 -> 790 bytes
 .hg/store/data/src/_c_app_opts.h.i                 |  Bin 0 -> 786 bytes
 .hg/store/data/src/_c_canvas.cpp.i                 |  Bin 0 -> 8678 bytes
 .hg/store/data/src/_c_canvas.h.i                   |  Bin 0 -> 4288 bytes
 .hg/store/data/src/_c_file_ext.h.i                 |  Bin 0 -> 732 bytes
 .hg/store/data/src/_c_main_window.cpp.i            |  Bin 0 -> 24408 bytes
 .hg/store/data/src/_c_main_window.h.i              |  Bin 0 -> 6882 bytes
 .hg/store/data/src/_c_make_lists.txt.i             |  Bin 0 -> 18034 bytes
 .hg/store/data/src/_c_map_d_b.cpp.i                |  Bin 0 -> 612 bytes
 .hg/store/data/src/_c_map_d_b.h.i                  |  Bin 0 -> 685 bytes
 .hg/store/data/src/_c_settings.h.i                 |  Bin 0 -> 748 bytes
 .hg/store/data/src/_geo_math.cpp.i                 |  Bin 0 -> 7897 bytes
 .hg/store/data/src/_geo_math.h.i                   |  Bin 0 -> 2263 bytes
 .hg/store/data/src/_i_about.ui.i                   |  Bin 0 -> 2562 bytes
 .hg/store/data/src/_i_d_b.cpp.i                    |  Bin 0 -> 557 bytes
 .hg/store/data/src/_i_d_b.h.i                      |  Bin 0 -> 644 bytes
 .hg/store/data/src/_i_draw_context.cpp.i           |  Bin 0 -> 3169 bytes
 .hg/store/data/src/_i_draw_context.h.i             |  Bin 0 -> 2390 bytes
 .hg/store/data/src/_i_draw_object.cpp.i            |  Bin 0 -> 902 bytes
 .hg/store/data/src/_i_draw_object.h.i              |  Bin 0 -> 1098 bytes
 .hg/store/data/src/_i_main_window.ui.i             |  Bin 0 -> 10542 bytes
 .hg/store/data/src/_platform.h.i                   |  Bin 0 -> 3533 bytes
 .hg/store/data/src/animation/_c_o_p_y_r_i_g_h_t.i  |  Bin 0 -> 691 bytes
 .hg/store/data/src/animation/_r_e_a_d_m_e.i        |  Bin 0 -> 116 bytes
 .hg/store/data/src/animation/_w_t_f_p_l-2.i        |  Bin 0 -> 362 bytes
 .hg/store/data/src/animation/loader.gif.i          |  Bin 0 -> 6536 bytes
 .hg/store/data/src/animation/loader2.gif.i         |  Bin 0 -> 5316 bytes
 .hg/store/data/src/canvas/_c_canvas.cpp.i          |  Bin 0 -> 13560 bytes
 .hg/store/data/src/canvas/_c_canvas.h.i            |  Bin 0 -> 8264 bytes
 .hg/store/data/src/canvas/_c_canvas_setup.cpp.i    |  Bin 0 -> 1041 bytes
 .hg/store/data/src/canvas/_c_canvas_setup.h.i      |  Bin 0 -> 939 bytes
 .hg/store/data/src/canvas/_i_canvas_setup.ui.i     |  Bin 0 -> 1128 bytes
 .hg/store/data/src/canvas/_i_draw_context.cpp.i    |  Bin 0 -> 6775 bytes
 .hg/store/data/src/canvas/_i_draw_context.h.i      |  Bin 0 -> 5410 bytes
 .hg/store/data/src/canvas/_i_draw_object.cpp.i     |  Bin 0 -> 2152 bytes
 .hg/store/data/src/canvas/_i_draw_object.h.i       |  Bin 0 -> 4538 bytes
 .hg/store/data/src/cursors/_c_o_p_y_r_i_g_h_t.i    |  Bin 0 -> 245 bytes
 .hg/store/data/src/cursors/cursor_add.png.i        |  Bin 0 -> 1259 bytes
 .hg/store/data/src/cursors/cursor_arrow.png.i      |  Bin 0 -> 1364 bytes
 .hg/store/data/src/cursors/cursor_move.png.i       |  Bin 0 -> 1720 bytes
 .hg/store/data/src/cursors/cursor_move_area.png.i  |  Bin 0 -> 1866 bytes
 .hg/store/data/src/cursors/cursor_move_line.png.i  |  Bin 0 -> 1568 bytes
 .hg/store/data/src/cursors/cursor_move_map.png.i   |  Bin 0 -> 1799 bytes
 .hg/store/data/src/cursors/cursor_move_wpt.png.i   |  Bin 0 -> 1451 bytes
 .../data/src/cursors/cursor_select_range.png.i     |  Bin 0 -> 2909 bytes
 .hg/store/data/src/cursors/wpt_highlight.png.i     |  Bin 0 -> 3611 bytes
 .hg/store/data/src/cursors/wpt_highlight.svg.i     |  Bin 0 -> 1491 bytes
 .hg/store/data/src/dem/_c_dem.cpp.i                |  Bin 0 -> 1215 bytes
 .hg/store/data/src/dem/_c_dem.h.i                  |  Bin 0 -> 920 bytes
 .hg/store/data/src/dem/_c_dem_draw.cpp.i           |  Bin 0 -> 5555 bytes
 .hg/store/data/src/dem/_c_dem_draw.h.i             |  Bin 0 -> 3798 bytes
 .hg/store/data/src/dem/_c_dem_item.cpp.i           |  Bin 0 -> 3838 bytes
 .hg/store/data/src/dem/_c_dem_item.h.i             |  Bin 0 -> 2615 bytes
 .hg/store/data/src/dem/_c_dem_list.cpp.i           |  Bin 0 -> 2185 bytes
 .hg/store/data/src/dem/_c_dem_list.h.i             |  Bin 0 -> 1494 bytes
 .hg/store/data/src/dem/_c_dem_path_setup.cpp.i     |  Bin 0 -> 1516 bytes
 .hg/store/data/src/dem/_c_dem_path_setup.h.i       |  Bin 0 -> 990 bytes
 .hg/store/data/src/dem/_c_dem_prop_setup.cpp.i     |  Bin 0 -> 2679 bytes
 .hg/store/data/src/dem/_c_dem_prop_setup.h.i       |  Bin 0 -> 1247 bytes
 .hg/store/data/src/dem/_c_dem_v_r_t.cpp.i          |  Bin 0 -> 11040 bytes
 .hg/store/data/src/dem/_c_dem_v_r_t.h.i            |  Bin 0 -> 2502 bytes
 .hg/store/data/src/dem/_i_dem.cpp.i                |  Bin 0 -> 5009 bytes
 .hg/store/data/src/dem/_i_dem.h.i                  |  Bin 0 -> 5501 bytes
 .hg/store/data/src/dem/_i_dem_list.ui.i            |  Bin 0 -> 2504 bytes
 .hg/store/data/src/dem/_i_dem_path_setup.ui.i      |  Bin 0 -> 2079 bytes
 .hg/store/data/src/dem/_i_dem_prop.cpp.i           |  Bin 0 -> 750 bytes
 .hg/store/data/src/dem/_i_dem_prop.h.i             |  Bin 0 -> 898 bytes
 .hg/store/data/src/dem/_i_dem_prop_setup.ui.i      |  Bin 0 -> 2278 bytes
 .hg/store/data/src/device/_c_device_garmin.cpp.i   |  Bin 0 -> 5156 bytes
 .hg/store/data/src/device/_c_device_garmin.h.i     |  Bin 0 -> 1589 bytes
 .hg/store/data/src/device/_c_device_two_nav.cpp.i  |  Bin 0 -> 2784 bytes
 .hg/store/data/src/device/_c_device_two_nav.h.i    |  Bin 0 -> 1352 bytes
 .../data/src/device/_c_device_watcher_linux.cpp.i  |  Bin 0 -> 4340 bytes
 .../data/src/device/_c_device_watcher_linux.h.i    |  Bin 0 -> 1346 bytes
 .../src/device/_c_device_watcher_windows.cpp.i     |  Bin 0 -> 2332 bytes
 .../data/src/device/_c_device_watcher_windows.h.i  |  Bin 0 -> 1419 bytes
 .hg/store/data/src/device/_i_device.cpp.i          |  Bin 0 -> 3845 bytes
 .hg/store/data/src/device/_i_device.h.i            |  Bin 0 -> 2991 bytes
 .hg/store/data/src/device/_i_device_watcher.cpp.i  |  Bin 0 -> 2157 bytes
 .hg/store/data/src/device/_i_device_watcher.h.i    |  Bin 0 -> 2013 bytes
 .../data/src/gis-search/_c_gis_search_widget.cpp.i |  Bin 0 -> 583 bytes
 .../data/src/gis-search/_c_gis_search_widget.h.i   |  Bin 0 -> 633 bytes
 .../data/src/gis-search/_c_search_google.cpp.i     |  Bin 0 -> 730 bytes
 .hg/store/data/src/gis-search/_c_search_google.h.i |  Bin 0 -> 740 bytes
 .hg/store/data/src/gis-search/_i_gis_search.cpp.i  |  Bin 0 -> 1089 bytes
 .hg/store/data/src/gis-search/_i_gis_search.h.i    |  Bin 0 -> 880 bytes
 .../data/src/gis-search/_i_gis_search_widget.ui.i  |  Bin 0 -> 461 bytes
 .hg/store/data/src/gis/_c_gis_draw.cpp.i           |  Bin 0 -> 1966 bytes
 .hg/store/data/src/gis/_c_gis_draw.h.i             |  Bin 0 -> 1078 bytes
 .hg/store/data/src/gis/_c_gis_item_rte.cpp.i       |  Bin 0 -> 2109 bytes
 .hg/store/data/src/gis/_c_gis_item_rte.h.i         |  Bin 0 -> 2160 bytes
 .hg/store/data/src/gis/_c_gis_item_trk.cpp.i       |  Bin 0 -> 3496 bytes
 .hg/store/data/src/gis/_c_gis_item_trk.h.i         |  Bin 0 -> 2556 bytes
 .hg/store/data/src/gis/_c_gis_item_wpt.cpp.i       |  Bin 0 -> 3353 bytes
 .hg/store/data/src/gis/_c_gis_item_wpt.h.i         |  Bin 0 -> 1894 bytes
 .hg/store/data/src/gis/_c_gis_list_d_b.cpp.i       |  Bin 0 -> 17124 bytes
 .hg/store/data/src/gis/_c_gis_list_d_b.h.i         |  Bin 0 -> 4401 bytes
 .hg/store/data/src/gis/_c_gis_list_wks.cpp.i       |  Bin 0 -> 45112 bytes
 .hg/store/data/src/gis/_c_gis_list_wks.h.i         |  Bin 0 -> 7162 bytes
 .hg/store/data/src/gis/_c_gis_project.cpp.i        |  Bin 0 -> 11696 bytes
 .hg/store/data/src/gis/_c_gis_project.h.i          |  Bin 0 -> 4483 bytes
 .hg/store/data/src/gis/_c_gis_serialization.cpp.i  |  Bin 0 -> 3682 bytes
 .hg/store/data/src/gis/_c_gis_serialization.h.i    |  Bin 0 -> 587 bytes
 .hg/store/data/src/gis/_c_gis_widget.cpp.i         |  Bin 0 -> 19194 bytes
 .hg/store/data/src/gis/_c_gis_widget.h.i           |  Bin 0 -> 11593 bytes
 .hg/store/data/src/gis/_i_gis_item.cpp.i           |  Bin 0 -> 21538 bytes
 .hg/store/data/src/gis/_i_gis_item.h.i             |  Bin 0 -> 23102 bytes
 .hg/store/data/src/gis/_i_gis_line.cpp.i           |  Bin 0 -> 626 bytes
 .hg/store/data/src/gis/_i_gis_line.h.i             |  Bin 0 -> 1103 bytes
 .hg/store/data/src/gis/_i_gis_project.cpp.i        |  Bin 0 -> 4081 bytes
 .hg/store/data/src/gis/_i_gis_project.h.i          |  Bin 0 -> 4063 bytes
 .hg/store/data/src/gis/_i_gis_widget.ui.i          |  Bin 0 -> 3973 bytes
 .hg/store/data/src/gis/_wpt_icons.cpp.i            |  Bin 0 -> 4273 bytes
 .hg/store/data/src/gis/_wpt_icons.h.i              |  Bin 0 -> 1262 bytes
 .hg/store/data/src/gis/bin/_c_bin_project.cpp.i    |  Bin 0 -> 3266 bytes
 .hg/store/data/src/gis/bin/_c_bin_project.h.i      |  Bin 0 -> 1090 bytes
 .../data/src/gis/bin/_c_gis_serialization.cpp.i    |  Bin 0 -> 4184 bytes
 .../data/src/gis/bin/_c_gis_serialization.h.i      |  Bin 0 -> 651 bytes
 .hg/store/data/src/gis/bin/serialization.cpp.i     |  Bin 0 -> 3462 bytes
 .../data/src/gis/db/_c_d_b_folder_database.cpp.i   |  Bin 0 -> 2804 bytes
 .../data/src/gis/db/_c_d_b_folder_database.h.i     |  Bin 0 -> 1625 bytes
 .../data/src/gis/db/_c_d_b_folder_group.cpp.i      |  Bin 0 -> 1832 bytes
 .hg/store/data/src/gis/db/_c_d_b_folder_group.h.i  |  Bin 0 -> 978 bytes
 .../data/src/gis/db/_c_d_b_folder_lost_found.cpp.i |  Bin 0 -> 4236 bytes
 .../data/src/gis/db/_c_d_b_folder_lost_found.h.i   |  Bin 0 -> 1698 bytes
 .../data/src/gis/db/_c_d_b_folder_other.cpp.i      |  Bin 0 -> 2133 bytes
 .hg/store/data/src/gis/db/_c_d_b_folder_other.h.i  |  Bin 0 -> 974 bytes
 .../data/src/gis/db/_c_d_b_folder_project.cpp.i    |  Bin 0 -> 2075 bytes
 .../data/src/gis/db/_c_d_b_folder_project.h.i      |  Bin 0 -> 984 bytes
 .hg/store/data/src/gis/db/_c_d_b_item.cpp.i        |  Bin 0 -> 3019 bytes
 .hg/store/data/src/gis/db/_c_d_b_item.h.i          |  Bin 0 -> 1607 bytes
 .hg/store/data/src/gis/db/_c_d_b_project.cpp.i     |  Bin 0 -> 11098 bytes
 .hg/store/data/src/gis/db/_c_d_b_project.h.i       |  Bin 0 -> 4027 bytes
 .../data/src/gis/db/_c_lost_found_project.cpp.i    |  Bin 0 -> 1736 bytes
 .../data/src/gis/db/_c_lost_found_project.h.i      |  Bin 0 -> 1148 bytes
 .hg/store/data/src/gis/db/_c_setup_d_b.cpp.i       |  Bin 0 -> 1452 bytes
 .hg/store/data/src/gis/db/_c_setup_d_b.h.i         |  Bin 0 -> 787 bytes
 .hg/store/data/src/gis/db/_c_setup_database.cpp.i  |  Bin 0 -> 1964 bytes
 .hg/store/data/src/gis/db/_c_setup_database.h.i    |  Bin 0 -> 1061 bytes
 .hg/store/data/src/gis/db/_c_setup_folder.cpp.i    |  Bin 0 -> 1325 bytes
 .hg/store/data/src/gis/db/_c_setup_folder.h.i      |  Bin 0 -> 1240 bytes
 .hg/store/data/src/gis/db/_c_setup_workspace.cpp.i |  Bin 0 -> 1069 bytes
 .hg/store/data/src/gis/db/_c_setup_workspace.h.i   |  Bin 0 -> 949 bytes
 .hg/store/data/src/gis/db/_i_d_b.cpp.i             |  Bin 0 -> 3319 bytes
 .hg/store/data/src/gis/db/_i_d_b.h.i               |  Bin 0 -> 1068 bytes
 .hg/store/data/src/gis/db/_i_d_b_folder.cpp.i      |  Bin 0 -> 12693 bytes
 .hg/store/data/src/gis/db/_i_d_b_folder.h.i        |  Bin 0 -> 4815 bytes
 .hg/store/data/src/gis/db/_i_setup_d_b.ui.i        |  Bin 0 -> 1435 bytes
 .hg/store/data/src/gis/db/_i_setup_database.ui.i   |  Bin 0 -> 847 bytes
 .hg/store/data/src/gis/db/_i_setup_folder.ui.i     |  Bin 0 -> 810 bytes
 .hg/store/data/src/gis/db/_i_setup_workspace.ui.i  |  Bin 0 -> 957 bytes
 .hg/store/data/src/gis/db/macros.h.i               |  Bin 0 -> 1007 bytes
 .hg/store/data/src/gis/gpx/_c_gis_project.cpp.i    |  Bin 0 -> 3936 bytes
 .hg/store/data/src/gis/gpx/_c_gis_project.h.i      |  Bin 0 -> 1277 bytes
 .hg/store/data/src/gis/gpx/_c_gpx_project.cpp.i    |  Bin 0 -> 11876 bytes
 .hg/store/data/src/gis/gpx/_c_gpx_project.h.i      |  Bin 0 -> 3168 bytes
 .hg/store/data/src/gis/gpx/serialization.cpp.i     |  Bin 0 -> 9105 bytes
 .../data/src/gis/ovl/_c_details_ovl_area.cpp.i     |  Bin 0 -> 4674 bytes
 .hg/store/data/src/gis/ovl/_c_details_ovl_area.h.i |  Bin 0 -> 1741 bytes
 .../data/src/gis/ovl/_c_gis_item_ovl_area.cpp.i    |  Bin 0 -> 14581 bytes
 .../data/src/gis/ovl/_c_gis_item_ovl_area.h.i      |  Bin 0 -> 7194 bytes
 .../data/src/gis/ovl/_c_scr_opt_ovl_area.cpp.i     |  Bin 0 -> 2013 bytes
 .hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.h.i |  Bin 0 -> 1438 bytes
 .../data/src/gis/ovl/_i_details_ovl_area.ui.i      |  Bin 0 -> 2425 bytes
 .../data/src/gis/ovl/_i_scr_opt_ovl_area.ui.i      |  Bin 0 -> 1296 bytes
 .hg/store/data/src/gis/prj/_c_details_prj.cpp.i    |  Bin 0 -> 8229 bytes
 .hg/store/data/src/gis/prj/_c_details_prj.h.i      |  Bin 0 -> 1749 bytes
 .hg/store/data/src/gis/prj/_i_details_prj.ui.i     |  Bin 0 -> 1860 bytes
 .hg/store/data/src/gis/prj/_i_gis_project.cpp.i    |  Bin 0 -> 10404 bytes
 .hg/store/data/src/gis/prj/_i_gis_project.h.i      |  Bin 0 -> 8721 bytes
 .hg/store/data/src/gis/qms/_c_qms_project.cpp.i    |  Bin 0 -> 4326 bytes
 .hg/store/data/src/gis/qms/_c_qms_project.h.i      |  Bin 0 -> 1547 bytes
 .hg/store/data/src/gis/qms/serialization.cpp.i     |  Bin 0 -> 8057 bytes
 .hg/store/data/src/gis/rte/_c_gis_item_rte.cpp.i   |  Bin 0 -> 11379 bytes
 .hg/store/data/src/gis/rte/_c_gis_item_rte.h.i     |  Bin 0 -> 6793 bytes
 .hg/store/data/src/gis/rte/_c_scr_opt_rte.cpp.i    |  Bin 0 -> 2605 bytes
 .hg/store/data/src/gis/rte/_c_scr_opt_rte.h.i      |  Bin 0 -> 2213 bytes
 .hg/store/data/src/gis/rte/_i_scr_opt_rte.ui.i     |  Bin 0 -> 1166 bytes
 .../data/src/gis/search/_c_search_google.cpp.i     |  Bin 0 -> 3033 bytes
 .hg/store/data/src/gis/search/_c_search_google.h.i |  Bin 0 -> 1590 bytes
 .../data/src/gis/tnv/_c_two_nav_project.cpp.i      |  Bin 0 -> 6040 bytes
 .hg/store/data/src/gis/tnv/_c_two_nav_project.h.i  |  Bin 0 -> 1844 bytes
 .hg/store/data/src/gis/tnv/serialization.cpp.i     |  Bin 0 -> 6260 bytes
 .hg/store/data/src/gis/trk/_c_combine_trk.cpp.i    |  Bin 0 -> 2471 bytes
 .hg/store/data/src/gis/trk/_c_combine_trk.h.i      |  Bin 0 -> 1675 bytes
 .hg/store/data/src/gis/trk/_c_details_trk.cpp.i    |  Bin 0 -> 12013 bytes
 .hg/store/data/src/gis/trk/_c_details_trk.h.i      |  Bin 0 -> 2786 bytes
 .hg/store/data/src/gis/trk/_c_gis_item_trk.cpp.i   |  Bin 0 -> 46147 bytes
 .hg/store/data/src/gis/trk/_c_gis_item_trk.h.i     |  Bin 0 -> 23772 bytes
 .hg/store/data/src/gis/trk/_c_scr_opt_trk.cpp.i    |  Bin 0 -> 4804 bytes
 .hg/store/data/src/gis/trk/_c_scr_opt_trk.h.i      |  Bin 0 -> 2557 bytes
 .hg/store/data/src/gis/trk/_i_combine_trk.ui.i     |  Bin 0 -> 1138 bytes
 .hg/store/data/src/gis/trk/_i_details_trk.ui.i     |  Bin 0 -> 11854 bytes
 .hg/store/data/src/gis/trk/_i_scr_opt_trk.ui.i     |  Bin 0 -> 3817 bytes
 .../data/src/gis/trk/filter/_c_filter_delete.cpp.i |  Bin 0 -> 837 bytes
 .../data/src/gis/trk/filter/_c_filter_delete.h.i   |  Bin 0 -> 935 bytes
 .../gis/trk/filter/_c_filter_douglas_peuker.cpp.i  |  Bin 0 -> 1364 bytes
 .../gis/trk/filter/_c_filter_douglas_peuker.h.i    |  Bin 0 -> 956 bytes
 .../data/src/gis/trk/filter/_c_filter_median.cpp.i |  Bin 0 -> 1067 bytes
 .../data/src/gis/trk/filter/_c_filter_median.h.i   |  Bin 0 -> 936 bytes
 .../src/gis/trk/filter/_c_filter_new_date.cpp.i    |  Bin 0 -> 879 bytes
 .../data/src/gis/trk/filter/_c_filter_new_date.h.i |  Bin 0 -> 936 bytes
 .../gis/trk/filter/_c_filter_obscure_date.cpp.i    |  Bin 0 -> 932 bytes
 .../src/gis/trk/filter/_c_filter_obscure_date.h.i  |  Bin 0 -> 948 bytes
 .../trk/filter/_c_filter_offset_elevation.cpp.i    |  Bin 0 -> 992 bytes
 .../gis/trk/filter/_c_filter_offset_elevation.h.i  |  Bin 0 -> 959 bytes
 .../trk/filter/_c_filter_replace_elevation.cpp.i   |  Bin 0 -> 841 bytes
 .../gis/trk/filter/_c_filter_replace_elevation.h.i |  Bin 0 -> 957 bytes
 .../data/src/gis/trk/filter/_c_filter_reset.cpp.i  |  Bin 0 -> 836 bytes
 .../data/src/gis/trk/filter/_c_filter_reset.h.i    |  Bin 0 -> 931 bytes
 .../data/src/gis/trk/filter/_c_filter_speed.cpp.i  |  Bin 0 -> 958 bytes
 .../data/src/gis/trk/filter/_c_filter_speed.h.i    |  Bin 0 -> 932 bytes
 .../data/src/gis/trk/filter/_i_filter_delete.ui.i  |  Bin 0 -> 832 bytes
 .../gis/trk/filter/_i_filter_douglas_peuker.ui.i   |  Bin 0 -> 2247 bytes
 .../data/src/gis/trk/filter/_i_filter_median.ui.i  |  Bin 0 -> 2364 bytes
 .../src/gis/trk/filter/_i_filter_new_date.ui.i     |  Bin 0 -> 831 bytes
 .../src/gis/trk/filter/_i_filter_obscure_date.ui.i |  Bin 0 -> 858 bytes
 .../gis/trk/filter/_i_filter_offset_elevation.ui.i |  Bin 0 -> 1382 bytes
 .../trk/filter/_i_filter_replace_elevation.ui.i    |  Bin 0 -> 1165 bytes
 .../data/src/gis/trk/filter/_i_filter_reset.ui.i   |  Bin 0 -> 834 bytes
 .../data/src/gis/trk/filter/_i_filter_speed.ui.i   |  Bin 0 -> 931 bytes
 .hg/store/data/src/gis/trk/filter/filter.cpp.i     |  Bin 0 -> 5148 bytes
 .../data/src/gis/wpt/_c_details_geo_cache.cpp.i    |  Bin 0 -> 4520 bytes
 .../data/src/gis/wpt/_c_details_geo_cache.h.i      |  Bin 0 -> 1448 bytes
 .hg/store/data/src/gis/wpt/_c_details_wpt.cpp.i    |  Bin 0 -> 8940 bytes
 .hg/store/data/src/gis/wpt/_c_details_wpt.h.i      |  Bin 0 -> 2198 bytes
 .hg/store/data/src/gis/wpt/_c_gis_item_wpt.cpp.i   |  Bin 0 -> 21535 bytes
 .hg/store/data/src/gis/wpt/_c_gis_item_wpt.h.i     |  Bin 0 -> 13029 bytes
 .hg/store/data/src/gis/wpt/_c_proj_wpt.cpp.i       |  Bin 0 -> 2832 bytes
 .hg/store/data/src/gis/wpt/_c_proj_wpt.h.i         |  Bin 0 -> 1124 bytes
 .hg/store/data/src/gis/wpt/_c_scr_opt_wpt.cpp.i    |  Bin 0 -> 4870 bytes
 .hg/store/data/src/gis/wpt/_c_scr_opt_wpt.h.i      |  Bin 0 -> 2140 bytes
 .../data/src/gis/wpt/_i_details_geo_cache.ui.i     |  Bin 0 -> 4084 bytes
 .hg/store/data/src/gis/wpt/_i_details_wpt.ui.i     |  Bin 0 -> 10353 bytes
 .hg/store/data/src/gis/wpt/_i_proj_wpt.ui.i        |  Bin 0 -> 1910 bytes
 .hg/store/data/src/gis/wpt/_i_scr_opt_wpt.ui.i     |  Bin 0 -> 3488 bytes
 .hg/store/data/src/grid/_c_grid.cpp.i              |  Bin 0 -> 5840 bytes
 .hg/store/data/src/grid/_c_grid.h.i                |  Bin 0 -> 1731 bytes
 .hg/store/data/src/grid/_c_grid_setup.cpp.i        |  Bin 0 -> 1628 bytes
 .hg/store/data/src/grid/_c_grid_setup.h.i          |  Bin 0 -> 1201 bytes
 .hg/store/data/src/grid/_c_proj_wizard.cpp.i       |  Bin 0 -> 3840 bytes
 .hg/store/data/src/grid/_c_proj_wizard.h.i         |  Bin 0 -> 1032 bytes
 .hg/store/data/src/grid/_i_grid_setup.ui.i         |  Bin 0 -> 2021 bytes
 .hg/store/data/src/grid/_i_proj_wizard.ui.i        |  Bin 0 -> 2407 bytes
 .hg/store/data/src/grid/mitab.cpp.i                |  Bin 0 -> 5803 bytes
 .hg/store/data/src/grid/mitab.h.i                  |  Bin 0 -> 1094 bytes
 .hg/store/data/src/helpers/_c_app_opts.h.i         |  Bin 0 -> 1171 bytes
 .../data/src/helpers/_c_elevation_dialog.cpp.i     |  Bin 0 -> 1318 bytes
 .hg/store/data/src/helpers/_c_elevation_dialog.h.i |  Bin 0 -> 1045 bytes
 .hg/store/data/src/helpers/_c_file_ext.h.i         |  Bin 0 -> 1153 bytes
 .../data/src/helpers/_c_history_list_widget.cpp.i  |  Bin 0 -> 2739 bytes
 .../data/src/helpers/_c_history_list_widget.h.i    |  Bin 0 -> 1495 bytes
 .hg/store/data/src/helpers/_c_input_dialog.cpp.i   |  Bin 0 -> 914 bytes
 .hg/store/data/src/helpers/_c_input_dialog.h.i     |  Bin 0 -> 1014 bytes
 .hg/store/data/src/helpers/_c_links_dialog.cpp.i   |  Bin 0 -> 1116 bytes
 .hg/store/data/src/helpers/_c_links_dialog.h.i     |  Bin 0 -> 1039 bytes
 .hg/store/data/src/helpers/_c_photo_album.cpp.i    |  Bin 0 -> 3133 bytes
 .hg/store/data/src/helpers/_c_photo_album.h.i      |  Bin 0 -> 1630 bytes
 .hg/store/data/src/helpers/_c_photo_viewer.cpp.i   |  Bin 0 -> 2070 bytes
 .hg/store/data/src/helpers/_c_photo_viewer.h.i     |  Bin 0 -> 854 bytes
 .../data/src/helpers/_c_position_dialog.cpp.i      |  Bin 0 -> 1498 bytes
 .hg/store/data/src/helpers/_c_position_dialog.h.i  |  Bin 0 -> 997 bytes
 .../data/src/helpers/_c_select_copy_action.cpp.i   |  Bin 0 -> 1733 bytes
 .../data/src/helpers/_c_select_copy_action.h.i     |  Bin 0 -> 1485 bytes
 .../src/helpers/_c_select_project_dialog.cpp.i     |  Bin 0 -> 3369 bytes
 .../data/src/helpers/_c_select_project_dialog.h.i  |  Bin 0 -> 1532 bytes
 .hg/store/data/src/helpers/_c_settings.h.i         |  Bin 0 -> 1247 bytes
 .../data/src/helpers/_c_text_edit_widget.cpp.i     |  Bin 0 -> 4214 bytes
 .hg/store/data/src/helpers/_c_text_edit_widget.h.i |  Bin 0 -> 2528 bytes
 .../data/src/helpers/_c_wpt_icon_dialog.cpp.i      |  Bin 0 -> 1922 bytes
 .hg/store/data/src/helpers/_c_wpt_icon_dialog.h.i  |  Bin 0 -> 1214 bytes
 .../data/src/helpers/_i_elevation_dialog.ui.i      |  Bin 0 -> 798 bytes
 .hg/store/data/src/helpers/_i_input_dialog.ui.i    |  Bin 0 -> 667 bytes
 .hg/store/data/src/helpers/_i_links_dialog.ui.i    |  Bin 0 -> 846 bytes
 .hg/store/data/src/helpers/_i_photo_album.ui.i     |  Bin 0 -> 644 bytes
 .hg/store/data/src/helpers/_i_position_dialog.ui.i |  Bin 0 -> 767 bytes
 .../data/src/helpers/_i_select_copy_action.ui.i    |  Bin 0 -> 1179 bytes
 .../data/src/helpers/_i_select_project_dialog.ui.i |  Bin 0 -> 1354 bytes
 .../data/src/helpers/_i_text_edit_widget.ui.i      |  Bin 0 -> 2054 bytes
 .hg/store/data/src/helpers/_i_wpt_icon_dialog.ui.i |  Bin 0 -> 716 bytes
 .hg/store/data/src/helpers/_platform.h.i           |  Bin 0 -> 4671 bytes
 .hg/store/data/src/icons/16x16/2_d_fix.png.i       |  Bin 0 -> 537 bytes
 .hg/store/data/src/icons/16x16/3_d_fix.png.i       |  Bin 0 -> 600 bytes
 .hg/store/data/src/icons/16x16/_add.png.i          |  Bin 0 -> 356 bytes
 .../data/src/icons/16x16/_add_map_workspace.png.i  |  Bin 0 -> 1623 bytes
 .hg/store/data/src/icons/16x16/_add_wpt.png.i      |  Bin 0 -> 585 bytes
 .hg/store/data/src/icons/16x16/_cancel.png.i       |  Bin 0 -> 606 bytes
 .hg/store/data/src/icons/16x16/_check.png.i        |  Bin 0 -> 560 bytes
 .hg/store/data/src/icons/16x16/_close.png.i        |  Bin 0 -> 557 bytes
 .hg/store/data/src/icons/16x16/_copy.png.i         |  Bin 0 -> 386 bytes
 .hg/store/data/src/icons/16x16/_cut.png.i          |  Bin 0 -> 639 bytes
 .../data/src/icons/16x16/_delete_multiple.png.i    |  Bin 0 -> 538 bytes
 .hg/store/data/src/icons/16x16/_delete_one.png.i   |  Bin 0 -> 494 bytes
 .hg/store/data/src/icons/16x16/_down.png.i         |  Bin 0 -> 483 bytes
 .hg/store/data/src/icons/16x16/_edit_details.png.i |  Bin 0 -> 790 bytes
 .hg/store/data/src/icons/16x16/_edit_text.png.i    |  Bin 0 -> 651 bytes
 .hg/store/data/src/icons/16x16/_folder_d_e_m.png.i |  Bin 0 -> 1664 bytes
 .hg/store/data/src/icons/16x16/_folder_map.png.i   |  Bin 0 -> 2045 bytes
 .hg/store/data/src/icons/16x16/_font.png.i         |  Bin 0 -> 465 bytes
 .hg/store/data/src/icons/16x16/_from_map.png.i     |  Bin 0 -> 843 bytes
 .hg/store/data/src/icons/16x16/_gis_project.png.i  |  Bin 0 -> 690 bytes
 .hg/store/data/src/icons/16x16/_grid.png.i         |  Bin 0 -> 490 bytes
 .hg/store/data/src/icons/16x16/_grid_setup.png.i   |  Bin 0 -> 918 bytes
 .hg/store/data/src/icons/16x16/_grid_wizzard.png.i |  Bin 0 -> 845 bytes
 .hg/store/data/src/icons/16x16/_help.png.i         |  Bin 0 -> 650 bytes
 .hg/store/data/src/icons/16x16/_info.png.i         |  Bin 0 -> 570 bytes
 .hg/store/data/src/icons/16x16/_line_move.png.i    |  Bin 0 -> 634 bytes
 .hg/store/data/src/icons/16x16/_load_g_i_s.png.i   |  Bin 0 -> 616 bytes
 .hg/store/data/src/icons/16x16/_lock.png.i         |  Bin 0 -> 604 bytes
 .hg/store/data/src/icons/16x16/_map.png.i          |  Bin 0 -> 627 bytes
 .hg/store/data/src/icons/16x16/_map_room.png.i     |  Bin 0 -> 778 bytes
 .../data/src/icons/16x16/_mime_dem_v_r_t.png.i     |  Bin 0 -> 720 bytes
 .hg/store/data/src/icons/16x16/_mime_i_m_g.png.i   |  Bin 0 -> 745 bytes
 .hg/store/data/src/icons/16x16/_mime_j_n_x.png.i   |  Bin 0 -> 750 bytes
 .hg/store/data/src/icons/16x16/_mime_m_a_p.png.i   |  Bin 0 -> 858 bytes
 .hg/store/data/src/icons/16x16/_mime_r_m_a_p.png.i |  Bin 0 -> 820 bytes
 .hg/store/data/src/icons/16x16/_mime_v_r_t.png.i   |  Bin 0 -> 1474 bytes
 .hg/store/data/src/icons/16x16/_mime_w_m_t_s.png.i |  Bin 0 -> 796 bytes
 .hg/store/data/src/icons/16x16/_mouse_wheel.png.i  |  Bin 0 -> 679 bytes
 .hg/store/data/src/icons/16x16/_night_day.png.i    |  Bin 0 -> 539 bytes
 .hg/store/data/src/icons/16x16/_no_fix.png.i       |  Bin 0 -> 473 bytes
 .hg/store/data/src/icons/16x16/_off.png.i          |  Bin 0 -> 647 bytes
 .hg/store/data/src/icons/16x16/_p_o_i_text.png.i   |  Bin 0 -> 511 bytes
 .hg/store/data/src/icons/16x16/_paste.png.i        |  Bin 0 -> 411 bytes
 .hg/store/data/src/icons/16x16/_point_move.png.i   |  Bin 0 -> 555 bytes
 .hg/store/data/src/icons/16x16/_q_map_shack.png.i  |  Bin 0 -> 778 bytes
 .hg/store/data/src/icons/16x16/_redo.png.i         |  Bin 0 -> 549 bytes
 .hg/store/data/src/icons/16x16/_reset.png.i        |  Bin 0 -> 697 bytes
 .hg/store/data/src/icons/16x16/_right.png.i        |  Bin 0 -> 453 bytes
 .hg/store/data/src/icons/16x16/_route.png.i        |  Bin 0 -> 944 bytes
 .../data/src/icons/16x16/_save_all_g_i_s.png.i     |  Bin 0 -> 816 bytes
 .hg/store/data/src/icons/16x16/_save_g_i_s.png.i   |  Bin 0 -> 603 bytes
 .hg/store/data/src/icons/16x16/_scale.png.i        |  Bin 0 -> 448 bytes
 .hg/store/data/src/icons/16x16/_select_color.png.i |  Bin 0 -> 815 bytes
 .hg/store/data/src/icons/16x16/_select_range.png.i |  Bin 0 -> 489 bytes
 .../src/icons/16x16/_setup_map_workspace.png.i     |  Bin 0 -> 846 bytes
 .hg/store/data/src/icons/16x16/_tainted.png.i      |  Bin 0 -> 1298 bytes
 .hg/store/data/src/icons/16x16/_text_bold.png.i    |  Bin 0 -> 409 bytes
 .hg/store/data/src/icons/16x16/_text_center.png.i  |  Bin 0 -> 335 bytes
 .hg/store/data/src/icons/16x16/_text_italic.png.i  |  Bin 0 -> 307 bytes
 .../data/src/icons/16x16/_text_justified.png.i     |  Bin 0 -> 297 bytes
 .hg/store/data/src/icons/16x16/_text_left.png.i    |  Bin 0 -> 328 bytes
 .hg/store/data/src/icons/16x16/_text_right.png.i   |  Bin 0 -> 324 bytes
 .../data/src/icons/16x16/_text_underlined.png.i    |  Bin 0 -> 397 bytes
 .../data/src/icons/16x16/_time_zone_setup.png.i    |  Bin 0 -> 912 bytes
 .hg/store/data/src/icons/16x16/_to_bottom.png.i    |  Bin 0 -> 492 bytes
 .hg/store/data/src/icons/16x16/_to_top.png.i       |  Bin 0 -> 499 bytes
 .hg/store/data/src/icons/16x16/_tool_tip.png.i     |  Bin 0 -> 623 bytes
 .hg/store/data/src/icons/16x16/_track.png.i        |  Bin 0 -> 497 bytes
 .hg/store/data/src/icons/16x16/_trk_cut.png.i      |  Bin 0 -> 739 bytes
 .hg/store/data/src/icons/16x16/_trk_profile.png.i  |  Bin 0 -> 610 bytes
 .hg/store/data/src/icons/16x16/_un_lock.png.i      |  Bin 0 -> 606 bytes
 .hg/store/data/src/icons/16x16/_undo.png.i         |  Bin 0 -> 558 bytes
 .hg/store/data/src/icons/16x16/_up.png.i           |  Bin 0 -> 492 bytes
 .hg/store/data/src/icons/16x16/_wpt_move.png.i     |  Bin 0 -> 583 bytes
 .hg/store/data/src/icons/16x16/_wpt_proj.png.i     |  Bin 0 -> 1554 bytes
 .hg/store/data/src/icons/16x16/add.png.i           |  Bin 0 -> 427 bytes
 .hg/store/data/src/icons/16x16/add_canvas.png.i    |  Bin 0 -> 815 bytes
 .hg/store/data/src/icons/16x16/delete.png.i        |  Bin 0 -> 490 bytes
 .hg/store/data/src/icons/16x16/delete_all.png.i    |  Bin 0 -> 532 bytes
 .hg/store/data/src/icons/16x16/down.png.i          |  Bin 0 -> 482 bytes
 .../data/src/icons/16x16/flip_direction.png.i      |  Bin 0 -> 679 bytes
 .hg/store/data/src/icons/16x16/font.png.i          |  Bin 0 -> 465 bytes
 .hg/store/data/src/icons/16x16/from_map.png.i      |  Bin 0 -> 848 bytes
 .hg/store/data/src/icons/16x16/grid.png.i          |  Bin 0 -> 490 bytes
 .hg/store/data/src/icons/16x16/grid_setup.png.i    |  Bin 0 -> 905 bytes
 .hg/store/data/src/icons/16x16/grid_wizard.png.i   |  Bin 0 -> 845 bytes
 .hg/store/data/src/icons/16x16/icons.svg.save.i    |  Bin 0 -> 1024 bytes
 .hg/store/data/src/icons/16x16/jnx.png.i           |  Bin 0 -> 751 bytes
 .hg/store/data/src/icons/16x16/map.png.i           |  Bin 0 -> 784 bytes
 .hg/store/data/src/icons/16x16/mime__img.png.i     |  Bin 0 -> 739 bytes
 .hg/store/data/src/icons/16x16/mime__jnx.png.i     |  Bin 0 -> 750 bytes
 .hg/store/data/src/icons/16x16/mime__map.png.i     |  Bin 0 -> 847 bytes
 .hg/store/data/src/icons/16x16/mime__rmap.png.i    |  Bin 0 -> 799 bytes
 .hg/store/data/src/icons/16x16/mime__vrt.png.i     |  Bin 0 -> 704 bytes
 .hg/store/data/src/icons/16x16/night_day.png.i     |  Bin 0 -> 539 bytes
 .hg/store/data/src/icons/16x16/path_map.png.i      |  Bin 0 -> 2378 bytes
 .hg/store/data/src/icons/16x16/poi_text.png.i      |  Bin 0 -> 511 bytes
 .hg/store/data/src/icons/16x16/red_glow.png.i      |  Bin 0 -> 513 bytes
 .hg/store/data/src/icons/16x16/reset.png.i         |  Bin 0 -> 688 bytes
 .hg/store/data/src/icons/16x16/rmap.png.i          |  Bin 0 -> 813 bytes
 .hg/store/data/src/icons/16x16/scale.png.i         |  Bin 0 -> 445 bytes
 .hg/store/data/src/icons/16x16/select_color.png.i  |  Bin 0 -> 815 bytes
 .hg/store/data/src/icons/16x16/to_bottom.png.i     |  Bin 0 -> 490 bytes
 .hg/store/data/src/icons/16x16/tool_tip.png.i      |  Bin 0 -> 623 bytes
 .hg/store/data/src/icons/16x16/up.png.i            |  Bin 0 -> 492 bytes
 .hg/store/data/src/icons/16x16/view.png.i          |  Bin 0 -> 705 bytes
 .hg/store/data/src/icons/16x16/wizzard.png.i       |  Bin 0 -> 641 bytes
 .hg/store/data/src/icons/2_d_fix.svg.i             |  Bin 0 -> 1220 bytes
 .hg/store/data/src/icons/2_nav_project.svg.i       |  Bin 0 -> 1624 bytes
 .hg/store/data/src/icons/32x32/2_d_fix.png.i       |  Bin 0 -> 780 bytes
 .hg/store/data/src/icons/32x32/2_nav_project.png.i |  Bin 0 -> 1290 bytes
 .hg/store/data/src/icons/32x32/3_d_fix.png.i       |  Bin 0 -> 962 bytes
 .hg/store/data/src/icons/32x32/_add.png.i          |  Bin 0 -> 427 bytes
 .hg/store/data/src/icons/32x32/_add_area.png.i     |  Bin 0 -> 1353 bytes
 .hg/store/data/src/icons/32x32/_add_image.png.i    |  Bin 0 -> 1186 bytes
 .../data/src/icons/32x32/_add_map_workspace.png.i  |  Bin 0 -> 3034 bytes
 .hg/store/data/src/icons/32x32/_add_project.png.i  |  Bin 0 -> 2160 bytes
 .hg/store/data/src/icons/32x32/_add_trk.png.i      |  Bin 0 -> 1044 bytes
 .hg/store/data/src/icons/32x32/_add_wpt.png.i      |  Bin 0 -> 917 bytes
 .hg/store/data/src/icons/32x32/_apply.png.i        |  Bin 0 -> 1995 bytes
 .hg/store/data/src/icons/32x32/_area.png.i         |  Bin 0 -> 1237 bytes
 .hg/store/data/src/icons/32x32/_area_move.png.i    |  Bin 0 -> 1745 bytes
 .hg/store/data/src/icons/32x32/_cancel.png.i       |  Bin 0 -> 947 bytes
 .hg/store/data/src/icons/32x32/_check.png.i        |  Bin 0 -> 1013 bytes
 .hg/store/data/src/icons/32x32/_close.png.i        |  Bin 0 -> 920 bytes
 .hg/store/data/src/icons/32x32/_combine.png.i      |  Bin 0 -> 1543 bytes
 .hg/store/data/src/icons/32x32/_copy.png.i         |  Bin 0 -> 1007 bytes
 .hg/store/data/src/icons/32x32/_cut.png.i          |  Bin 0 -> 1306 bytes
 .hg/store/data/src/icons/32x32/_cut_history.png.i  |  Bin 0 -> 1071 bytes
 .hg/store/data/src/icons/32x32/_d_b_project.png.i  |  Bin 0 -> 1598 bytes
 .hg/store/data/src/icons/32x32/_database.png.i     |  Bin 0 -> 1342 bytes
 .../data/src/icons/32x32/_database_convert.png.i   |  Bin 0 -> 3589 bytes
 .../data/src/icons/32x32/_database_setup.png.i     |  Bin 0 -> 4955 bytes
 .hg/store/data/src/icons/32x32/_del_image.png.i    |  Bin 0 -> 2436 bytes
 .../data/src/icons/32x32/_delete_multiple.png.i    |  Bin 0 -> 963 bytes
 .hg/store/data/src/icons/32x32/_delete_one.png.i   |  Bin 0 -> 816 bytes
 .hg/store/data/src/icons/32x32/_device.png.i       |  Bin 0 -> 669 bytes
 .hg/store/data/src/icons/32x32/_down.png.i         |  Bin 0 -> 720 bytes
 .hg/store/data/src/icons/32x32/_edit_details.png.i |  Bin 0 -> 1736 bytes
 .hg/store/data/src/icons/32x32/_edit_text.png.i    |  Bin 0 -> 1134 bytes
 .hg/store/data/src/icons/32x32/_empty.png.i        |  Bin 0 -> 646 bytes
 .hg/store/data/src/icons/32x32/_error.png.i        |  Bin 0 -> 1195 bytes
 .hg/store/data/src/icons/32x32/_folder_d_e_m.png.i |  Bin 0 -> 4116 bytes
 .hg/store/data/src/icons/32x32/_folder_map.png.i   |  Bin 0 -> 5820 bytes
 .hg/store/data/src/icons/32x32/_font.png.i         |  Bin 0 -> 687 bytes
 .hg/store/data/src/icons/32x32/_from_map.png.i     |  Bin 0 -> 1859 bytes
 .hg/store/data/src/icons/32x32/_gis_project.png.i  |  Bin 0 -> 1325 bytes
 .hg/store/data/src/icons/32x32/_gpx_project.png.i  |  Bin 0 -> 1334 bytes
 .hg/store/data/src/icons/32x32/_grid.png.i         |  Bin 0 -> 568 bytes
 .hg/store/data/src/icons/32x32/_grid_setup.png.i   |  Bin 0 -> 2044 bytes
 .hg/store/data/src/icons/32x32/_grid_wizzard.png.i |  Bin 0 -> 1577 bytes
 .hg/store/data/src/icons/32x32/_help.png.i         |  Bin 0 -> 1218 bytes
 .hg/store/data/src/icons/32x32/_image.png.i        |  Bin 0 -> 1065 bytes
 .hg/store/data/src/icons/32x32/_info.png.i         |  Bin 0 -> 991 bytes
 .hg/store/data/src/icons/32x32/_left.png.i         |  Bin 0 -> 734 bytes
 .hg/store/data/src/icons/32x32/_line_move.png.i    |  Bin 0 -> 1215 bytes
 .hg/store/data/src/icons/32x32/_link.png.i         |  Bin 0 -> 1017 bytes
 .hg/store/data/src/icons/32x32/_load_g_i_s.png.i   |  Bin 0 -> 2268 bytes
 .hg/store/data/src/icons/32x32/_load_view.png.i    |  Bin 0 -> 1577 bytes
 .hg/store/data/src/icons/32x32/_lock.png.i         |  Bin 0 -> 997 bytes
 .hg/store/data/src/icons/32x32/_map.png.i          |  Bin 0 -> 1234 bytes
 .hg/store/data/src/icons/32x32/_map_room.png.i     |  Bin 0 -> 1615 bytes
 .../data/src/icons/32x32/_mime_dem_v_r_t.png.i     |  Bin 0 -> 2589 bytes
 .hg/store/data/src/icons/32x32/_mime_i_m_g.png.i   |  Bin 0 -> 3408 bytes
 .hg/store/data/src/icons/32x32/_mime_j_n_x.png.i   |  Bin 0 -> 3414 bytes
 .hg/store/data/src/icons/32x32/_mime_m_a_p.png.i   |  Bin 0 -> 3778 bytes
 .hg/store/data/src/icons/32x32/_mime_r_m_a_p.png.i |  Bin 0 -> 3812 bytes
 .hg/store/data/src/icons/32x32/_mime_t_m_s.png.i   |  Bin 0 -> 2745 bytes
 .hg/store/data/src/icons/32x32/_mime_v_r_t.png.i   |  Bin 0 -> 4991 bytes
 .hg/store/data/src/icons/32x32/_mime_w_m_t_s.png.i |  Bin 0 -> 3639 bytes
 .hg/store/data/src/icons/32x32/_mouse_wheel.png.i  |  Bin 0 -> 1292 bytes
 .hg/store/data/src/icons/32x32/_move.png.i         |  Bin 0 -> 934 bytes
 .hg/store/data/src/icons/32x32/_night_day.png.i    |  Bin 0 -> 1018 bytes
 .hg/store/data/src/icons/32x32/_no_fix.png.i       |  Bin 0 -> 726 bytes
 .hg/store/data/src/icons/32x32/_off.png.i          |  Bin 0 -> 1138 bytes
 .hg/store/data/src/icons/32x32/_opacity.png.i      |  Bin 0 -> 844 bytes
 .hg/store/data/src/icons/32x32/_p_o_i_text.png.i   |  Bin 0 -> 787 bytes
 .hg/store/data/src/icons/32x32/_paste.png.i        |  Bin 0 -> 519 bytes
 .hg/store/data/src/icons/32x32/_path.png.i         |  Bin 0 -> 601 bytes
 .hg/store/data/src/icons/32x32/_path_blue.png.i    |  Bin 0 -> 601 bytes
 .hg/store/data/src/icons/32x32/_path_green.png.i   |  Bin 0 -> 609 bytes
 .hg/store/data/src/icons/32x32/_path_orange.png.i  |  Bin 0 -> 603 bytes
 .hg/store/data/src/icons/32x32/_pattern.png.i      |  Bin 0 -> 1555 bytes
 .hg/store/data/src/icons/32x32/_point_hide.png.i   |  Bin 0 -> 878 bytes
 .hg/store/data/src/icons/32x32/_point_move.png.i   |  Bin 0 -> 1033 bytes
 .hg/store/data/src/icons/32x32/_point_show.png.i   |  Bin 0 -> 707 bytes
 .hg/store/data/src/icons/32x32/_print.png.i        |  Bin 0 -> 972 bytes
 .hg/store/data/src/icons/32x32/_q_map_shack.png.i  |  Bin 0 -> 1615 bytes
 .hg/store/data/src/icons/32x32/_qms_project.png.i  |  Bin 0 -> 1410 bytes
 .hg/store/data/src/icons/32x32/_redo.png.i         |  Bin 0 -> 997 bytes
 .hg/store/data/src/icons/32x32/_reload_image.png.i |  Bin 0 -> 1277 bytes
 .hg/store/data/src/icons/32x32/_reset.png.i        |  Bin 0 -> 1326 bytes
 .hg/store/data/src/icons/32x32/_reverse.png.i      |  Bin 0 -> 1427 bytes
 .hg/store/data/src/icons/32x32/_right.png.i        |  Bin 0 -> 724 bytes
 .hg/store/data/src/icons/32x32/_route.png.i        |  Bin 0 -> 2444 bytes
 .../data/src/icons/32x32/_save_all_g_i_s.png.i     |  Bin 0 -> 2239 bytes
 .hg/store/data/src/icons/32x32/_save_g_i_s.png.i   |  Bin 0 -> 2037 bytes
 .../data/src/icons/32x32/_save_g_i_s_as.png.i      |  Bin 0 -> 1409 bytes
 .hg/store/data/src/icons/32x32/_save_view.png.i    |  Bin 0 -> 1534 bytes
 .hg/store/data/src/icons/32x32/_scale.png.i        |  Bin 0 -> 571 bytes
 .../data/src/icons/32x32/_search_google.png.i      |  Bin 0 -> 5947 bytes
 .hg/store/data/src/icons/32x32/_select_color.png.i |  Bin 0 -> 1747 bytes
 .hg/store/data/src/icons/32x32/_select_range.png.i |  Bin 0 -> 2488 bytes
 .hg/store/data/src/icons/32x32/_set_ele.png.i      |  Bin 0 -> 1760 bytes
 .../src/icons/32x32/_setup_map_workspace.png.i     |  Bin 0 -> 2085 bytes
 .hg/store/data/src/icons/32x32/_start.png.i        |  Bin 0 -> 923 bytes
 .hg/store/data/src/icons/32x32/_tainted.png.i      |  Bin 0 -> 2518 bytes
 .hg/store/data/src/icons/32x32/_text_bold.png.i    |  Bin 0 -> 600 bytes
 .hg/store/data/src/icons/32x32/_text_center.png.i  |  Bin 0 -> 428 bytes
 .hg/store/data/src/icons/32x32/_text_italic.png.i  |  Bin 0 -> 443 bytes
 .../data/src/icons/32x32/_text_justified.png.i     |  Bin 0 -> 366 bytes
 .hg/store/data/src/icons/32x32/_text_left.png.i    |  Bin 0 -> 392 bytes
 .hg/store/data/src/icons/32x32/_text_right.png.i   |  Bin 0 -> 424 bytes
 .../data/src/icons/32x32/_text_underlined.png.i    |  Bin 0 -> 556 bytes
 .hg/store/data/src/icons/32x32/_time.png.i         |  Bin 0 -> 1358 bytes
 .../data/src/icons/32x32/_time_zone_setup.png.i    |  Bin 0 -> 2322 bytes
 .hg/store/data/src/icons/32x32/_to_bottom.png.i    |  Bin 0 -> 725 bytes
 .hg/store/data/src/icons/32x32/_to_top.png.i       |  Bin 0 -> 714 bytes
 .hg/store/data/src/icons/32x32/_tool_tip.png.i     |  Bin 0 -> 1143 bytes
 .hg/store/data/src/icons/32x32/_track.png.i        |  Bin 0 -> 897 bytes
 .hg/store/data/src/icons/32x32/_trk_cut.png.i      |  Bin 0 -> 1572 bytes
 .hg/store/data/src/icons/32x32/_trk_profile.png.i  |  Bin 0 -> 1067 bytes
 .hg/store/data/src/icons/32x32/_un_lock.png.i      |  Bin 0 -> 1084 bytes
 .hg/store/data/src/icons/32x32/_undo.png.i         |  Bin 0 -> 1002 bytes
 .hg/store/data/src/icons/32x32/_unit_setup.png.i   |  Bin 0 -> 4444 bytes
 .hg/store/data/src/icons/32x32/_up.png.i           |  Bin 0 -> 710 bytes
 .hg/store/data/src/icons/32x32/_vrt_builder.png.i  |  Bin 0 -> 5001 bytes
 .hg/store/data/src/icons/32x32/_wpt_move.png.i     |  Bin 0 -> 1063 bytes
 .hg/store/data/src/icons/32x32/_wpt_proj.png.i     |  Bin 0 -> 2696 bytes
 .hg/store/data/src/icons/32x32/_wpt_prox.png.i     |  Bin 0 -> 982 bytes
 .hg/store/data/src/icons/32x32/add.png.i           |  Bin 0 -> 427 bytes
 .hg/store/data/src/icons/32x32/add_canvas.png.i    |  Bin 0 -> 1418 bytes
 .hg/store/data/src/icons/32x32/cancel.png.i        |  Bin 0 -> 977 bytes
 .hg/store/data/src/icons/32x32/check.png.i         |  Bin 0 -> 1018 bytes
 .hg/store/data/src/icons/32x32/delete.png.i        |  Bin 0 -> 819 bytes
 .hg/store/data/src/icons/32x32/delete_all.png.i    |  Bin 0 -> 960 bytes
 .hg/store/data/src/icons/32x32/down.png.i          |  Bin 0 -> 725 bytes
 .../data/src/icons/32x32/flip_direction.png.i      |  Bin 0 -> 1292 bytes
 .hg/store/data/src/icons/32x32/font.png.i          |  Bin 0 -> 687 bytes
 .hg/store/data/src/icons/32x32/from_map.png.i      |  Bin 0 -> 1740 bytes
 .hg/store/data/src/icons/32x32/grid.png.i          |  Bin 0 -> 568 bytes
 .hg/store/data/src/icons/32x32/grid_setup.png.i    |  Bin 0 -> 2039 bytes
 .hg/store/data/src/icons/32x32/grid_wizard.png.i   |  Bin 0 -> 1577 bytes
 .hg/store/data/src/icons/32x32/icons.svg.save.i    |  Bin 0 -> 2269 bytes
 .hg/store/data/src/icons/32x32/jnx.png.i           |  Bin 0 -> 1561 bytes
 .hg/store/data/src/icons/32x32/map.png.i           |  Bin 0 -> 1626 bytes
 .hg/store/data/src/icons/32x32/mime__img.png.i     |  Bin 0 -> 1578 bytes
 .hg/store/data/src/icons/32x32/mime__jnx.png.i     |  Bin 0 -> 1582 bytes
 .hg/store/data/src/icons/32x32/mime__map.png.i     |  Bin 0 -> 1868 bytes
 .hg/store/data/src/icons/32x32/mime__rmap.png.i    |  Bin 0 -> 1770 bytes
 .hg/store/data/src/icons/32x32/mime__vrt.png.i     |  Bin 0 -> 1440 bytes
 .hg/store/data/src/icons/32x32/night_day.png.i     |  Bin 0 -> 1018 bytes
 .hg/store/data/src/icons/32x32/path_map.png.i      |  Bin 0 -> 5791 bytes
 .hg/store/data/src/icons/32x32/poi_text.png.i      |  Bin 0 -> 787 bytes
 .hg/store/data/src/icons/32x32/reset.png.i         |  Bin 0 -> 1332 bytes
 .hg/store/data/src/icons/32x32/rmap.png.i          |  Bin 0 -> 1769 bytes
 .hg/store/data/src/icons/32x32/scale.png.i         |  Bin 0 -> 573 bytes
 .hg/store/data/src/icons/32x32/select_color.png.i  |  Bin 0 -> 1752 bytes
 .hg/store/data/src/icons/32x32/to-top.png.i        |  Bin 0 -> 710 bytes
 .hg/store/data/src/icons/32x32/to_bottom.png.i     |  Bin 0 -> 719 bytes
 .hg/store/data/src/icons/32x32/tool_tip.png.i      |  Bin 0 -> 1141 bytes
 .hg/store/data/src/icons/32x32/up.png.i            |  Bin 0 -> 708 bytes
 .hg/store/data/src/icons/32x32/view.png.i          |  Bin 0 -> 1439 bytes
 .hg/store/data/src/icons/32x32/wizzard.png.i       |  Bin 0 -> 1322 bytes
 .hg/store/data/src/icons/3_d_fix.svg.i             |  Bin 0 -> 1218 bytes
 .hg/store/data/src/icons/48x48/2_d_fix.png.i       |  Bin 0 -> 1111 bytes
 .hg/store/data/src/icons/48x48/2_nav_project.png.i |  Bin 0 -> 1908 bytes
 .hg/store/data/src/icons/48x48/3_d_fix.png.i       |  Bin 0 -> 1408 bytes
 .hg/store/data/src/icons/48x48/_add.png.i          |  Bin 0 -> 457 bytes
 .hg/store/data/src/icons/48x48/_add_area.png.i     |  Bin 0 -> 2109 bytes
 .hg/store/data/src/icons/48x48/_add_image.png.i    |  Bin 0 -> 1613 bytes
 .../data/src/icons/48x48/_add_map_workspace.png.i  |  Bin 0 -> 4539 bytes
 .hg/store/data/src/icons/48x48/_add_project.png.i  |  Bin 0 -> 2864 bytes
 .hg/store/data/src/icons/48x48/_add_trk.png.i      |  Bin 0 -> 1300 bytes
 .hg/store/data/src/icons/48x48/_add_wpt.png.i      |  Bin 0 -> 1293 bytes
 .hg/store/data/src/icons/48x48/_apply.png.i        |  Bin 0 -> 3303 bytes
 .hg/store/data/src/icons/48x48/_area.png.i         |  Bin 0 -> 1958 bytes
 .hg/store/data/src/icons/48x48/_area_move.png.i    |  Bin 0 -> 2879 bytes
 .hg/store/data/src/icons/48x48/_cancel.png.i       |  Bin 0 -> 1084 bytes
 .hg/store/data/src/icons/48x48/_check.png.i        |  Bin 0 -> 1457 bytes
 .hg/store/data/src/icons/48x48/_close.png.i        |  Bin 0 -> 1298 bytes
 .hg/store/data/src/icons/48x48/_combine.png.i      |  Bin 0 -> 2061 bytes
 .hg/store/data/src/icons/48x48/_copy.png.i         |  Bin 0 -> 1267 bytes
 .hg/store/data/src/icons/48x48/_cut.png.i          |  Bin 0 -> 2092 bytes
 .hg/store/data/src/icons/48x48/_cut_history.png.i  |  Bin 0 -> 1633 bytes
 .hg/store/data/src/icons/48x48/_d_b_project.png.i  |  Bin 0 -> 2310 bytes
 .hg/store/data/src/icons/48x48/_database.png.i     |  Bin 0 -> 2011 bytes
 .../data/src/icons/48x48/_database_convert.png.i   |  Bin 0 -> 5587 bytes
 .../data/src/icons/48x48/_database_setup.png.i     |  Bin 0 -> 7961 bytes
 .hg/store/data/src/icons/48x48/_del_image.png.i    |  Bin 0 -> 3197 bytes
 .../data/src/icons/48x48/_delete_multiple.png.i    |  Bin 0 -> 1441 bytes
 .hg/store/data/src/icons/48x48/_delete_one.png.i   |  Bin 0 -> 1198 bytes
 .hg/store/data/src/icons/48x48/_device.png.i       |  Bin 0 -> 890 bytes
 .hg/store/data/src/icons/48x48/_down.png.i         |  Bin 0 -> 1003 bytes
 .hg/store/data/src/icons/48x48/_edit_details.png.i |  Bin 0 -> 2630 bytes
 .hg/store/data/src/icons/48x48/_edit_text.png.i    |  Bin 0 -> 1594 bytes
 .hg/store/data/src/icons/48x48/_empty.png.i        |  Bin 0 -> 926 bytes
 .hg/store/data/src/icons/48x48/_error.png.i        |  Bin 0 -> 1928 bytes
 .hg/store/data/src/icons/48x48/_folder_d_e_m.png.i |  Bin 0 -> 5508 bytes
 .hg/store/data/src/icons/48x48/_folder_map.png.i   |  Bin 0 -> 9053 bytes
 .hg/store/data/src/icons/48x48/_font.png.i         |  Bin 0 -> 869 bytes
 .hg/store/data/src/icons/48x48/_from_map.png.i     |  Bin 0 -> 3097 bytes
 .hg/store/data/src/icons/48x48/_gis_project.png.i  |  Bin 0 -> 2005 bytes
 .hg/store/data/src/icons/48x48/_gpx_project.png.i  |  Bin 0 -> 1988 bytes
 .hg/store/data/src/icons/48x48/_grid.png.i         |  Bin 0 -> 726 bytes
 .hg/store/data/src/icons/48x48/_grid_setup.png.i   |  Bin 0 -> 3384 bytes
 .hg/store/data/src/icons/48x48/_grid_wizzard.png.i |  Bin 0 -> 2480 bytes
 .hg/store/data/src/icons/48x48/_help.png.i         |  Bin 0 -> 1835 bytes
 .hg/store/data/src/icons/48x48/_image.png.i        |  Bin 0 -> 1433 bytes
 .hg/store/data/src/icons/48x48/_info.png.i         |  Bin 0 -> 1467 bytes
 .hg/store/data/src/icons/48x48/_left.png.i         |  Bin 0 -> 1041 bytes
 .hg/store/data/src/icons/48x48/_line_move.png.i    |  Bin 0 -> 1849 bytes
 .hg/store/data/src/icons/48x48/_link.png.i         |  Bin 0 -> 1158 bytes
 .hg/store/data/src/icons/48x48/_load_g_i_s.png.i   |  Bin 0 -> 3320 bytes
 .hg/store/data/src/icons/48x48/_load_view.png.i    |  Bin 0 -> 2416 bytes
 .hg/store/data/src/icons/48x48/_lock.png.i         |  Bin 0 -> 1437 bytes
 .hg/store/data/src/icons/48x48/_map.png.i          |  Bin 0 -> 1988 bytes
 .hg/store/data/src/icons/48x48/_map_room.png.i     |  Bin 0 -> 2577 bytes
 .../data/src/icons/48x48/_mime_dem_v_r_t.png.i     |  Bin 0 -> 3788 bytes
 .hg/store/data/src/icons/48x48/_mime_i_m_g.png.i   |  Bin 0 -> 5345 bytes
 .hg/store/data/src/icons/48x48/_mime_j_n_x.png.i   |  Bin 0 -> 5416 bytes
 .hg/store/data/src/icons/48x48/_mime_m_a_p.png.i   |  Bin 0 -> 5816 bytes
 .hg/store/data/src/icons/48x48/_mime_r_m_a_p.png.i |  Bin 0 -> 5942 bytes
 .hg/store/data/src/icons/48x48/_mime_t_m_s.png.i   |  Bin 0 -> 4409 bytes
 .hg/store/data/src/icons/48x48/_mime_v_r_t.png.i   |  Bin 0 -> 7816 bytes
 .hg/store/data/src/icons/48x48/_mime_w_m_t_s.png.i |  Bin 0 -> 6099 bytes
 .hg/store/data/src/icons/48x48/_mouse_wheel.png.i  |  Bin 0 -> 1904 bytes
 .hg/store/data/src/icons/48x48/_move.png.i         |  Bin 0 -> 1191 bytes
 .hg/store/data/src/icons/48x48/_night_day.png.i    |  Bin 0 -> 1520 bytes
 .hg/store/data/src/icons/48x48/_no_fix.png.i       |  Bin 0 -> 1020 bytes
 .hg/store/data/src/icons/48x48/_off.png.i          |  Bin 0 -> 1696 bytes
 .hg/store/data/src/icons/48x48/_opacity.png.i      |  Bin 0 -> 1233 bytes
 .hg/store/data/src/icons/48x48/_p_o_i_text.png.i   |  Bin 0 -> 1164 bytes
 .hg/store/data/src/icons/48x48/_paste.png.i        |  Bin 0 -> 595 bytes
 .hg/store/data/src/icons/48x48/_path.png.i         |  Bin 0 -> 821 bytes
 .hg/store/data/src/icons/48x48/_path_blue.png.i    |  Bin 0 -> 821 bytes
 .hg/store/data/src/icons/48x48/_path_green.png.i   |  Bin 0 -> 818 bytes
 .hg/store/data/src/icons/48x48/_path_orange.png.i  |  Bin 0 -> 798 bytes
 .hg/store/data/src/icons/48x48/_pattern.png.i      |  Bin 0 -> 2325 bytes
 .hg/store/data/src/icons/48x48/_point_hide.png.i   |  Bin 0 -> 1240 bytes
 .hg/store/data/src/icons/48x48/_point_move.png.i   |  Bin 0 -> 1583 bytes
 .hg/store/data/src/icons/48x48/_point_show.png.i   |  Bin 0 -> 934 bytes
 .hg/store/data/src/icons/48x48/_print.png.i        |  Bin 0 -> 1227 bytes
 .hg/store/data/src/icons/48x48/_q_map_shack.png.i  |  Bin 0 -> 2577 bytes
 .hg/store/data/src/icons/48x48/_qms_project.png.i  |  Bin 0 -> 2173 bytes
 .hg/store/data/src/icons/48x48/_redo.png.i         |  Bin 0 -> 1409 bytes
 .hg/store/data/src/icons/48x48/_reload_image.png.i |  Bin 0 -> 1788 bytes
 .hg/store/data/src/icons/48x48/_reset.png.i        |  Bin 0 -> 1961 bytes
 .hg/store/data/src/icons/48x48/_reverse.png.i      |  Bin 0 -> 2221 bytes
 .hg/store/data/src/icons/48x48/_right.png.i        |  Bin 0 -> 977 bytes
 .hg/store/data/src/icons/48x48/_route.png.i        |  Bin 0 -> 4444 bytes
 .../data/src/icons/48x48/_save_all_g_i_s.png.i     |  Bin 0 -> 3144 bytes
 .hg/store/data/src/icons/48x48/_save_g_i_s.png.i   |  Bin 0 -> 2790 bytes
 .../data/src/icons/48x48/_save_g_i_s_as.png.i      |  Bin 0 -> 2075 bytes
 .hg/store/data/src/icons/48x48/_save_view.png.i    |  Bin 0 -> 2261 bytes
 .hg/store/data/src/icons/48x48/_scale.png.i        |  Bin 0 -> 578 bytes
 .../data/src/icons/48x48/_search_google.png.i      |  Bin 0 -> 9555 bytes
 .hg/store/data/src/icons/48x48/_select_color.png.i |  Bin 0 -> 2678 bytes
 .hg/store/data/src/icons/48x48/_select_range.png.i |  Bin 0 -> 3275 bytes
 .hg/store/data/src/icons/48x48/_set_ele.png.i      |  Bin 0 -> 2425 bytes
 .../src/icons/48x48/_setup_map_workspace.png.i     |  Bin 0 -> 3572 bytes
 .hg/store/data/src/icons/48x48/_start.png.i        |  Bin 0 -> 1329 bytes
 .hg/store/data/src/icons/48x48/_tainted.png.i      |  Bin 0 -> 3997 bytes
 .hg/store/data/src/icons/48x48/_text_bold.png.i    |  Bin 0 -> 807 bytes
 .hg/store/data/src/icons/48x48/_text_center.png.i  |  Bin 0 -> 472 bytes
 .hg/store/data/src/icons/48x48/_text_italic.png.i  |  Bin 0 -> 558 bytes
 .../data/src/icons/48x48/_text_justified.png.i     |  Bin 0 -> 446 bytes
 .hg/store/data/src/icons/48x48/_text_left.png.i    |  Bin 0 -> 468 bytes
 .hg/store/data/src/icons/48x48/_text_right.png.i   |  Bin 0 -> 470 bytes
 .../data/src/icons/48x48/_text_underlined.png.i    |  Bin 0 -> 694 bytes
 .hg/store/data/src/icons/48x48/_time.png.i         |  Bin 0 -> 2057 bytes
 .../data/src/icons/48x48/_time_zone_setup.png.i    |  Bin 0 -> 3912 bytes
 .hg/store/data/src/icons/48x48/_to_bottom.png.i    |  Bin 0 -> 997 bytes
 .hg/store/data/src/icons/48x48/_to_top.png.i       |  Bin 0 -> 967 bytes
 .hg/store/data/src/icons/48x48/_tool_tip.png.i     |  Bin 0 -> 1652 bytes
 .hg/store/data/src/icons/48x48/_track.png.i        |  Bin 0 -> 1335 bytes
 .hg/store/data/src/icons/48x48/_trk_cut.png.i      |  Bin 0 -> 2487 bytes
 .hg/store/data/src/icons/48x48/_trk_profile.png.i  |  Bin 0 -> 1424 bytes
 .hg/store/data/src/icons/48x48/_un_lock.png.i      |  Bin 0 -> 1574 bytes
 .hg/store/data/src/icons/48x48/_undo.png.i         |  Bin 0 -> 1435 bytes
 .hg/store/data/src/icons/48x48/_unit_setup.png.i   |  Bin 0 -> 7484 bytes
 .hg/store/data/src/icons/48x48/_up.png.i           |  Bin 0 -> 980 bytes
 .hg/store/data/src/icons/48x48/_vrt_builder.png.i  |  Bin 0 -> 8747 bytes
 .hg/store/data/src/icons/48x48/_wpt_move.png.i     |  Bin 0 -> 1602 bytes
 .hg/store/data/src/icons/48x48/_wpt_proj.png.i     |  Bin 0 -> 4038 bytes
 .hg/store/data/src/icons/48x48/_wpt_prox.png.i     |  Bin 0 -> 1406 bytes
 .hg/store/data/src/icons/48x48/grid_setup.png.i    |  Bin 0 -> 3386 bytes
 .hg/store/data/src/icons/48x48/grid_wizard.png.i   |  Bin 0 -> 2480 bytes
 .hg/store/data/src/icons/48x48/help.png.i          |  Bin 0 -> 1870 bytes
 .hg/store/data/src/icons/48x48/path_map.png.i      |  Bin 0 -> 9798 bytes
 .hg/store/data/src/icons/8x8/bullet__black.png.i   |  Bin 0 -> 281 bytes
 .hg/store/data/src/icons/8x8/bullet__blue.png.i    |  Bin 0 -> 276 bytes
 .hg/store/data/src/icons/8x8/bullet__brown.png.i   |  Bin 0 -> 291 bytes
 .hg/store/data/src/icons/8x8/bullet__cyan.png.i    |  Bin 0 -> 272 bytes
 .../data/src/icons/8x8/bullet__dark__blue.png.i    |  Bin 0 -> 291 bytes
 .../data/src/icons/8x8/bullet__dark__cyan.png.i    |  Bin 0 -> 299 bytes
 .../data/src/icons/8x8/bullet__dark__gray.png.i    |  Bin 0 -> 297 bytes
 .../data/src/icons/8x8/bullet__dark__green.png.i   |  Bin 0 -> 291 bytes
 .../data/src/icons/8x8/bullet__dark__magenta.png.i |  Bin 0 -> 299 bytes
 .../data/src/icons/8x8/bullet__dark__red.png.i     |  Bin 0 -> 291 bytes
 .../data/src/icons/8x8/bullet__dark__yellow.png.i  |  Bin 0 -> 297 bytes
 .hg/store/data/src/icons/8x8/bullet__gray.png.i    |  Bin 0 -> 290 bytes
 .hg/store/data/src/icons/8x8/bullet__green.png.i   |  Bin 0 -> 273 bytes
 .hg/store/data/src/icons/8x8/bullet__magenta.png.i |  Bin 0 -> 270 bytes
 .hg/store/data/src/icons/8x8/bullet__orange.png.i  |  Bin 0 -> 257 bytes
 .hg/store/data/src/icons/8x8/bullet__red.png.i     |  Bin 0 -> 276 bytes
 .hg/store/data/src/icons/8x8/bullet__white.png.i   |  Bin 0 -> 275 bytes
 .hg/store/data/src/icons/8x8/bullet__yellow.png.i  |  Bin 0 -> 272 bytes
 .hg/store/data/src/icons/_add.svg.i                |  Bin 0 -> 1024 bytes
 .hg/store/data/src/icons/_add_area.svg.d           |  Bin 0 -> 412573 bytes
 .hg/store/data/src/icons/_add_area.svg.i           |  Bin 0 -> 64 bytes
 .hg/store/data/src/icons/_add_image.svg.i          |  Bin 0 -> 1012 bytes
 .hg/store/data/src/icons/_add_map_workspace.svg.i  |  Bin 0 -> 18943 bytes
 .hg/store/data/src/icons/_add_project.svg.i        |  Bin 0 -> 2258 bytes
 .hg/store/data/src/icons/_add_trk.svg.i            |  Bin 0 -> 1753 bytes
 .hg/store/data/src/icons/_add_wpt.svg.i            |  Bin 0 -> 1282 bytes
 .hg/store/data/src/icons/_apply.svg.i              |  Bin 0 -> 2520 bytes
 .hg/store/data/src/icons/_area.svg.d               |  Bin 0 -> 412541 bytes
 .hg/store/data/src/icons/_area.svg.i               |  Bin 0 -> 64 bytes
 .hg/store/data/src/icons/_area_move.svg.i          |  Bin 0 -> 4028 bytes
 .hg/store/data/src/icons/_cancel.svg.i             |  Bin 0 -> 1056 bytes
 .hg/store/data/src/icons/_check.svg.i              |  Bin 0 -> 955 bytes
 .hg/store/data/src/icons/_close.svg.i              |  Bin 0 -> 1194 bytes
 .hg/store/data/src/icons/_combine.svg.i            |  Bin 0 -> 2238 bytes
 .hg/store/data/src/icons/_copy.svg.i               |  Bin 0 -> 1412 bytes
 .hg/store/data/src/icons/_cut.svg.i                |  Bin 0 -> 1664 bytes
 .hg/store/data/src/icons/_cut_history.svg.i        |  Bin 0 -> 2032 bytes
 .hg/store/data/src/icons/_d_b_project.svg.i        |  Bin 0 -> 2104 bytes
 .hg/store/data/src/icons/_database.svg.i           |  Bin 0 -> 1855 bytes
 .hg/store/data/src/icons/_database_convert.svg.i   |  Bin 0 -> 2809 bytes
 .hg/store/data/src/icons/_database_setup.svg.i     |  Bin 0 -> 5298 bytes
 .hg/store/data/src/icons/_del_image.svg.i          |  Bin 0 -> 2026 bytes
 .hg/store/data/src/icons/_delete_multiple.svg.i    |  Bin 0 -> 1314 bytes
 .hg/store/data/src/icons/_delete_one.svg.i         |  Bin 0 -> 1172 bytes
 .hg/store/data/src/icons/_device.svg.i             |  Bin 0 -> 1397 bytes
 .hg/store/data/src/icons/_down.svg.i               |  Bin 0 -> 1183 bytes
 .hg/store/data/src/icons/_edit_details.svg.i       |  Bin 0 -> 1717 bytes
 .hg/store/data/src/icons/_edit_text.svg.i          |  Bin 0 -> 1639 bytes
 .hg/store/data/src/icons/_empty.svg.i              |  Bin 0 -> 1073 bytes
 .hg/store/data/src/icons/_error.svg.i              |  Bin 0 -> 1105 bytes
 .hg/store/data/src/icons/_folder_d_e_m.svg.i       |  Bin 0 -> 2952 bytes
 .hg/store/data/src/icons/_folder_map.svg.i         |  Bin 0 -> 49785 bytes
 .hg/store/data/src/icons/_font.svg.i               |  Bin 0 -> 1175 bytes
 .hg/store/data/src/icons/_from_map.svg.i           |  Bin 0 -> 17865 bytes
 .hg/store/data/src/icons/_gis_project.svg.i        |  Bin 0 -> 1163 bytes
 .hg/store/data/src/icons/_gpx_project.svg.i        |  Bin 0 -> 1642 bytes
 .hg/store/data/src/icons/_grid.svg.i               |  Bin 0 -> 1063 bytes
 .hg/store/data/src/icons/_grid_setup.svg.i         |  Bin 0 -> 2693 bytes
 .hg/store/data/src/icons/_grid_wizzard.svg.i       |  Bin 0 -> 1917 bytes
 .hg/store/data/src/icons/_help.svg.i               |  Bin 0 -> 1556 bytes
 .hg/store/data/src/icons/_image.svg.i              |  Bin 0 -> 1113 bytes
 .hg/store/data/src/icons/_info.svg.i               |  Bin 0 -> 1279 bytes
 .hg/store/data/src/icons/_left.svg.i               |  Bin 0 -> 1189 bytes
 .hg/store/data/src/icons/_line_move.svg.i          |  Bin 0 -> 1602 bytes
 .hg/store/data/src/icons/_link.svg.i               |  Bin 0 -> 1504 bytes
 .hg/store/data/src/icons/_load_g_i_s.svg.i         |  Bin 0 -> 2671 bytes
 .hg/store/data/src/icons/_load_view.svg.i          |  Bin 0 -> 1565 bytes
 .hg/store/data/src/icons/_lock.svg.i               |  Bin 0 -> 1496 bytes
 .hg/store/data/src/icons/_map.svg.i                |  Bin 0 -> 17011 bytes
 .hg/store/data/src/icons/_map_room.svg.i           |  Bin 0 -> 16913 bytes
 .hg/store/data/src/icons/_mime_dem_v_r_t.svg.i     |  Bin 0 -> 1813 bytes
 .hg/store/data/src/icons/_mime_i_m_g.svg.i         |  Bin 0 -> 31302 bytes
 .hg/store/data/src/icons/_mime_j_n_x.svg.i         |  Bin 0 -> 31305 bytes
 .hg/store/data/src/icons/_mime_m_a_p.svg.i         |  Bin 0 -> 31266 bytes
 .hg/store/data/src/icons/_mime_r_m_a_p.svg.i       |  Bin 0 -> 31310 bytes
 .hg/store/data/src/icons/_mime_t_m_s.svg.i         |  Bin 0 -> 17726 bytes
 .hg/store/data/src/icons/_mime_v_r_t.svg.i         |  Bin 0 -> 31934 bytes
 .hg/store/data/src/icons/_mime_w_m_t_s.svg.i       |  Bin 0 -> 33947 bytes
 .hg/store/data/src/icons/_mouse_wheel.svg.i        |  Bin 0 -> 1828 bytes
 .hg/store/data/src/icons/_move.svg.i               |  Bin 0 -> 1199 bytes
 .hg/store/data/src/icons/_night_day.svg.i          |  Bin 0 -> 1973 bytes
 .hg/store/data/src/icons/_no_fix.svg.i             |  Bin 0 -> 1233 bytes
 .hg/store/data/src/icons/_off.svg.i                |  Bin 0 -> 1273 bytes
 .hg/store/data/src/icons/_opacity.svg.i            |  Bin 0 -> 1263 bytes
 .hg/store/data/src/icons/_p_o_i_text.svg.i         |  Bin 0 -> 1596 bytes
 .hg/store/data/src/icons/_paste.svg.i              |  Bin 0 -> 1041 bytes
 .hg/store/data/src/icons/_path.svg.i               |  Bin 0 -> 1064 bytes
 .hg/store/data/src/icons/_path_blue.svg.i          |  Bin 0 -> 1068 bytes
 .hg/store/data/src/icons/_path_green.svg.i         |  Bin 0 -> 1070 bytes
 .hg/store/data/src/icons/_path_orange.svg.i        |  Bin 0 -> 1073 bytes
 .hg/store/data/src/icons/_pattern.svg.i            |  Bin 0 -> 1380 bytes
 .hg/store/data/src/icons/_point_hide.svg.i         |  Bin 0 -> 1742 bytes
 .hg/store/data/src/icons/_point_move.svg.i         |  Bin 0 -> 1484 bytes
 .hg/store/data/src/icons/_point_show.svg.i         |  Bin 0 -> 1917 bytes
 .hg/store/data/src/icons/_print.svg.i              |  Bin 0 -> 1139 bytes
 .hg/store/data/src/icons/_q_map_shack.svg.i        |  Bin 0 -> 16913 bytes
 .hg/store/data/src/icons/_qms_project.svg.i        |  Bin 0 -> 1632 bytes
 .hg/store/data/src/icons/_redo.svg.i               |  Bin 0 -> 1024 bytes
 .hg/store/data/src/icons/_reload_image.svg.i       |  Bin 0 -> 1735 bytes
 .hg/store/data/src/icons/_reset.svg.i              |  Bin 0 -> 1301 bytes
 .hg/store/data/src/icons/_reverse.svg.i            |  Bin 0 -> 1393 bytes
 .hg/store/data/src/icons/_right.svg.i              |  Bin 0 -> 1181 bytes
 .hg/store/data/src/icons/_route.svg.i              |  Bin 0 -> 7123 bytes
 .hg/store/data/src/icons/_save_all_g_i_s.svg.i     |  Bin 0 -> 2738 bytes
 .hg/store/data/src/icons/_save_g_i_s.svg.i         |  Bin 0 -> 2682 bytes
 .hg/store/data/src/icons/_save_g_i_s_as.svg.i      |  Bin 0 -> 2066 bytes
 .hg/store/data/src/icons/_save_view.svg.i          |  Bin 0 -> 1636 bytes
 .hg/store/data/src/icons/_scale.svg.i              |  Bin 0 -> 1230 bytes
 .hg/store/data/src/icons/_search_google.svg.i      |  Bin 0 -> 2651 bytes
 .hg/store/data/src/icons/_select_color.svg.i       |  Bin 0 -> 1791 bytes
 .hg/store/data/src/icons/_select_range.svg.i       |  Bin 0 -> 2464 bytes
 .hg/store/data/src/icons/_set_ele.svg.i            |  Bin 0 -> 2589 bytes
 .../data/src/icons/_setup_map_workspace.svg.i      |  Bin 0 -> 2810 bytes
 .hg/store/data/src/icons/_start.svg.i              |  Bin 0 -> 1344 bytes
 .hg/store/data/src/icons/_tainted.svg.i            |  Bin 0 -> 4236 bytes
 .hg/store/data/src/icons/_text_bold.svg.i          |  Bin 0 -> 1019 bytes
 .hg/store/data/src/icons/_text_center.svg.i        |  Bin 0 -> 1018 bytes
 .hg/store/data/src/icons/_text_italic.svg.i        |  Bin 0 -> 1107 bytes
 .hg/store/data/src/icons/_text_justified.svg.i     |  Bin 0 -> 1005 bytes
 .hg/store/data/src/icons/_text_left.svg.i          |  Bin 0 -> 1002 bytes
 .hg/store/data/src/icons/_text_right.svg.i         |  Bin 0 -> 1015 bytes
 .hg/store/data/src/icons/_text_underlined.svg.i    |  Bin 0 -> 1166 bytes
 .hg/store/data/src/icons/_time.svg.i               |  Bin 0 -> 2132 bytes
 .hg/store/data/src/icons/_time_zone_setup.svg.i    |  Bin 0 -> 3582 bytes
 .hg/store/data/src/icons/_to_bottom.svg.i          |  Bin 0 -> 1265 bytes
 .hg/store/data/src/icons/_to_top.svg.i             |  Bin 0 -> 1270 bytes
 .hg/store/data/src/icons/_tool_tip.svg.i           |  Bin 0 -> 1733 bytes
 .hg/store/data/src/icons/_track.svg.i              |  Bin 0 -> 1509 bytes
 .hg/store/data/src/icons/_trk_cut.svg.i            |  Bin 0 -> 1645 bytes
 .hg/store/data/src/icons/_trk_profile.svg.i        |  Bin 0 -> 1203 bytes
 .hg/store/data/src/icons/_un_lock.svg.i            |  Bin 0 -> 1512 bytes
 .hg/store/data/src/icons/_undo.svg.i               |  Bin 0 -> 1024 bytes
 .hg/store/data/src/icons/_unit_setup.svg.i         |  Bin 0 -> 5060 bytes
 .hg/store/data/src/icons/_up.svg.i                 |  Bin 0 -> 1181 bytes
 .hg/store/data/src/icons/_vrt_builder.svg.i        |  Bin 0 -> 18022 bytes
 .hg/store/data/src/icons/_wpt_move.svg.i           |  Bin 0 -> 1668 bytes
 .hg/store/data/src/icons/_wpt_proj.svg.i           |  Bin 0 -> 3211 bytes
 .hg/store/data/src/icons/_wpt_prox.svg.i           |  Bin 0 -> 1600 bytes
 .../data/src/icons/cache/32x32/_dist_icon.png.i    |  Bin 0 -> 724 bytes
 .../data/src/icons/cache/32x32/_o_c_m_logo.png.i   |  Bin 0 -> 1722 bytes
 .../src/icons/cache/32x32/_o_c_m_logo_small.png.i  |  Bin 0 -> 1732 bytes
 .../data/src/icons/cache/32x32/_search_icon.png.i  |  Bin 0 -> 1440 bytes
 .hg/store/data/src/icons/cache/32x32/bluepin.png.i |  Bin 0 -> 1379 bytes
 .hg/store/data/src/icons/cache/32x32/cito.png.i    |  Bin 0 -> 2208 bytes
 .../data/src/icons/cache/32x32/corrected.png.i     |  Bin 0 -> 2062 bytes
 .hg/store/data/src/icons/cache/32x32/dnf.png.i     |  Bin 0 -> 1908 bytes
 .../data/src/icons/cache/32x32/down__icon.png.i    |  Bin 0 -> 487 bytes
 .hg/store/data/src/icons/cache/32x32/earth.png.i   |  Bin 0 -> 1793 bytes
 .hg/store/data/src/icons/cache/32x32/event.png.i   |  Bin 0 -> 1195 bytes
 .hg/store/data/src/icons/cache/32x32/found.png.i   |  Bin 0 -> 1983 bytes
 .hg/store/data/src/icons/cache/32x32/ftf.png.i     |  Bin 0 -> 2166 bytes
 .../data/src/icons/cache/32x32/greenpin.png.i      |  Bin 0 -> 1376 bytes
 .../data/src/icons/cache/32x32/halfstar.png.i      |  Bin 0 -> 1449 bytes
 .../data/src/icons/cache/32x32/letterbox.png.i     |  Bin 0 -> 2171 bytes
 .hg/store/data/src/icons/cache/32x32/log.png.i     |  Bin 0 -> 1986 bytes
 .hg/store/data/src/icons/cache/32x32/maxicon.png.i |  Bin 0 -> 305 bytes
 .hg/store/data/src/icons/cache/32x32/mega.png.i    |  Bin 0 -> 2149 bytes
 .hg/store/data/src/icons/cache/32x32/minicon.png.i |  Bin 0 -> 305 bytes
 .hg/store/data/src/icons/cache/32x32/multi.png.i   |  Bin 0 -> 2110 bytes
 .../src/icons/cache/32x32/needs__maintenance.png.i |  Bin 0 -> 719 bytes
 .hg/store/data/src/icons/cache/32x32/other.png.i   |  Bin 0 -> 925 bytes
 .hg/store/data/src/icons/cache/32x32/parking.png.i |  Bin 0 -> 1602 bytes
 .hg/store/data/src/icons/cache/32x32/pushpin.png.i |  Bin 0 -> 1273 bytes
 .hg/store/data/src/icons/cache/32x32/restore.png.i |  Bin 0 -> 329 bytes
 .hg/store/data/src/icons/cache/32x32/star.png.i    |  Bin 0 -> 1441 bytes
 .../data/src/icons/cache/32x32/star__empty.png.i   |  Bin 0 -> 1244 bytes
 .../data/src/icons/cache/32x32/traditional.png.i   |  Bin 0 -> 1732 bytes
 .../data/src/icons/cache/32x32/trailhead.png.i     |  Bin 0 -> 1899 bytes
 .../data/src/icons/cache/32x32/treasure.png.i      |  Bin 0 -> 1814 bytes
 .hg/store/data/src/icons/cache/32x32/unknown.png.i |  Bin 0 -> 1932 bytes
 .../data/src/icons/cache/32x32/up__icon.png.i      |  Bin 0 -> 408 bytes
 .hg/store/data/src/icons/cache/32x32/virtual.png.i |  Bin 0 -> 1614 bytes
 .../src/icons/cache/32x32/waypoint-flag-red.png.i  |  Bin 0 -> 755 bytes
 .hg/store/data/src/icons/cache/32x32/webcam.png.i  |  Bin 0 -> 1944 bytes
 .hg/store/data/src/icons/cache/32x32/wherigo.png.i |  Bin 0 -> 566 bytes
 .../data/src/icons/cache/32x32/write__note.png.i   |  Bin 0 -> 725 bytes
 .hg/store/data/src/icons/cache/_apache-2.0.i       |  Bin 0 -> 4019 bytes
 .../data/src/icons/cache/_c_o_p_y_r_i_g_h_t.i      |  Bin 0 -> 294 bytes
 .hg/store/data/src/icons/cache/_dist_icon.svg.i    |  Bin 0 -> 1759 bytes
 .hg/store/data/src/icons/cache/_o_c_m_logo.svg.i   |  Bin 0 -> 15565 bytes
 .../data/src/icons/cache/_o_c_m_logo_small.svg.i   |  Bin 0 -> 2198 bytes
 .hg/store/data/src/icons/cache/_search_icon.svg.i  |  Bin 0 -> 1716 bytes
 .../attributes/dis___abandoned___structure.svg.i   |  Bin 0 -> 1935 bytes
 .../cache/attributes/dis___abandoned__mines.svg.i  |  Bin 0 -> 1748 bytes
 .../dis___access__or__parking__fee.svg.i           |  Bin 0 -> 1523 bytes
 .../dis___available__at__all__times.svg.i          |  Bin 0 -> 1548 bytes
 .../dis___available__during__winter.svg.i          |  Bin 0 -> 3575 bytes
 .../icons/cache/attributes/dis___bicycles.svg.i    |  Bin 0 -> 2700 bytes
 .../src/icons/cache/attributes/dis___boat.svg.i    |  Bin 0 -> 2300 bytes
 .../icons/cache/attributes/dis___campfires.svg.i   |  Bin 0 -> 3500 bytes
 .../attributes/dis___camping__available.svg.i      |  Bin 0 -> 1575 bytes
 .../dis___cliff______falling__rocks.svg.i          |  Bin 0 -> 3400 bytes
 .../cache/attributes/dis___climbing__gear.svg.i    |  Bin 0 -> 2224 bytes
 .../attributes/dis___cross___country___skis.svg.i  |  Bin 0 -> 2233 bytes
 .../attributes/dis___dangerous___animals.svg.i     |  Bin 0 -> 2728 bytes
 .../cache/attributes/dis___dangerous__area.svg.i   |  Bin 0 -> 7618 bytes
 .../attributes/dis___difficult__climbing.svg.i     |  Bin 0 -> 2498 bytes
 .../src/icons/cache/attributes/dis___dogs.svg.i    |  Bin 0 -> 1565 bytes
 .../attributes/dis___drinking__water__nearby.svg.i |  Bin 0 -> 2703 bytes
 .../cache/attributes/dis___field___puzzle.svg.i    |  Bin 0 -> 12181 bytes
 .../attributes/dis___flashlight__required.svg.i    |  Bin 0 -> 2996 bytes
 .../cache/attributes/dis___food___nearby.svg.i     |  Bin 0 -> 2258 bytes
 .../cache/attributes/dis___fuel___nearby.svg.i     |  Bin 0 -> 1832 bytes
 .../src/icons/cache/attributes/dis___horses.svg.i  |  Bin 0 -> 4209 bytes
 .../src/icons/cache/attributes/dis___hunting.svg.i |  Bin 0 -> 2878 bytes
 .../attributes/dis___long___hike__(+10km).svg.i    |  Bin 0 -> 1616 bytes
 .../attributes/dis___may__require__swimming.svg.i  |  Bin 0 -> 2896 bytes
 .../attributes/dis___may__require__wading.svg.i    |  Bin 0 -> 2903 bytes
 .../dis___medium__hike__(1km-10km).svg.i           |  Bin 0 -> 1618 bytes
 .../icons/cache/attributes/dis___motorcycles.svg.i |  Bin 0 -> 2664 bytes
 .../attributes/dis___needs__maintenance.svg.i      |  Bin 0 -> 1577 bytes
 .../cache/attributes/dis___night___cache.svg.i     |  Bin 0 -> 14024 bytes
 .../attributes/dis___off-road__vehicles.svg.i      |  Bin 0 -> 1924 bytes
 .../cache/attributes/dis___park__and___grab.svg.i  |  Bin 0 -> 12966 bytes
 .../attributes/dis___parking__available.svg.i      |  Bin 0 -> 1541 bytes
 .../attributes/dis___picnic__tables__nearby.svg.i  |  Bin 0 -> 1532 bytes
 .../cache/attributes/dis___poison__plants.svg.i    |  Bin 0 -> 2635 bytes
 .../dis___public__restrooms__nearby.svg.i          |  Bin 0 -> 2135 bytes
 .../attributes/dis___public__transportation.svg.i  |  Bin 0 -> 1998 bytes
 .../src/icons/cache/attributes/dis___quads.svg.i   |  Bin 0 -> 2096 bytes
 .../attributes/dis___recommended__at__night.svg.i  |  Bin 0 -> 2588 bytes
 .../attributes/dis___recommended__for__kids.svg.i  |  Bin 0 -> 4756 bytes
 .../cache/attributes/dis___scenic__view.svg.i      |  Bin 0 -> 1696 bytes
 .../icons/cache/attributes/dis___scuba__gear.svg.i |  Bin 0 -> 4823 bytes
 .../dis___short__hike__(less__than__1km).svg.i     |  Bin 0 -> 1605 bytes
 .../attributes/dis___significant___hike.svg.i      |  Bin 0 -> 2161 bytes
 .../icons/cache/attributes/dis___snowmobiles.svg.i |  Bin 0 -> 1986 bytes
 .../icons/cache/attributes/dis___snowshoes.svg.i   |  Bin 0 -> 2463 bytes
 .../dis___special___tool___required.svg.i          |  Bin 0 -> 4694 bytes
 .../cache/attributes/dis___stealth__required.svg.i |  Bin 0 -> 2368 bytes
 .../attributes/dis___stroller__accessible.svg.i    |  Bin 0 -> 1894 bytes
 .../dis___takes__less__than__an__hour.svg.i        |  Bin 0 -> 5602 bytes
 .../cache/attributes/dis___telephone__nearby.svg.i |  Bin 0 -> 2555 bytes
 .../src/icons/cache/attributes/dis___thorns.svg.i  |  Bin 0 -> 2100 bytes
 .../src/icons/cache/attributes/dis___ticks.svg.i   |  Bin 0 -> 2674 bytes
 .../attributes/dis___truck___driver___r_v.svg.i    |  Bin 0 -> 1991 bytes
 .../attributes/dis___u_v___light___required.svg.i  |  Bin 0 -> 1713 bytes
 .../attributes/dis___watch__for__livestock.svg.i   |  Bin 0 -> 5019 bytes
 .../attributes/dis___wheelchair__accessible.svg.i  |  Bin 0 -> 2359 bytes
 .../cache/attributes/dis___wireless___beacon.svg.i |  Bin 0 -> 1960 bytes
 .../attributes/no___abandoned___structure.svg.i    |  Bin 0 -> 1992 bytes
 .../no___available__at__all__times.svg.i           |  Bin 0 -> 1604 bytes
 .../no___available__during__winter.svg.i           |  Bin 0 -> 3598 bytes
 .../src/icons/cache/attributes/no___bicycles.svg.i |  Bin 0 -> 2733 bytes
 .../icons/cache/attributes/no___campfires.svg.i    |  Bin 0 -> 3552 bytes
 .../cache/attributes/no___camping__available.svg.i |  Bin 0 -> 1636 bytes
 .../attributes/no___difficult__climbing.svg.i      |  Bin 0 -> 2554 bytes
 .../src/icons/cache/attributes/no___dogs.svg.i     |  Bin 0 -> 1622 bytes
 .../attributes/no___drinking__water__nearby.svg.i  |  Bin 0 -> 2771 bytes
 .../cache/attributes/no___food___nearby.svg.i      |  Bin 0 -> 2320 bytes
 .../cache/attributes/no___fuel___nearby.svg.i      |  Bin 0 -> 1880 bytes
 .../src/icons/cache/attributes/no___horses.svg.i   |  Bin 0 -> 4303 bytes
 .../attributes/no___long___hike__(+10km).svg.i     |  Bin 0 -> 1670 bytes
 .../attributes/no___medium__hike__(1km-10km).svg.i |  Bin 0 -> 1667 bytes
 .../icons/cache/attributes/no___motorcycles.svg.i  |  Bin 0 -> 2722 bytes
 .../cache/attributes/no___night___cache.svg.i      |  Bin 0 -> 14110 bytes
 .../cache/attributes/no___off-road__vehicles.svg.i |  Bin 0 -> 1983 bytes
 .../cache/attributes/no___park__and___grab.svg.i   |  Bin 0 -> 13162 bytes
 .../cache/attributes/no___parking__available.svg.i |  Bin 0 -> 1609 bytes
 .../attributes/no___picnic__tables__nearby.svg.i   |  Bin 0 -> 1602 bytes
 .../cache/attributes/no___poison__plants.svg.i     |  Bin 0 -> 2699 bytes
 .../no___public__restrooms__nearby.svg.i           |  Bin 0 -> 2191 bytes
 .../src/icons/cache/attributes/no___quads.svg.i    |  Bin 0 -> 2151 bytes
 .../attributes/no___recommended__at__night.svg.i   |  Bin 0 -> 2574 bytes
 .../attributes/no___recommended__for__kids.svg.i   |  Bin 0 -> 4809 bytes
 .../no___short__hike__(less__than__1km).svg.i      |  Bin 0 -> 1660 bytes
 .../cache/attributes/no___significant___hike.svg.i |  Bin 0 -> 2225 bytes
 .../icons/cache/attributes/no___snowmobiles.svg.i  |  Bin 0 -> 2061 bytes
 .../cache/attributes/no___stealth__required.svg.i  |  Bin 0 -> 2372 bytes
 .../attributes/no___stroller__accessible.svg.i     |  Bin 0 -> 1970 bytes
 .../no___takes__less__than__an__hour.svg.i         |  Bin 0 -> 5620 bytes
 .../cache/attributes/no___telephone__nearby.svg.i  |  Bin 0 -> 2815 bytes
 .../attributes/no___truck___driver___r_v.svg.i     |  Bin 0 -> 2347 bytes
 .../attributes/no___wheelchair__accessible.svg.i   |  Bin 0 -> 2437 bytes
 .../attributes/yes___abandoned___structure.svg.i   |  Bin 0 -> 1934 bytes
 .../cache/attributes/yes___abandoned__mines.svg.i  |  Bin 0 -> 1725 bytes
 .../yes___access__or__parking__fee.svg.i           |  Bin 0 -> 1484 bytes
 .../yes___available__at__all__times.svg.i          |  Bin 0 -> 1501 bytes
 .../yes___available__during__winter.svg.i          |  Bin 0 -> 3575 bytes
 .../icons/cache/attributes/yes___bicycles.svg.i    |  Bin 0 -> 2642 bytes
 .../src/icons/cache/attributes/yes___boat.svg.i    |  Bin 0 -> 2246 bytes
 .../icons/cache/attributes/yes___campfires.svg.i   |  Bin 0 -> 3462 bytes
 .../attributes/yes___camping__available.svg.i      |  Bin 0 -> 1553 bytes
 .../yes___cliff______falling__rocks.svg.i          |  Bin 0 -> 3358 bytes
 .../cache/attributes/yes___climbing__gear.svg.i    |  Bin 0 -> 2205 bytes
 .../attributes/yes___cross___country___skis.svg.i  |  Bin 0 -> 2209 bytes
 .../attributes/yes___dangerous___animals.svg.i     |  Bin 0 -> 2690 bytes
 .../cache/attributes/yes___dangerous__area.svg.i   |  Bin 0 -> 7583 bytes
 .../attributes/yes___difficult__climbing.svg.i     |  Bin 0 -> 2464 bytes
 .../src/icons/cache/attributes/yes___dogs.svg.i    |  Bin 0 -> 1556 bytes
 .../attributes/yes___drinking__water__nearby.svg.i |  Bin 0 -> 2671 bytes
 .../cache/attributes/yes___field___puzzle.svg.i    |  Bin 0 -> 16326 bytes
 .../attributes/yes___flashlight__required.svg.i    |  Bin 0 -> 3012 bytes
 .../cache/attributes/yes___food___nearby.svg.i     |  Bin 0 -> 2219 bytes
 .../cache/attributes/yes___fuel___nearby.svg.i     |  Bin 0 -> 1793 bytes
 .../src/icons/cache/attributes/yes___horses.svg.i  |  Bin 0 -> 4207 bytes
 .../src/icons/cache/attributes/yes___hunting.svg.i |  Bin 0 -> 2900 bytes
 .../attributes/yes___long___hike__(+10km).svg.i    |  Bin 0 -> 1550 bytes
 .../attributes/yes___may__require__swimming.svg.i  |  Bin 0 -> 2845 bytes
 .../attributes/yes___may__require__wading.svg.i    |  Bin 0 -> 2893 bytes
 .../yes___medium__hike__(1km-10km).svg.i           |  Bin 0 -> 1550 bytes
 .../icons/cache/attributes/yes___motorcycles.svg.i |  Bin 0 -> 2626 bytes
 .../attributes/yes___needs__maintenance.svg.i      |  Bin 0 -> 1554 bytes
 .../cache/attributes/yes___night___cache.svg.i     |  Bin 0 -> 13907 bytes
 .../attributes/yes___off-road__vehicles.svg.i      |  Bin 0 -> 1879 bytes
 .../cache/attributes/yes___park__and___grab.svg.i  |  Bin 0 -> 12983 bytes
 .../attributes/yes___parking__available.svg.i      |  Bin 0 -> 1506 bytes
 .../attributes/yes___picnic__tables__nearby.svg.i  |  Bin 0 -> 1507 bytes
 .../cache/attributes/yes___poison__plants.svg.i    |  Bin 0 -> 2593 bytes
 .../yes___public__restrooms__nearby.svg.i          |  Bin 0 -> 2100 bytes
 .../attributes/yes___public__transportation.svg.i  |  Bin 0 -> 1938 bytes
 .../src/icons/cache/attributes/yes___quads.svg.i   |  Bin 0 -> 2062 bytes
 .../attributes/yes___recommended__at__night.svg.i  |  Bin 0 -> 2536 bytes
 .../attributes/yes___recommended__for__kids.svg.i  |  Bin 0 -> 4716 bytes
 .../cache/attributes/yes___scenic__view.svg.i      |  Bin 0 -> 1678 bytes
 .../icons/cache/attributes/yes___scuba__gear.svg.i |  Bin 0 -> 4791 bytes
 .../yes___short__hike__(less__than__1km).svg.i     |  Bin 0 -> 1538 bytes
 .../attributes/yes___significant___hike.svg.i      |  Bin 0 -> 2138 bytes
 .../icons/cache/attributes/yes___snowmobiles.svg.i |  Bin 0 -> 1966 bytes
 .../icons/cache/attributes/yes___snowshoes.svg.i   |  Bin 0 -> 2525 bytes
 .../yes___special___tool___required.svg.i          |  Bin 0 -> 4974 bytes
 .../cache/attributes/yes___stealth__required.svg.i |  Bin 0 -> 2288 bytes
 .../attributes/yes___stroller__accessible.svg.i    |  Bin 0 -> 1872 bytes
 .../yes___takes__less__than__an__hour.svg.i        |  Bin 0 -> 5485 bytes
 .../cache/attributes/yes___telephone__nearby.svg.i |  Bin 0 -> 2724 bytes
 .../src/icons/cache/attributes/yes___thorns.svg.i  |  Bin 0 -> 2075 bytes
 .../src/icons/cache/attributes/yes___ticks.svg.i   |  Bin 0 -> 2896 bytes
 .../attributes/yes___truck___driver___r_v.svg.i    |  Bin 0 -> 2252 bytes
 .../attributes/yes___u_v___light___required.svg.i  |  Bin 0 -> 1728 bytes
 .../attributes/yes___watch__for__livestock.svg.i   |  Bin 0 -> 4996 bytes
 .../attributes/yes___wheelchair__accessible.svg.i  |  Bin 0 -> 2340 bytes
 .../cache/attributes/yes___wireless___beacon.svg.i |  Bin 0 -> 1950 bytes
 .hg/store/data/src/icons/cache/bluepin.svg.i       |  Bin 0 -> 1939 bytes
 .hg/store/data/src/icons/cache/cito.svg.i          |  Bin 0 -> 24345 bytes
 .hg/store/data/src/icons/cache/corrected.svg.i     |  Bin 0 -> 3731 bytes
 .hg/store/data/src/icons/cache/dnf.svg.i           |  Bin 0 -> 2116 bytes
 .hg/store/data/src/icons/cache/down__icon.svg.i    |  Bin 0 -> 1165 bytes
 .hg/store/data/src/icons/cache/earth.svg.i         |  Bin 0 -> 21199 bytes
 .hg/store/data/src/icons/cache/event.svg.i         |  Bin 0 -> 1996 bytes
 .hg/store/data/src/icons/cache/found.svg.i         |  Bin 0 -> 2046 bytes
 .hg/store/data/src/icons/cache/ftf.svg.i           |  Bin 0 -> 2383 bytes
 .hg/store/data/src/icons/cache/greenpin.svg.i      |  Bin 0 -> 1940 bytes
 .hg/store/data/src/icons/cache/halfstar.svg.i      |  Bin 0 -> 1664 bytes
 .hg/store/data/src/icons/cache/letterbox.svg.i     |  Bin 0 -> 11884 bytes
 .hg/store/data/src/icons/cache/log.svg.i           |  Bin 0 -> 2200 bytes
 .hg/store/data/src/icons/cache/makeicons.i         |  Bin 0 -> 177 bytes
 .hg/store/data/src/icons/cache/maxicon.svg.i       |  Bin 0 -> 1015 bytes
 .hg/store/data/src/icons/cache/mega.svg.i          |  Bin 0 -> 2604 bytes
 .hg/store/data/src/icons/cache/minicon.svg.i       |  Bin 0 -> 998 bytes
 .hg/store/data/src/icons/cache/multi.svg.i         |  Bin 0 -> 2900 bytes
 .../data/src/icons/cache/needs__maintenance.svg.i  |  Bin 0 -> 1405 bytes
 .hg/store/data/src/icons/cache/other.svg.i         |  Bin 0 -> 1595 bytes
 .hg/store/data/src/icons/cache/parking.svg.i       |  Bin 0 -> 2077 bytes
 .hg/store/data/src/icons/cache/pushpin.svg.i       |  Bin 0 -> 1883 bytes
 .hg/store/data/src/icons/cache/restore.svg.i       |  Bin 0 -> 1163 bytes
 .hg/store/data/src/icons/cache/star.svg.i          |  Bin 0 -> 1422 bytes
 .hg/store/data/src/icons/cache/star__empty.svg.i   |  Bin 0 -> 1255 bytes
 .hg/store/data/src/icons/cache/traditional.svg.i   |  Bin 0 -> 2198 bytes
 .hg/store/data/src/icons/cache/trailhead.svg.i     |  Bin 0 -> 6161 bytes
 .hg/store/data/src/icons/cache/treasure.svg.i      |  Bin 0 -> 3460 bytes
 .hg/store/data/src/icons/cache/unknown.svg.i       |  Bin 0 -> 1892 bytes
 .hg/store/data/src/icons/cache/up__icon.svg.i      |  Bin 0 -> 1167 bytes
 .hg/store/data/src/icons/cache/virtual.svg.i       |  Bin 0 -> 2715 bytes
 .../data/src/icons/cache/waypoint-flag-red.svg.i   |  Bin 0 -> 1790 bytes
 .hg/store/data/src/icons/cache/webcam.svg.i        |  Bin 0 -> 14161 bytes
 .hg/store/data/src/icons/cache/wherigo.svg.i       |  Bin 0 -> 1398 bytes
 .hg/store/data/src/icons/cache/write__note.svg.i   |  Bin 0 -> 1401 bytes
 .hg/store/data/src/icons/icons.svg.d               |  Bin 0 -> 217424 bytes
 .hg/store/data/src/icons/icons.svg.i               |  Bin 0 -> 1152 bytes
 .hg/store/data/src/icons/icons.svg.save.d          |  Bin 0 -> 157199 bytes
 .hg/store/data/src/icons/icons.svg.save.i          |  Bin 0 -> 64 bytes
 .hg/store/data/src/icons/makeicons.i               |  Bin 0 -> 491 bytes
 .../data/src/icons/waypoints/32x32/_box_blue.png.i |  Bin 0 -> 503 bytes
 .../src/icons/waypoints/32x32/_box_green.png.i     |  Bin 0 -> 494 bytes
 .../data/src/icons/waypoints/32x32/_box_red.png.i  |  Bin 0 -> 500 bytes
 .../data/src/icons/waypoints/32x32/_default.png.i  |  Bin 0 -> 7444 bytes
 .../src/icons/waypoints/32x32/_diamond_blue.png.i  |  Bin 0 -> 394 bytes
 .../src/icons/waypoints/32x32/_diamond_green.png.i |  Bin 0 -> 501 bytes
 .../src/icons/waypoints/32x32/_diamond_red.png.i   |  Bin 0 -> 392 bytes
 .../src/icons/waypoints/32x32/_flag_blue.png.i     |  Bin 0 -> 764 bytes
 .../src/icons/waypoints/32x32/_flag_green.png.i    |  Bin 0 -> 815 bytes
 .../data/src/icons/waypoints/32x32/_flag_red.png.i |  Bin 0 -> 757 bytes
 .../data/src/icons/waypoints/32x32/_pin_blue.png.i |  Bin 0 -> 1380 bytes
 .../src/icons/waypoints/32x32/_pin_green.png.i     |  Bin 0 -> 1482 bytes
 .../data/src/icons/waypoints/32x32/_pin_red.png.i  |  Bin 0 -> 1373 bytes
 .../src/icons/waypoints/32x32/_residence.png.i     |  Bin 0 -> 1905 bytes
 .../data/src/icons/waypoints/32x32/_waypoint.png.i |  Bin 0 -> 598 bytes
 .hg/store/data/src/icons/waypoints/_box_blue.svg.i |  Bin 0 -> 1035 bytes
 .../data/src/icons/waypoints/_box_green.svg.i      |  Bin 0 -> 1032 bytes
 .hg/store/data/src/icons/waypoints/_box_red.svg.i  |  Bin 0 -> 1042 bytes
 .hg/store/data/src/icons/waypoints/_default.svg.i  |  Bin 0 -> 3319 bytes
 .../data/src/icons/waypoints/_diamond_blue.svg.i   |  Bin 0 -> 986 bytes
 .../data/src/icons/waypoints/_diamond_green.svg.i  |  Bin 0 -> 984 bytes
 .../data/src/icons/waypoints/_diamond_red.svg.i    |  Bin 0 -> 985 bytes
 .../data/src/icons/waypoints/_flag_blue.svg.i      |  Bin 0 -> 1130 bytes
 .../data/src/icons/waypoints/_flag_green.svg.i     |  Bin 0 -> 1127 bytes
 .hg/store/data/src/icons/waypoints/_flag_red.svg.i |  Bin 0 -> 1127 bytes
 .hg/store/data/src/icons/waypoints/_pin_blue.svg.i |  Bin 0 -> 1953 bytes
 .../data/src/icons/waypoints/_pin_green.svg.i      |  Bin 0 -> 1954 bytes
 .hg/store/data/src/icons/waypoints/_pin_red.svg.i  |  Bin 0 -> 1568 bytes
 .../data/src/icons/waypoints/_residence.svg.i      |  Bin 0 -> 1432 bytes
 .hg/store/data/src/icons/waypoints/_waypoint.svg.i |  Bin 0 -> 1353 bytes
 .hg/store/data/src/icons/waypoints/makeicons.i     |  Bin 0 -> 177 bytes
 .hg/store/data/src/locale/qmapshack__cs.ts.i       |  Bin 0 -> 77887 bytes
 .hg/store/data/src/locale/qmapshack__de.ts.i       |  Bin 0 -> 92088 bytes
 .hg/store/data/src/locale/qmapshack__es.ts.i       |  Bin 0 -> 70184 bytes
 .hg/store/data/src/locale/qmapshack__fr.ts.i       |  Bin 0 -> 31012 bytes
 .hg/store/data/src/main.cpp.i                      |  Bin 0 -> 4585 bytes
 .hg/store/data/src/map/_c_grid.cpp.i               |  Bin 0 -> 3158 bytes
 .hg/store/data/src/map/_c_grid.h.i                 |  Bin 0 -> 986 bytes
 .hg/store/data/src/map/_c_map.cpp.i                |  Bin 0 -> 11996 bytes
 .hg/store/data/src/map/_c_map.h.i                  |  Bin 0 -> 5865 bytes
 .hg/store/data/src/map/_c_map_draw.cpp.i           |  Bin 0 -> 6600 bytes
 .hg/store/data/src/map/_c_map_draw.h.i             |  Bin 0 -> 5288 bytes
 .hg/store/data/src/map/_c_map_i_m_g.cpp.i          |  Bin 0 -> 29001 bytes
 .hg/store/data/src/map/_c_map_i_m_g.h.i            |  Bin 0 -> 12269 bytes
 .hg/store/data/src/map/_c_map_item.cpp.i           |  Bin 0 -> 9322 bytes
 .hg/store/data/src/map/_c_map_item.h.i             |  Bin 0 -> 3582 bytes
 .hg/store/data/src/map/_c_map_j_n_x.cpp.i          |  Bin 0 -> 7872 bytes
 .hg/store/data/src/map/_c_map_j_n_x.h.i            |  Bin 0 -> 2037 bytes
 .hg/store/data/src/map/_c_map_list.cpp.i           |  Bin 0 -> 4319 bytes
 .hg/store/data/src/map/_c_map_list.h.i             |  Bin 0 -> 2679 bytes
 .hg/store/data/src/map/_c_map_m_a_p.cpp.i          |  Bin 0 -> 2631 bytes
 .hg/store/data/src/map/_c_map_m_a_p.h.i            |  Bin 0 -> 2736 bytes
 .hg/store/data/src/map/_c_map_path_setup.cpp.i     |  Bin 0 -> 3515 bytes
 .hg/store/data/src/map/_c_map_path_setup.h.i       |  Bin 0 -> 1269 bytes
 .hg/store/data/src/map/_c_map_prop_setup.cpp.i     |  Bin 0 -> 4654 bytes
 .hg/store/data/src/map/_c_map_prop_setup.h.i       |  Bin 0 -> 2217 bytes
 .hg/store/data/src/map/_c_map_r_m_a_p.cpp.i        |  Bin 0 -> 6839 bytes
 .hg/store/data/src/map/_c_map_r_m_a_p.h.i          |  Bin 0 -> 1849 bytes
 .hg/store/data/src/map/_c_map_t_m_s.cpp.i          |  Bin 0 -> 8384 bytes
 .hg/store/data/src/map/_c_map_t_m_s.h.i            |  Bin 0 -> 2789 bytes
 .hg/store/data/src/map/_c_map_v_r_t.cpp.i          |  Bin 0 -> 12414 bytes
 .hg/store/data/src/map/_c_map_v_r_t.h.i            |  Bin 0 -> 2579 bytes
 .hg/store/data/src/map/_c_map_vrt_builder.cpp.i    |  Bin 0 -> 2109 bytes
 .hg/store/data/src/map/_c_map_vrt_builder.h.i      |  Bin 0 -> 1314 bytes
 .../data/src/map/_c_map_w_m_t_s.cpp.autosave.i     |  Bin 0 -> 622 bytes
 .hg/store/data/src/map/_c_map_w_m_t_s.cpp.i        |  Bin 0 -> 14190 bytes
 .hg/store/data/src/map/_c_map_w_m_t_s.h.i          |  Bin 0 -> 3769 bytes
 .hg/store/data/src/map/_i_map.cpp.i                |  Bin 0 -> 4396 bytes
 .hg/store/data/src/map/_i_map.h.i                  |  Bin 0 -> 9101 bytes
 .hg/store/data/src/map/_i_map_list.ui.i            |  Bin 0 -> 4127 bytes
 .hg/store/data/src/map/_i_map_path_setup.ui.i      |  Bin 0 -> 4069 bytes
 .hg/store/data/src/map/_i_map_prop.cpp.i           |  Bin 0 -> 744 bytes
 .hg/store/data/src/map/_i_map_prop.h.i             |  Bin 0 -> 894 bytes
 .hg/store/data/src/map/_i_map_prop.ui.i            |  Bin 0 -> 1724 bytes
 .hg/store/data/src/map/_i_map_prop_setup.cpp.i     |  Bin 0 -> 898 bytes
 .hg/store/data/src/map/_i_map_prop_setup.h.i       |  Bin 0 -> 1137 bytes
 .hg/store/data/src/map/_i_map_prop_setup.ui.i      |  Bin 0 -> 3307 bytes
 .hg/store/data/src/map/_i_map_vrt_builder.ui.i     |  Bin 0 -> 1206 bytes
 .hg/store/data/src/map/cache/_c_disk_cache.cpp.i   |  Bin 0 -> 2706 bytes
 .hg/store/data/src/map/cache/_c_disk_cache.h.i     |  Bin 0 -> 1362 bytes
 .hg/store/data/src/map/cache/_i_disk_cache.cpp.i   |  Bin 0 -> 728 bytes
 .hg/store/data/src/map/cache/_i_disk_cache.h.i     |  Bin 0 -> 1036 bytes
 .../data/src/map/garmin/_c_garmin_point.cpp.i      |  Bin 0 -> 1947 bytes
 .hg/store/data/src/map/garmin/_c_garmin_point.h.i  |  Bin 0 -> 1504 bytes
 .../data/src/map/garmin/_c_garmin_polygon.cpp.i    |  Bin 0 -> 5517 bytes
 .../data/src/map/garmin/_c_garmin_polygon.h.i      |  Bin 0 -> 3119 bytes
 .../data/src/map/garmin/_c_garmin_str_tbl6.cpp.i   |  Bin 0 -> 1827 bytes
 .../data/src/map/garmin/_c_garmin_str_tbl6.h.i     |  Bin 0 -> 1166 bytes
 .../data/src/map/garmin/_c_garmin_str_tbl8.cpp.i   |  Bin 0 -> 1286 bytes
 .../data/src/map/garmin/_c_garmin_str_tbl8.h.i     |  Bin 0 -> 942 bytes
 .../src/map/garmin/_c_garmin_str_tbl_utf8.cpp.i    |  Bin 0 -> 1249 bytes
 .../data/src/map/garmin/_c_garmin_str_tbl_utf8.h.i |  Bin 0 -> 949 bytes
 .hg/store/data/src/map/garmin/_c_garmin_typ.cpp.i  |  Bin 0 -> 8665 bytes
 .hg/store/data/src/map/garmin/_c_garmin_typ.h.i    |  Bin 0 -> 3855 bytes
 .hg/store/data/src/map/garmin/_garmin.h.i          |  Bin 0 -> 859 bytes
 .../data/src/map/garmin/_i_garmin_str_tbl.cpp.i    |  Bin 0 -> 1997 bytes
 .../data/src/map/garmin/_i_garmin_str_tbl.h.i      |  Bin 0 -> 1557 bytes
 .hg/store/data/src/map/mapsforge/types.cpp.i       |  Bin 0 -> 972 bytes
 .hg/store/data/src/map/mapsforge/types.h.i         |  Bin 0 -> 958 bytes
 .hg/store/data/src/map/wmts/_c_disk_cache.cpp.i    |  Bin 0 -> 2277 bytes
 .hg/store/data/src/map/wmts/_c_disk_cache.h.i      |  Bin 0 -> 1161 bytes
 .hg/store/data/src/map/wmts/_i_disk_cache.cpp.i    |  Bin 0 -> 561 bytes
 .hg/store/data/src/map/wmts/_i_disk_cache.h.i      |  Bin 0 -> 799 bytes
 .hg/store/data/src/mouse/_c_mouse_edit_area.cpp.i  |  Bin 0 -> 3194 bytes
 .hg/store/data/src/mouse/_c_mouse_edit_area.h.i    |  Bin 0 -> 1665 bytes
 .hg/store/data/src/mouse/_c_mouse_edit_line.cpp.i  |  Bin 0 -> 10872 bytes
 .hg/store/data/src/mouse/_c_mouse_edit_line.h.i    |  Bin 0 -> 3208 bytes
 .hg/store/data/src/mouse/_c_mouse_edit_trk.cpp.i   |  Bin 0 -> 3091 bytes
 .hg/store/data/src/mouse/_c_mouse_edit_trk.h.i     |  Bin 0 -> 1488 bytes
 .hg/store/data/src/mouse/_c_mouse_move_wpt.cpp.i   |  Bin 0 -> 2799 bytes
 .hg/store/data/src/mouse/_c_mouse_move_wpt.h.i     |  Bin 0 -> 1797 bytes
 .hg/store/data/src/mouse/_c_mouse_normal.cpp.i     |  Bin 0 -> 13103 bytes
 .hg/store/data/src/mouse/_c_mouse_normal.h.i       |  Bin 0 -> 4099 bytes
 .hg/store/data/src/mouse/_c_mouse_range_trk.cpp.i  |  Bin 0 -> 4756 bytes
 .hg/store/data/src/mouse/_c_mouse_range_trk.h.i    |  Bin 0 -> 1877 bytes
 .../data/src/mouse/_c_scr_opt_edit_line.cpp.i      |  Bin 0 -> 854 bytes
 .hg/store/data/src/mouse/_c_scr_opt_edit_line.h.i  |  Bin 0 -> 851 bytes
 .hg/store/data/src/mouse/_c_scr_opt_point.cpp.i    |  Bin 0 -> 1450 bytes
 .hg/store/data/src/mouse/_c_scr_opt_point.h.i      |  Bin 0 -> 979 bytes
 .hg/store/data/src/mouse/_c_scr_opt_range.cpp.i    |  Bin 0 -> 965 bytes
 .hg/store/data/src/mouse/_c_scr_opt_range.h.i      |  Bin 0 -> 855 bytes
 .../data/src/mouse/_c_scr_opt_range_trk.cpp.i      |  Bin 0 -> 1396 bytes
 .hg/store/data/src/mouse/_c_scr_opt_range_trk.h.i  |  Bin 0 -> 1190 bytes
 .../data/src/mouse/_c_scr_opt_unclutter.cpp.i      |  Bin 0 -> 4388 bytes
 .hg/store/data/src/mouse/_c_scr_opt_unclutter.h.i  |  Bin 0 -> 2320 bytes
 .hg/store/data/src/mouse/_c_scr_opt_wpt.cpp.i      |  Bin 0 -> 888 bytes
 .hg/store/data/src/mouse/_c_scr_opt_wpt.h.i        |  Bin 0 -> 815 bytes
 .hg/store/data/src/mouse/_i_mouse.cpp.i            |  Bin 0 -> 1883 bytes
 .hg/store/data/src/mouse/_i_mouse.h.i              |  Bin 0 -> 3232 bytes
 .hg/store/data/src/mouse/_i_mouse_edit_line.cpp.i  |  Bin 0 -> 13763 bytes
 .hg/store/data/src/mouse/_i_mouse_edit_line.h.i    |  Bin 0 -> 3527 bytes
 .hg/store/data/src/mouse/_i_scr_opt.cpp.i          |  Bin 0 -> 2176 bytes
 .hg/store/data/src/mouse/_i_scr_opt.h.i            |  Bin 0 -> 2266 bytes
 .hg/store/data/src/mouse/_i_scr_opt_edit_line.ui.i |  Bin 0 -> 964 bytes
 .hg/store/data/src/mouse/_i_scr_opt_point.ui.i     |  Bin 0 -> 1593 bytes
 .hg/store/data/src/mouse/_i_scr_opt_range.ui.i     |  Bin 0 -> 687 bytes
 .hg/store/data/src/mouse/_i_scr_opt_range_trk.ui.i |  Bin 0 -> 1618 bytes
 .hg/store/data/src/mouse/_i_scr_opt_wpt.ui.i       |  Bin 0 -> 1140 bytes
 .hg/store/data/src/pics/about.png.i                |  Bin 0 -> 27220 bytes
 .hg/store/data/src/pics/compass.png.i              |  Bin 0 -> 9949 bytes
 .hg/store/data/src/pics/compass.svg.i              |  Bin 0 -> 2315 bytes
 .hg/store/data/src/pics/no_map256x256.png.i        |  Bin 0 -> 19694 bytes
 .hg/store/data/src/pics/splash.png.d               |  Bin 0 -> 376706 bytes
 .hg/store/data/src/pics/splash.png.i               |  Bin 0 -> 64 bytes
 .hg/store/data/src/pics/timezones.png.i            |  Bin 0 -> 80488 bytes
 .hg/store/data/src/plot/_c_plot.cpp.i              |  Bin 0 -> 1769 bytes
 .hg/store/data/src/plot/_c_plot.h.i                |  Bin 0 -> 1227 bytes
 .hg/store/data/src/plot/_c_plot_axis.cpp.i         |  Bin 0 -> 3803 bytes
 .hg/store/data/src/plot/_c_plot_axis.h.i           |  Bin 0 -> 3267 bytes
 .hg/store/data/src/plot/_c_plot_axis_time.cpp.i    |  Bin 0 -> 1249 bytes
 .hg/store/data/src/plot/_c_plot_axis_time.h.i      |  Bin 0 -> 1166 bytes
 .hg/store/data/src/plot/_c_plot_data.cpp.i         |  Bin 0 -> 1634 bytes
 .hg/store/data/src/plot/_c_plot_data.h.i           |  Bin 0 -> 2055 bytes
 .hg/store/data/src/plot/_c_plot_distance.cpp.i     |  Bin 0 -> 2250 bytes
 .hg/store/data/src/plot/_c_plot_distance.h.i       |  Bin 0 -> 1246 bytes
 .hg/store/data/src/plot/_c_plot_profile.cpp.i      |  Bin 0 -> 3964 bytes
 .hg/store/data/src/plot/_c_plot_profile.h.i        |  Bin 0 -> 1873 bytes
 .hg/store/data/src/plot/_c_plot_speed.cpp.i        |  Bin 0 -> 2224 bytes
 .hg/store/data/src/plot/_c_plot_speed.h.i          |  Bin 0 -> 1240 bytes
 .hg/store/data/src/plot/_c_plot_track.cpp.i        |  Bin 0 -> 5105 bytes
 .hg/store/data/src/plot/_c_plot_track.h.i          |  Bin 0 -> 2122 bytes
 .hg/store/data/src/plot/_i_plot.cpp.i              |  Bin 0 -> 9118 bytes
 .hg/store/data/src/plot/_i_plot.h.i                |  Bin 0 -> 4369 bytes
 .hg/store/data/src/plot/_i_track.cpp.i             |  Bin 0 -> 2183 bytes
 .hg/store/data/src/plot/_i_track.h.i               |  Bin 0 -> 1352 bytes
 .hg/store/data/src/qlgt/_c_import_database.cpp.i   |  Bin 0 -> 1875 bytes
 .hg/store/data/src/qlgt/_c_import_database.h.i     |  Bin 0 -> 1062 bytes
 .hg/store/data/src/qlgt/_c_qlb.cpp.i               |  Bin 0 -> 1698 bytes
 .hg/store/data/src/qlgt/_c_qlb.h.i                 |  Bin 0 -> 2185 bytes
 .hg/store/data/src/qlgt/_c_qlgt_db.cpp.i           |  Bin 0 -> 7136 bytes
 .hg/store/data/src/qlgt/_c_qlgt_db.h.i             |  Bin 0 -> 1885 bytes
 .hg/store/data/src/qlgt/_c_qlgt_diary.cpp.i        |  Bin 0 -> 2582 bytes
 .hg/store/data/src/qlgt/_c_qlgt_diary.h.i          |  Bin 0 -> 1181 bytes
 .hg/store/data/src/qlgt/_c_qlgt_folder.cpp.i       |  Bin 0 -> 1364 bytes
 .hg/store/data/src/qlgt/_c_qlgt_folder.h.i         |  Bin 0 -> 1077 bytes
 .hg/store/data/src/qlgt/_c_qlgt_route.cpp.i        |  Bin 0 -> 2860 bytes
 .hg/store/data/src/qlgt/_c_qlgt_route.h.i          |  Bin 0 -> 1618 bytes
 .hg/store/data/src/qlgt/_c_qlgt_track.cpp.i        |  Bin 0 -> 4360 bytes
 .hg/store/data/src/qlgt/_c_qlgt_track.h.i          |  Bin 0 -> 5922 bytes
 .hg/store/data/src/qlgt/_c_qlgt_wpt.cpp.i          |  Bin 0 -> 3910 bytes
 .hg/store/data/src/qlgt/_c_qlgt_wpt.h.i            |  Bin 0 -> 2191 bytes
 .hg/store/data/src/qlgt/_c_qms_db.cpp.i            |  Bin 0 -> 5102 bytes
 .hg/store/data/src/qlgt/_c_qms_db.h.i              |  Bin 0 -> 2382 bytes
 .hg/store/data/src/qlgt/_i_import_database.ui.i    |  Bin 0 -> 1074 bytes
 .hg/store/data/src/qlgt/_i_item.cpp.i              |  Bin 0 -> 813 bytes
 .hg/store/data/src/qlgt/_i_item.h.i                |  Bin 0 -> 1297 bytes
 .hg/store/data/src/qlgt/_i_qlgt_overlay.cpp.i      |  Bin 0 -> 2650 bytes
 .hg/store/data/src/qlgt/_i_qlgt_overlay.h.i        |  Bin 0 -> 1339 bytes
 .hg/store/data/src/qlgt/converter.cpp.i            |  Bin 0 -> 4976 bytes
 .hg/store/data/src/resources.qrc.i                 |  Bin 0 -> 13598 bytes
 .hg/store/data/src/resources.rc.i                  |  Bin 0 -> 112 bytes
 .hg/store/data/src/units/_c_time_zone_setup.cpp.i  |  Bin 0 -> 1024 bytes
 .hg/store/data/src/units/_c_time_zone_setup.h.i    |  Bin 0 -> 914 bytes
 .hg/store/data/src/units/_c_unit_imperial.cpp.i    |  Bin 0 -> 1500 bytes
 .hg/store/data/src/units/_c_unit_imperial.h.i      |  Bin 0 -> 1080 bytes
 .hg/store/data/src/units/_c_unit_metric.cpp.i      |  Bin 0 -> 1492 bytes
 .hg/store/data/src/units/_c_unit_metric.h.i        |  Bin 0 -> 1086 bytes
 .hg/store/data/src/units/_c_unit_nautic.cpp.i      |  Bin 0 -> 1357 bytes
 .hg/store/data/src/units/_c_unit_nautic.h.i        |  Bin 0 -> 1085 bytes
 .hg/store/data/src/units/_c_units_setup.cpp.i      |  Bin 0 -> 895 bytes
 .hg/store/data/src/units/_c_units_setup.h.i        |  Bin 0 -> 855 bytes
 .hg/store/data/src/units/_i_time_zone_setup.ui.i   |  Bin 0 -> 1043 bytes
 .hg/store/data/src/units/_i_unit.cpp.i             |  Bin 0 -> 6605 bytes
 .hg/store/data/src/units/_i_unit.h.i               |  Bin 0 -> 3836 bytes
 .hg/store/data/src/units/_i_units_setup.ui.i       |  Bin 0 -> 719 bytes
 .hg/store/data/src/version.h.i                     |  Bin 0 -> 756 bytes
 .hg/store/data/templates/header.h.i                |  Bin 0 -> 570 bytes
 .hg/store/data/templates/source.cpp.i              |  Bin 0 -> 542 bytes
 .hg/store/fncache                                  | 1333 +++++++++
 .hg/store/phaseroots                               |    0
 .hg/store/undo                                     |    0
 .hg/store/undo.backup.fncache                      | 1332 +++++++++
 .hg/store/undo.backup.phaseroots                   |    1 +
 .hg/store/undo.backupfiles                         |  Bin 0 -> 39 bytes
 .hg/store/undo.phaseroots                          |    1 +
 .hg/strip-backup/0b6003b46efb-amend-backup.hg      |  Bin 0 -> 9979 bytes
 .hg/strip-backup/0f0b575a1262-amend-backup.hg      |  Bin 0 -> 4270 bytes
 .hg/strip-backup/24c62e27d1de-amend-backup.hg      |  Bin 0 -> 2033 bytes
 .hg/strip-backup/3c021f1e06e9-amend-backup.hg      |  Bin 0 -> 6125 bytes
 .hg/strip-backup/3ccda84eee0e-amend-backup.hg      |  Bin 0 -> 3715 bytes
 .hg/strip-backup/3ecf812bbbc8-amend-backup.hg      |  Bin 0 -> 4727 bytes
 .hg/strip-backup/544c0ced457b-amend-backup.hg      |  Bin 0 -> 3816 bytes
 .hg/strip-backup/56c4f41494a8-amend-backup.hg      |  Bin 0 -> 4572 bytes
 .hg/strip-backup/5fbc4f4870b6-amend-backup.hg      |  Bin 0 -> 11599 bytes
 .hg/strip-backup/7bbcc4457124-amend-backup.hg      |  Bin 0 -> 9313 bytes
 .hg/strip-backup/8bac0b86bb20-amend-backup.hg      |  Bin 0 -> 8448 bytes
 .hg/strip-backup/978bd08f88e4-amend-backup.hg      |  Bin 0 -> 4837 bytes
 .hg/strip-backup/9c07d44d56bf-amend-backup.hg      |  Bin 0 -> 30956 bytes
 .hg/strip-backup/9d434cc76a02-amend-backup.hg      |  Bin 0 -> 4254 bytes
 .hg/strip-backup/9e48deeea8af-amend-backup.hg      |  Bin 0 -> 10257 bytes
 .hg/strip-backup/a29a2f488ee7-amend-backup.hg      |  Bin 0 -> 11083 bytes
 .hg/strip-backup/a95a3c2b5131-amend-backup.hg      |  Bin 0 -> 903 bytes
 .hg/strip-backup/a9c335f06a1a-amend-backup.hg      |  Bin 0 -> 1851 bytes
 .hg/strip-backup/c4d53ff7e5ba-amend-backup.hg      |  Bin 0 -> 898 bytes
 .hg/strip-backup/ccf43c735898-amend-backup.hg      |  Bin 0 -> 8116 bytes
 .hg/strip-backup/d1262b768bcd-amend-backup.hg      |  Bin 0 -> 1231 bytes
 .hg/strip-backup/d64801f027e8-amend-backup.hg      |  Bin 0 -> 3645 bytes
 .hg/strip-backup/ddafd5824cd1-amend-backup.hg      |  Bin 0 -> 4525 bytes
 .hg/strip-backup/e9bd49cb6174-amend-backup.hg      |  Bin 0 -> 9889 bytes
 .hg/strip-backup/ee7c8b1a072e-amend-backup.hg      |  Bin 0 -> 3922 bytes
 .hg/strip-backup/efe0aa4113af-amend-backup.hg      |  Bin 0 -> 8316 bytes
 .hg/undo.bookmarks                                 |    0
 .hg/undo.branch                                    |    1 +
 .hg/undo.desc                                      |    3 +
 .hg/undo.dirstate                                  |  Bin 0 -> 50367 bytes
 CMakeLists.txt                                     |    4 +-
 CMakeLists.txt.user                                |   73 +-
 CMakeLists.txt.user => CMakeLists.txt.user.18      |    2 +-
 CPackConfig.cmake                                  |    2 +-
 changelog.txt                                      |   16 +
 features.txt                                       |   38 +
 qmapshack.desktop                                  |    4 +-
 src/CMainWindow.cpp                                | 1251 +++++----
 src/CMainWindow.h                                  |    5 +
 src/CMakeLists.txt                                 |    8 +-
 src/GeoMath.cpp                                    |   89 +-
 src/IMainWindow.ui                                 |   13 +
 src/canvas/CCanvas.cpp                             |   23 +-
 src/canvas/CCanvas.h                               |    2 +-
 src/canvas/IDrawObject.cpp                         |   18 -
 src/canvas/IDrawObject.h                           |   67 -
 src/dem/CDemPathSetup.cpp                          |    4 +-
 src/dem/CDemVRT.cpp                                |    7 +-
 src/dem/IDemList.ui                                |   10 +-
 src/dem/IDemPropSetup.ui                           |    3 +
 src/device/CDeviceGarmin.cpp                       |  167 +-
 src/device/CDeviceGarmin.h                         |   11 +-
 src/device/CDeviceTwoNav.cpp                       |   87 +
 src/device/CDeviceTwoNav.h                         |    5 +
 src/device/CDeviceWatcherWindows.cpp               |  113 +-
 src/device/CDeviceWatcherWindows.h                 |   32 +-
 src/device/IDevice.cpp                             |   31 +-
 src/device/IDevice.h                               |   29 +-
 src/gis/CGisListDB.cpp                             |    3 +-
 src/gis/CGisListWks.cpp                            |  153 +-
 src/gis/CGisListWks.h                              |   13 +-
 src/gis/CGisWidget.cpp                             |    3 +-
 src/gis/IGisItem.cpp                               |   30 +-
 src/gis/IGisItem.h                                 |    4 +-
 src/gis/IGisWidget.ui                              |    2 +-
 src/gis/db/CDBProject.cpp                          |    7 +-
 src/gis/db/CLostFoundProject.cpp                   |    2 +-
 src/gis/db/CSetupDatabase.cpp                      |   11 +-
 src/gis/db/IDB.cpp                                 |   40 +-
 src/gis/gpx/CGpxProject.cpp                        |   55 +-
 src/gis/gpx/CGpxProject.h                          |    2 +-
 src/gis/gpx/serialization.cpp                      |    3 +
 src/gis/ovl/CDetailsOvlArea.cpp                    |    4 +-
 src/gis/ovl/CGisItemOvlArea.cpp                    |    4 +-
 src/gis/ovl/CGisItemOvlArea.h                      |    2 +-
 src/gis/prj/CDetailsPrj.cpp                        |   10 +-
 src/gis/prj/IGisProject.cpp                        |   55 +-
 src/gis/prj/IGisProject.h                          |    7 +-
 src/gis/qms/CQmsProject.cpp                        |   12 +-
 src/gis/rte/CGisItemRte.cpp                        |    4 +-
 src/gis/rte/CGisItemRte.h                          |    2 +-
 src/gis/search/CSearchGoogle.cpp                   |    4 +-
 src/gis/tnv/CTwoNavProject.cpp                     |  282 ++
 src/gis/tnv/CTwoNavProject.h                       |   77 +
 src/gis/tnv/serialization.cpp                      |  753 ++++++
 src/gis/trk/CDetailsTrk.cpp                        |   60 +-
 src/gis/trk/CDetailsTrk.h                          |    3 +-
 src/gis/trk/CGisItemTrk.cpp                        |  135 +-
 src/gis/trk/CGisItemTrk.h                          |   50 +-
 src/gis/trk/IDetailsTrk.ui                         |  663 +++--
 src/gis/trk/filter/filter.cpp                      |    2 +-
 src/gis/wpt/CDetailsGeoCache.cpp                   |  164 +-
 src/gis/wpt/CDetailsGeoCache.h                     |    8 +
 src/gis/wpt/CDetailsWpt.cpp                        |   14 +-
 src/gis/wpt/CGisItemWpt.cpp                        |   51 +-
 src/gis/wpt/CGisItemWpt.h                          |   82 +-
 src/gis/wpt/CProjWpt.cpp                           |    2 +-
 src/gis/wpt/IDetailsGeoCache.ui                    |  152 +-
 src/grid/CGridSetup.cpp                            |    6 +-
 src/grid/CProjWizard.cpp                           |    6 +-
 src/helpers/CPhotoAlbum.cpp                        |    6 +-
 src/helpers/CPhotoAlbum.h                          |    2 +-
 src/helpers/CPhotoViewer.cpp                       |    9 +-
 src/helpers/CSelectCopyAction.cpp                  |    2 -
 src/helpers/CSelectProjectDialog.cpp               |   16 +-
 src/helpers/CSelectProjectDialog.h                 |    1 +
 src/icons/2NavProject.svg                          |  114 +
 src/icons/32x32/2NavProject.png                    |  Bin 0 -> 1225 bytes
 src/icons/32x32/LoadView.png                       |  Bin 0 -> 1512 bytes
 src/icons/32x32/ReloadImage.png                    |  Bin 0 -> 1212 bytes
 src/icons/32x32/SaveView.png                       |  Bin 0 -> 1469 bytes
 src/icons/32x32/VrtBuilder.png                     |  Bin 0 -> 2402 bytes
 src/icons/48x48/2NavProject.png                    |  Bin 0 -> 1843 bytes
 src/icons/48x48/LoadView.png                       |  Bin 0 -> 2351 bytes
 src/icons/48x48/ReloadImage.png                    |  Bin 0 -> 1723 bytes
 src/icons/48x48/SaveView.png                       |  Bin 0 -> 2196 bytes
 src/icons/48x48/VrtBuilder.png                     |  Bin 0 -> 4166 bytes
 src/icons/LoadView.svg                             |  107 +
 src/icons/ReloadImage.svg                          |  116 +
 src/icons/SaveView.svg                             |  125 +
 src/icons/VrtBuilder.svg                           |   96 +
 src/locale/qmapshack_cs.ts                         |  841 +++---
 src/locale/qmapshack_de.ts                         |  979 ++++---
 src/locale/qmapshack_es.ts                         | 1233 +++++----
 src/locale/{qmapshack_de.ts => qmapshack_fr.ts}    | 2829 ++++++++++----------
 src/main.cpp                                       |    8 +-
 src/map/CMapDraw.cpp                               |    7 +-
 src/map/CMapDraw.h                                 |    6 +
 src/map/CMapIMG.cpp                                |    2 +-
 src/map/CMapMAP.cpp                                |    3 +-
 src/map/CMapPathSetup.cpp                          |   23 +-
 src/map/CMapPathSetup.h                            |    4 +-
 src/map/CMapPropSetup.cpp                          |   23 +-
 src/map/CMapPropSetup.h                            |    2 -
 src/map/CMapRMAP.cpp                               |   17 +-
 src/map/CMapTMS.cpp                                |    7 +-
 src/map/CMapVRT.cpp                                |    9 +-
 src/map/CMapVrtBuilder.cpp                         |  198 ++
 src/map/{CMapPropSetup.h => CMapVrtBuilder.h}      |   47 +-
 src/map/CMapWMTS.cpp                               |   14 +-
 src/map/IMap.cpp                                   |   35 +
 src/map/IMap.h                                     |   80 +-
 src/map/IMapList.ui                                |   10 +-
 src/map/IMapPathSetup.ui                           |   44 +-
 src/map/IMapPropSetup.ui                           |   46 +-
 .../IImportDatabase.ui => map/IMapVrtBuilder.ui}   |   82 +-
 src/map/cache/CDiskCache.cpp                       |    8 +-
 src/map/garmin/CGarminTyp.cpp                      |   13 +-
 src/map/garmin/CGarminTyp.h                        |    2 +-
 src/mouse/CMouseEditArea.cpp                       |    4 +-
 src/mouse/CMouseEditTrk.cpp                        |    3 +-
 src/qlgt/CImportDatabase.cpp                       |    4 +-
 src/qlgt/CQlgtTrack.cpp                            |    9 +-
 src/qlgt/CQmsDb.cpp                                |    4 +-
 src/qlgt/IImportDatabase.ui                        |   44 +-
 src/resources.qrc                                  |   10 +
 1615 files changed, 25804 insertions(+), 5974 deletions(-)

diff --git a/.hg/00changelog.i b/.hg/00changelog.i
new file mode 100644
index 0000000..d3a8311
Binary files /dev/null and b/.hg/00changelog.i differ
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_41i_1d.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_41i_1d.bak
new file mode 100644
index 0000000..eebb3d1
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_41i_1d.bak
@@ -0,0 +1,60 @@
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_5C3Eit.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_5C3Eit.bak
new file mode 100644
index 0000000..4d368f0
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_5C3Eit.bak
@@ -0,0 +1,124 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
+--- a/src/gis/prj/IGisProject.h
++++ b/src/gis/prj/IGisProject.h
+@@ -77,4 +77,7 @@
+ 
+         void edit();
+ 
++        /**
++           @brief Save the project using it's native format.
++         */
+         virtual void save() = 0;
+@@ -80,4 +83,7 @@
+         virtual void save() = 0;
++        /**
++           @brief Save the project selecting one of the available formats.
++        */
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+@@ -81,5 +87,5 @@
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+-        virtual QString getFilename(){return filename;}
++        virtual QString getFilename() const {return filename;}
+ 
+@@ -85,8 +91,8 @@
+ 
+-        type_e getType(){return type;}
++        type_e getType() const {return type;}
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+@@ -87,14 +93,14 @@
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+-        const QString& getName(){return metadata.name;}
+-        const QDateTime& getTime(){return metadata.time;}
+-        const QString& getKeywords(){return metadata.keywords;}
+-        const QString& getDescription(){return metadata.desc;}
+-        const QList<IGisItem::link_t>& getLinks(){return metadata.links;}
++        const QString& getName() const {return metadata.name;}
++        const QDateTime& getTime() const {return metadata.time;}
++        const QString& getKeywords() const {return metadata.keywords;}
++        const QString& getDescription() const {return metadata.desc;}
++        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
+ 
+ 
+         void setName(const QString& str);
+@@ -106,7 +112,7 @@
+            @brief Get a short metadata summary
+            @return Informational string.
+          */
+-        virtual QString getInfo();
++        virtual QString getInfo() const;
+         /**
+            @brief Get a temporary pointer to the item with matching key
+            @param key
+@@ -137,6 +143,18 @@
+          */
+         void editItemByKey(const IGisItem::key_t &key);
+ 
++        /**
++           @brief Add a copy if the gven item to the project
++
++           Befor the item is inserted the method will use it's key to find a duplicat item.
++           If there is an item with the same item key a copy option dialog is shown. Depending
++           the result the action is performed or aborted. The result will be copied into
++           lastResult to repeat the same decision on subsequent items.
++
++           @param item          pointer to item
++           @param off           the offset into the tree widget, -1 for none
++           @param lastResult    a reference to hold the last result of the copy option dialog
++        */
+         void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+ 
+         /**
+@@ -146,7 +164,7 @@
+ 
+            @return True if project is valid
+          */
+-        bool  isValid(){return valid;}
++        bool  isValid() const {return valid;}
+ 
+         void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+         void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_5yS1bt.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_5yS1bt.bak
new file mode 100644
index 0000000..bd677c7
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_5yS1bt.bak
@@ -0,0 +1,329 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
+diff --git a/src/resources.qrc b/src/resources.qrc
+--- a/src/resources.qrc
++++ b/src/resources.qrc
+@@ -68,6 +68,19 @@
+         <file>icons/16x16/EditDetails.png</file>
+         <file>icons/16x16/EditText.png</file>
+         <file>icons/16x16/TimeZoneSetup.png</file>
++        <file>icons/16x16/Undo.png</file>
++        <file>icons/16x16/Redo.png</file>
++        <file>icons/16x16/Cut.png</file>
++        <file>icons/16x16/Copy.png</file>
++        <file>icons/16x16/Paste.png</file>
++        <file>icons/16x16/TextLeft.png</file>
++        <file>icons/16x16/TextRight.png</file>
++        <file>icons/16x16/TextCenter.png</file>
++        <file>icons/16x16/TextJustified.png</file>
++        <file>icons/16x16/TextBold.png</file>
++        <file>icons/16x16/TextUnderlined.png</file>
++        <file>icons/16x16/TextItalic.png</file>
++
+         <file>icons/32x32/2DFix.png</file>
+         <file>icons/32x32/3DFix.png</file>
+         <file>icons/32x32/Add.png</file>
+@@ -118,6 +131,21 @@
+         <file>icons/32x32/EditDetails.png</file>
+         <file>icons/32x32/EditText.png</file>
+         <file>icons/32x32/TimeZoneSetup.png</file>
++        <file>icons/32x32/Undo.png</file>
++        <file>icons/32x32/Redo.png</file>
++        <file>icons/32x32/Cut.png</file>
++        <file>icons/32x32/Copy.png</file>
++        <file>icons/32x32/Paste.png</file>
++        <file>icons/32x32/TextLeft.png</file>
++        <file>icons/32x32/TextRight.png</file>
++        <file>icons/32x32/TextCenter.png</file>
++        <file>icons/32x32/TextJustified.png</file>
++        <file>icons/32x32/TextBold.png</file>
++        <file>icons/32x32/TextUnderlined.png</file>
++        <file>icons/32x32/TextItalic.png</file>
++
++
++
+         <file>icons/48x48/2DFix.png</file>
+         <file>icons/48x48/3DFix.png</file>
+         <file>icons/48x48/Add.png</file>
+@@ -168,6 +196,21 @@
+         <file>icons/48x48/EditDetails.png</file>
+         <file>icons/48x48/EditText.png</file>
+         <file>icons/48x48/TimeZoneSetup.png</file>
++        <file>icons/48x48/Undo.png</file>
++        <file>icons/48x48/Redo.png</file>
++        <file>icons/48x48/Cut.png</file>
++        <file>icons/48x48/Copy.png</file>
++        <file>icons/48x48/Paste.png</file>
++        <file>icons/48x48/TextLeft.png</file>
++        <file>icons/48x48/TextRight.png</file>
++        <file>icons/48x48/TextCenter.png</file>
++        <file>icons/48x48/TextJustified.png</file>
++        <file>icons/48x48/TextBold.png</file>
++        <file>icons/48x48/TextUnderlined.png</file>
++        <file>icons/48x48/TextItalic.png</file>
++
++
++
+         <file>icons/cache/32x32/bluepin.png</file>
+         <file>icons/cache/32x32/cito.png</file>
+         <file>icons/cache/32x32/corrected.png</file>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_63JmLB.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_63JmLB.bak
new file mode 100644
index 0000000..d8349c2
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_63JmLB.bak
@@ -0,0 +1,86 @@
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_6f2vC4.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_6f2vC4.bak
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_8xXTxE.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_8xXTxE.bak
new file mode 100644
index 0000000..9def1c5
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_8xXTxE.bak
@@ -0,0 +1,93 @@
+diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
+--- a/src/gis/prj/IGisProject.h
++++ b/src/gis/prj/IGisProject.h
+@@ -77,4 +77,7 @@
+ 
+         void edit();
+ 
++        /**
++           @brief Save the project using it's native format.
++         */
+         virtual void save() = 0;
+@@ -80,4 +83,7 @@
+         virtual void save() = 0;
++        /**
++           @brief Save the project selecting one of the available formats.
++        */
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+@@ -81,5 +87,5 @@
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+-        virtual QString getFilename(){return filename;}
++        virtual QString getFilename() const {return filename;}
+ 
+@@ -85,8 +91,8 @@
+ 
+-        type_e getType(){return type;}
++        type_e getType() const {return type;}
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+@@ -87,14 +93,14 @@
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+-        const QString& getName(){return metadata.name;}
+-        const QDateTime& getTime(){return metadata.time;}
+-        const QString& getKeywords(){return metadata.keywords;}
+-        const QString& getDescription(){return metadata.desc;}
+-        const QList<IGisItem::link_t>& getLinks(){return metadata.links;}
++        const QString& getName() const {return metadata.name;}
++        const QDateTime& getTime() const {return metadata.time;}
++        const QString& getKeywords() const {return metadata.keywords;}
++        const QString& getDescription() const {return metadata.desc;}
++        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
+ 
+ 
+         void setName(const QString& str);
+@@ -106,7 +112,7 @@
+            @brief Get a short metadata summary
+            @return Informational string.
+          */
+-        virtual QString getInfo();
++        virtual QString getInfo() const;
+         /**
+            @brief Get a temporary pointer to the item with matching key
+            @param key
+@@ -137,6 +143,18 @@
+          */
+         void editItemByKey(const IGisItem::key_t &key);
+ 
++        /**
++           @brief Add a copy if the gven item to the project
++
++           Befor the item is inserted the method will use it's key to find a duplicat item.
++           If there is an item with the same item key a copy option dialog is shown. Depending
++           the result the action is performed or aborted. The result will be copied into
++           lastResult to repeat the same decision on subsequent items.
++
++           @param item          pointer to item
++           @param off           the offset into the tree widget, -1 for none
++           @param lastResult    a reference to hold the last result of the copy option dialog
++        */
+         void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+ 
+         /**
+@@ -146,7 +164,7 @@
+ 
+            @return True if project is valid
+          */
+-        bool  isValid(){return valid;}
++        bool  isValid() const {return valid;}
+ 
+         void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+         void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_E5WdFy.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_E5WdFy.bak
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_EUeX2W.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_EUeX2W.bak
new file mode 100644
index 0000000..4cdee7d
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_EUeX2W.bak
@@ -0,0 +1,63 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -190,7 +190,7 @@
+     }
+ }
+ 
+-QString IGisItem::getNameEx()
++QString IGisItem::getNameEx() const
+ {
+     QString str = getName();
+     IGisProject * project = dynamic_cast<IGisProject*>(parent());
+@@ -350,8 +350,8 @@
+     }
+ }
+ 
+-bool IGisItem::isReadOnly()
++bool IGisItem::isReadOnly() const
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+@@ -354,8 +354,8 @@
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+-bool IGisItem::isTainted()
++bool IGisItem::isTainted() const
+ {
+     return (flags & eFlagTainted);
+ }
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_H2s6va.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_H2s6va.bak
new file mode 100644
index 0000000..ae0a6b9
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_H2s6va.bak
@@ -0,0 +1,350 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
+--- a/src/gis/wpt/CGisItemWpt.cpp
++++ b/src/gis/wpt/CGisItemWpt.cpp
+@@ -18,8 +18,9 @@
+ 
+ #include "gis/wpt/CGisItemWpt.h"
+ #include "gis/wpt/CDetailsWpt.h"
++#include "gis/wpt/CScrOptWpt.h"
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+@@ -21,9 +22,8 @@
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+-#include "gis/wpt/CScrOptWpt.h"
+ #include "units/IUnit.h"
+ #include "GeoMath.h"
+ 
+@@ -88,7 +88,7 @@
+ 
+ QString CGisItemWpt::getInfo()
+ {
+-    QString str = getName();
++    QString str = "<p>" + getName() + "</p>";
+ 
+     if(geocache.hasData)
+     {
+@@ -97,10 +97,10 @@
+ 
+     if(wpt.time.isValid())
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+@@ -101,10 +101,10 @@
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2elevation(wpt.ele, val, unit);
+         str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+@@ -112,9 +112,9 @@
+ 
+     if(proximity != NOFLOAT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+@@ -116,7 +116,8 @@
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+-    if(wpt.desc.count())
++    QString desc = removeHtml(wpt.desc);
++    if(desc.count())
+     {
+@@ -122,3 +123,3 @@
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+@@ -124,3 +125,3 @@
+ 
+-        if(wpt.desc.count() < 200)
++        if(desc.count() < 200)
+         {
+@@ -126,5 +127,5 @@
+         {
+-            str += wpt.desc;
++            str += desc;
+         }
+         else
+         {
+@@ -128,8 +129,8 @@
+         }
+         else
+         {
+-            str += wpt.desc.left(197) + "...";
++            str += desc.left(197) + "...";
+         }
+     }
+     else
+     {
+@@ -132,7 +133,7 @@
+         }
+     }
+     else
+     {
+-        QString cmt = wpt.cmt;
++        QString cmt = removeHtml(wpt.cmt);
+         if(cmt.count())
+         {
+@@ -137,6 +138,6 @@
+         if(cmt.count())
+         {
+-            if(!str.isEmpty()) str += "\n";
++            if(!str.isEmpty()) str += "<br/>\n";
+ 
+             if(cmt.count() < 200)
+             {
+@@ -148,6 +149,9 @@
+             }
+         }
+     }
++
++    qDebug() << "-----------------------";
++    qDebug() << str;
+     return str;
+ }
+ 
+@@ -207,6 +211,20 @@
+     setIcon();
+ }
+ 
++void CGisItemWpt::setComment(const QString& str)
++{
++    setText(1,"*");
++    wpt.cmt = str;
++    setToolTip(0,getInfo());
++}
++
++void CGisItemWpt::setDescription(const QString& str)
++{
++    setText(1,"*");
++    wpt.desc = str;
++    setToolTip(0,getInfo());
++}
++
+ void CGisItemWpt::save(QDomNode& gpx)
+ {
+     QDomDocument doc = gpx.ownerDocument();
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_HGPpdo.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_HGPpdo.bak
new file mode 100644
index 0000000..5b57ce9
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_HGPpdo.bak
@@ -0,0 +1,77 @@
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -451,6 +451,11 @@
+     QPolygonF subline;
+     const int size = line.size();
+ 
++    if(line.isEmpty())
++    {
++        return;
++    }
++
+     pt = line[0];
+     subline << pt;
+ 
+diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
+--- a/src/gis/trk/CGisItemTrk.cpp
++++ b/src/gis/trk/CGisItemTrk.cpp
+@@ -563,6 +563,7 @@
+ }
+ 
+ 
++#define WINDOW 25
+ 
+ void CGisItemTrk::deriveSecondaryData()
+ {
+@@ -723,9 +724,9 @@
+             while(n>0)
+             {
+                 trkpt_t & trkpt2 = seg.pts[n];
+-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT))
++                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT) || (!trkpt2.time.isValid()))
+                 {
+                     n--;
+                     continue;
+                 }
+ 
+@@ -727,9 +728,9 @@
+                 {
+                     n--;
+                     continue;
+                 }
+ 
+-                if(trkpt.distance - trkpt2.distance >= 25)
++                if(trkpt.distance - trkpt2.distance >= WINDOW)
+                 {
+                     d1 = trkpt2.distance;
+                     e1 = trkpt2.ele;
+@@ -752,7 +753,7 @@
+                     continue;
+                 }
+ 
+-                if(trkpt2.distance - trkpt.distance >= 25)
++                if(trkpt2.distance - trkpt.distance >= WINDOW)
+                 {
+                     d2 = trkpt2.distance;
+                     e2 = trkpt2.ele;
+@@ -768,7 +769,8 @@
+ 
+             if((t2 - t1) > 0)
+             {
+-                trkpt.speed    = (d2 - d1) / (t2 - t1);
++                trkpt.speed         = (d2 - d1) / (t2 - t1);
++                trkpt.rateAscent    = (e2 - e1) / (t2 - t1);
+             }
+             else
+             {
+@@ -772,7 +774,8 @@
+             }
+             else
+             {
+-                trkpt.speed = NOFLOAT;
++                trkpt.speed         = NOFLOAT;
++                trkpt.rateAscent    = NOFLOAT;
+             }
+         }
+     }
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_IPn_yT.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_IPn_yT.bak
new file mode 100644
index 0000000..0063cea
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_IPn_yT.bak
@@ -0,0 +1,239 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -190,7 +190,7 @@
+     }
+ }
+ 
+-QString IGisItem::getNameEx()
++QString IGisItem::getNameEx() const
+ {
+     QString str = getName();
+     IGisProject * project = dynamic_cast<IGisProject*>(parent());
+@@ -350,8 +350,8 @@
+     }
+ }
+ 
+-bool IGisItem::isReadOnly()
++bool IGisItem::isReadOnly() const
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+@@ -354,8 +354,8 @@
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+-bool IGisItem::isTainted()
++bool IGisItem::isTainted() const
+ {
+     return (flags & eFlagTainted);
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -174,7 +174,7 @@
+            @brief Get name of this item extended by the project name
+            @return A string object.
+         */
+-        virtual QString getNameEx();
++        virtual QString getNameEx() const;
+ 
+         /**
+            @brief Get a short string with the items properties to be displayed in tool tips or similar
+@@ -198,7 +198,7 @@
+ 
+            @return
+          */
+-        virtual const QRectF& getBoundingRect(){return boundingRect;}
++        virtual const QRectF& getBoundingRect() const {return boundingRect;}
+ 
+         /**
+            @brief Get screen option object to display and handle actions for this item.
+@@ -226,9 +226,9 @@
+            @brief Query if this item is read only
+            @return True if it is read only.
+          */
+-        bool isReadOnly();
++        bool isReadOnly() const;
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+@@ -230,9 +230,9 @@
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+-        bool isTainted();
++        bool isTainted() const;
+         /**
+            @brief Set the read only mode.
+ 
+@@ -255,7 +255,7 @@
+ 
+            @return True if the item has user focus. The default implementation is always false.
+          */
+-        virtual bool hasUserFocus(){return false;}
++        virtual bool hasUserFocus() const {return false;}
+ 
+ 
+         /**
+diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
+--- a/src/gis/prj/IGisProject.cpp
++++ b/src/gis/prj/IGisProject.cpp
+@@ -136,7 +136,7 @@
+     }
+ }
+ 
+-QString IGisProject::getInfo()
++QString IGisProject::getInfo() const
+ {
+     QString str = metadata.name.isEmpty() ? text(CGisListWks::eColumnName) : metadata.name;
+     str = "<div style='font-weight: bold;'>" + str + "</div>";
+diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
+--- a/src/gis/prj/IGisProject.h
++++ b/src/gis/prj/IGisProject.h
+@@ -77,4 +77,7 @@
+ 
+         void edit();
+ 
++        /**
++           @brief Save the project using it's native format.
++         */
+         virtual void save() = 0;
+@@ -80,4 +83,7 @@
+         virtual void save() = 0;
++        /**
++           @brief Save the project selecting one of the available formats.
++        */
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+@@ -81,5 +87,5 @@
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+-        virtual QString getFilename(){return filename;}
++        virtual QString getFilename() const {return filename;}
+ 
+@@ -85,8 +91,8 @@
+ 
+-        type_e getType(){return type;}
++        type_e getType() const {return type;}
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+@@ -87,14 +93,14 @@
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+-        const QString& getName(){return metadata.name;}
+-        const QDateTime& getTime(){return metadata.time;}
+-        const QString& getKeywords(){return metadata.keywords;}
+-        const QString& getDescription(){return metadata.desc;}
+-        const QList<IGisItem::link_t>& getLinks(){return metadata.links;}
++        const QString& getName() const {return metadata.name;}
++        const QDateTime& getTime() const {return metadata.time;}
++        const QString& getKeywords() const {return metadata.keywords;}
++        const QString& getDescription() const {return metadata.desc;}
++        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
+ 
+ 
+         void setName(const QString& str);
+@@ -106,7 +112,7 @@
+            @brief Get a short metadata summary
+            @return Informational string.
+          */
+-        virtual QString getInfo();
++        virtual QString getInfo() const;
+         /**
+            @brief Get a temporary pointer to the item with matching key
+            @param key
+@@ -137,6 +143,18 @@
+          */
+         void editItemByKey(const IGisItem::key_t &key);
+ 
++        /**
++           @brief Add a copy if the gven item to the project
++
++           Befor the item is inserted the method will use it's key to find a duplicat item.
++           If there is an item with the same item key a copy option dialog is shown. Depending
++           the result the action is performed or aborted. The result will be copied into
++           lastResult to repeat the same decision on subsequent items.
++
++           @param item          pointer to item
++           @param off           the offset into the tree widget, -1 for none
++           @param lastResult    a reference to hold the last result of the copy option dialog
++        */
+         void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+ 
+         /**
+@@ -146,7 +164,7 @@
+ 
+            @return True if project is valid
+          */
+-        bool  isValid(){return valid;}
++        bool  isValid() const {return valid;}
+ 
+         void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+         void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
+diff --git a/src/gis/trk/CDetailsTrk.cpp b/src/gis/trk/CDetailsTrk.cpp
+--- a/src/gis/trk/CDetailsTrk.cpp
++++ b/src/gis/trk/CDetailsTrk.cpp
+@@ -344,6 +344,7 @@
+         {
+             trk.setComment(dlg.getHtml());
+         }
++        setupGui();
+     }
+     else if(url.toString() == "description")
+     {
+@@ -353,6 +354,7 @@
+         {
+             trk.setDescription(dlg.getHtml());
+         }
++        setupGui();
+     }
+     else if(url.toString() == "links")
+     {
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_KAC_3x.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_KAC_3x.bak
new file mode 100644
index 0000000..10fe5f6
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_KAC_3x.bak
@@ -0,0 +1,122 @@
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -451,6 +451,11 @@
+     QPolygonF subline;
+     const int size = line.size();
+ 
++    if(line.isEmpty())
++    {
++        return;
++    }
++
+     pt = line[0];
+     subline << pt;
+ 
+diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
+--- a/src/gis/trk/CGisItemTrk.cpp
++++ b/src/gis/trk/CGisItemTrk.cpp
+@@ -563,6 +563,7 @@
+ }
+ 
+ 
++#define WINDOW 25
+ 
+ void CGisItemTrk::deriveSecondaryData()
+ {
+@@ -723,9 +724,9 @@
+             while(n>0)
+             {
+                 trkpt_t & trkpt2 = seg.pts[n];
+-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT))
++                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT) || (!trkpt2.time.isValid()))
+                 {
+                     n--;
+                     continue;
+                 }
+ 
+@@ -727,9 +728,9 @@
+                 {
+                     n--;
+                     continue;
+                 }
+ 
+-                if(trkpt.distance - trkpt2.distance >= 25)
++                if(trkpt.distance - trkpt2.distance >= WINDOW)
+                 {
+                     d1 = trkpt2.distance;
+                     e1 = trkpt2.ele;
+@@ -752,7 +753,7 @@
+                     continue;
+                 }
+ 
+-                if(trkpt2.distance - trkpt.distance >= 25)
++                if(trkpt2.distance - trkpt.distance >= WINDOW)
+                 {
+                     d2 = trkpt2.distance;
+                     e2 = trkpt2.ele;
+@@ -768,7 +769,8 @@
+ 
+             if((t2 - t1) > 0)
+             {
+-                trkpt.speed    = (d2 - d1) / (t2 - t1);
++                trkpt.speed         = (d2 - d1) / (t2 - t1);
++                trkpt.rateAscent    = (e2 - e1) / (t2 - t1);
+             }
+             else
+             {
+@@ -772,7 +774,8 @@
+             }
+             else
+             {
+-                trkpt.speed = NOFLOAT;
++                trkpt.speed         = NOFLOAT;
++                trkpt.rateAscent    = NOFLOAT;
+             }
+         }
+     }
+diff --git a/src/gis/trk/CGisItemTrk.h b/src/gis/trk/CGisItemTrk.h
+--- a/src/gis/trk/CGisItemTrk.h
++++ b/src/gis/trk/CGisItemTrk.h
+@@ -482,6 +482,8 @@
+             slope1          = NOFLOAT;
+             slope2          = NOFLOAT;
+             speed           = NOFLOAT;
++            rateAscent      = NOFLOAT;
++            rateDescent     = NOFLOAT;
+         }
+ 
+         enum flag_e
+@@ -513,6 +515,10 @@
+         qreal elapsedSeconds;
+         /// the seconds since the start of the track with moving speed
+         qreal elapsedSecondsMoving;
++
++        qreal rateAscent;
++
++        qreal rateDescent;
+     };
+ 
+     struct trkseg_t
+diff --git a/src/plot/CPlotSpeed.cpp b/src/plot/CPlotSpeed.cpp
+--- a/src/plot/CPlotSpeed.cpp
++++ b/src/plot/CPlotSpeed.cpp
+@@ -20,7 +20,8 @@
+ #include "plot/CPlotSpeed.h"
+ 
+ CPlotSpeed::CPlotSpeed(QWidget *parent)
+-    : IPlot(0, CPlotData::eAxisLinear, eModeNormal, parent)
++//    : IPlot(0, CPlotData::eAxisLinear, eModeNormal, parent)
++    : IPlot(0, CPlotData::eAxisTime, eModeNormal, parent)
+ {
+ }
+ 
+@@ -79,7 +80,7 @@
+ 
+             if(trkpt.speed != NOFLOAT)
+             {
+-                lineSpeed << QPointF(type == CPlotData::eAxisLinear ? trkpt.distance : (qreal)trkpt.time.toTime_t(), trkpt.speed * speedfactor);
++                lineSpeed << QPointF(type == CPlotData::eAxisLinear ? trkpt.distance : (qreal)trkpt.time.toTime_t(), trkpt.rateAscent * 3600/*trkpt.speed * speedfactor*/);
+             }
+         }
+     }
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_M_J4ty.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_M_J4ty.bak
new file mode 100644
index 0000000..2b012af
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_M_J4ty.bak
@@ -0,0 +1,100 @@
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -451,6 +451,11 @@
+     QPolygonF subline;
+     const int size = line.size();
+ 
++    if(line.isEmpty())
++    {
++        return;
++    }
++
+     pt = line[0];
+     subline << pt;
+ 
+diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
+--- a/src/gis/trk/CGisItemTrk.cpp
++++ b/src/gis/trk/CGisItemTrk.cpp
+@@ -563,6 +563,7 @@
+ }
+ 
+ 
++#define WINDOW 25
+ 
+ void CGisItemTrk::deriveSecondaryData()
+ {
+@@ -723,9 +724,9 @@
+             while(n>0)
+             {
+                 trkpt_t & trkpt2 = seg.pts[n];
+-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT))
++                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT) || (!trkpt2.time.isValid()))
+                 {
+                     n--;
+                     continue;
+                 }
+ 
+@@ -727,9 +728,9 @@
+                 {
+                     n--;
+                     continue;
+                 }
+ 
+-                if(trkpt.distance - trkpt2.distance >= 25)
++                if(trkpt.distance - trkpt2.distance >= WINDOW)
+                 {
+                     d1 = trkpt2.distance;
+                     e1 = trkpt2.ele;
+@@ -752,7 +753,7 @@
+                     continue;
+                 }
+ 
+-                if(trkpt2.distance - trkpt.distance >= 25)
++                if(trkpt2.distance - trkpt.distance >= WINDOW)
+                 {
+                     d2 = trkpt2.distance;
+                     e2 = trkpt2.ele;
+@@ -768,7 +769,8 @@
+ 
+             if((t2 - t1) > 0)
+             {
+-                trkpt.speed    = (d2 - d1) / (t2 - t1);
++                trkpt.speed         = (d2 - d1) / (t2 - t1);
++                trkpt.rateAscent    = (e2 - e1) / (t2 - t1);
+             }
+             else
+             {
+@@ -772,7 +774,8 @@
+             }
+             else
+             {
+-                trkpt.speed = NOFLOAT;
++                trkpt.speed         = NOFLOAT;
++                trkpt.rateAscent    = NOFLOAT;
+             }
+         }
+     }
+diff --git a/src/gis/trk/CGisItemTrk.h b/src/gis/trk/CGisItemTrk.h
+--- a/src/gis/trk/CGisItemTrk.h
++++ b/src/gis/trk/CGisItemTrk.h
+@@ -482,6 +482,8 @@
+             slope1          = NOFLOAT;
+             slope2          = NOFLOAT;
+             speed           = NOFLOAT;
++            rateAscent      = NOFLOAT;
++            rateDescent     = NOFLOAT;
+         }
+ 
+         enum flag_e
+@@ -513,6 +515,10 @@
+         qreal elapsedSeconds;
+         /// the seconds since the start of the track with moving speed
+         qreal elapsedSecondsMoving;
++
++        qreal rateAscent;
++
++        qreal rateDescent;
+     };
+ 
+     struct trkseg_t
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Mwh9Qb.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Mwh9Qb.bak
new file mode 100644
index 0000000..8d5ba4e
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Mwh9Qb.bak
@@ -0,0 +1,156 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -190,7 +190,7 @@
+     }
+ }
+ 
+-QString IGisItem::getNameEx()
++QString IGisItem::getNameEx() const
+ {
+     QString str = getName();
+     IGisProject * project = dynamic_cast<IGisProject*>(parent());
+@@ -350,8 +350,8 @@
+     }
+ }
+ 
+-bool IGisItem::isReadOnly()
++bool IGisItem::isReadOnly() const
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+@@ -354,8 +354,8 @@
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+-bool IGisItem::isTainted()
++bool IGisItem::isTainted() const
+ {
+     return (flags & eFlagTainted);
+ }
+diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
+--- a/src/gis/prj/IGisProject.h
++++ b/src/gis/prj/IGisProject.h
+@@ -77,4 +77,7 @@
+ 
+         void edit();
+ 
++        /**
++           @brief Save the project using it's native format.
++         */
+         virtual void save() = 0;
+@@ -80,4 +83,7 @@
+         virtual void save() = 0;
++        /**
++           @brief Save the project selecting one of the available formats.
++        */
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+@@ -81,5 +87,5 @@
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+-        virtual QString getFilename(){return filename;}
++        virtual QString getFilename() const {return filename;}
+ 
+@@ -85,8 +91,8 @@
+ 
+-        type_e getType(){return type;}
++        type_e getType() const {return type;}
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+@@ -87,14 +93,14 @@
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+-        const QString& getName(){return metadata.name;}
+-        const QDateTime& getTime(){return metadata.time;}
+-        const QString& getKeywords(){return metadata.keywords;}
+-        const QString& getDescription(){return metadata.desc;}
+-        const QList<IGisItem::link_t>& getLinks(){return metadata.links;}
++        const QString& getName() const {return metadata.name;}
++        const QDateTime& getTime() const {return metadata.time;}
++        const QString& getKeywords() const {return metadata.keywords;}
++        const QString& getDescription() const {return metadata.desc;}
++        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
+ 
+ 
+         void setName(const QString& str);
+@@ -106,7 +112,7 @@
+            @brief Get a short metadata summary
+            @return Informational string.
+          */
+-        virtual QString getInfo();
++        virtual QString getInfo() const;
+         /**
+            @brief Get a temporary pointer to the item with matching key
+            @param key
+@@ -137,6 +143,18 @@
+          */
+         void editItemByKey(const IGisItem::key_t &key);
+ 
++        /**
++           @brief Add a copy if the gven item to the project
++
++           Befor the item is inserted the method will use it's key to find a duplicat item.
++           If there is an item with the same item key a copy option dialog is shown. Depending
++           the result the action is performed or aborted. The result will be copied into
++           lastResult to repeat the same decision on subsequent items.
++
++           @param item          pointer to item
++           @param off           the offset into the tree widget, -1 for none
++           @param lastResult    a reference to hold the last result of the copy option dialog
++        */
+         void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+ 
+         /**
+@@ -146,7 +164,7 @@
+ 
+            @return True if project is valid
+          */
+-        bool  isValid(){return valid;}
++        bool  isValid() const {return valid;}
+ 
+         void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+         void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Nvr8BO.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Nvr8BO.bak
new file mode 100644
index 0000000..460bcf9
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Nvr8BO.bak
@@ -0,0 +1,362 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
+--- a/src/gis/wpt/CGisItemWpt.cpp
++++ b/src/gis/wpt/CGisItemWpt.cpp
+@@ -18,8 +18,9 @@
+ 
+ #include "gis/wpt/CGisItemWpt.h"
+ #include "gis/wpt/CDetailsWpt.h"
++#include "gis/wpt/CScrOptWpt.h"
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+@@ -21,9 +22,8 @@
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+-#include "gis/wpt/CScrOptWpt.h"
+ #include "units/IUnit.h"
+ #include "GeoMath.h"
+ 
+@@ -88,7 +88,7 @@
+ 
+ QString CGisItemWpt::getInfo()
+ {
+-    QString str = getName();
++    QString str = "<p>" + getName() + "</p>";
+ 
+     if(geocache.hasData)
+     {
+@@ -97,10 +97,10 @@
+ 
+     if(wpt.time.isValid())
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+@@ -101,10 +101,10 @@
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2elevation(wpt.ele, val, unit);
+         str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+@@ -112,9 +112,9 @@
+ 
+     if(proximity != NOFLOAT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+@@ -116,7 +116,8 @@
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+-    if(wpt.desc.count())
++    QString desc = removeHtml(wpt.desc);
++    if(desc.count())
+     {
+@@ -122,3 +123,3 @@
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+@@ -124,3 +125,3 @@
+ 
+-        if(wpt.desc.count() < 200)
++        if(desc.count() < 200)
+         {
+@@ -126,5 +127,5 @@
+         {
+-            str += wpt.desc;
++            str += desc;
+         }
+         else
+         {
+@@ -128,8 +129,8 @@
+         }
+         else
+         {
+-            str += wpt.desc.left(197) + "...";
++            str += desc.left(197) + "...";
+         }
+     }
+     else
+     {
+@@ -132,7 +133,7 @@
+         }
+     }
+     else
+     {
+-        QString cmt = wpt.cmt;
++        QString cmt = removeHtml(wpt.cmt);
+         if(cmt.count())
+         {
+@@ -137,6 +138,6 @@
+         if(cmt.count())
+         {
+-            if(!str.isEmpty()) str += "\n";
++            if(!str.isEmpty()) str += "<br/>\n";
+ 
+             if(cmt.count() < 200)
+             {
+@@ -148,6 +149,9 @@
+             }
+         }
+     }
++
++    qDebug() << "-----------------------";
++    qDebug() << str;
+     return str;
+ }
+ 
+@@ -207,6 +211,20 @@
+     setIcon();
+ }
+ 
++void CGisItemWpt::setComment(const QString& str)
++{
++    setText(1,"*");
++    wpt.cmt = str;
++    setToolTip(0,getInfo());
++}
++
++void CGisItemWpt::setDescription(const QString& str)
++{
++    setText(1,"*");
++    wpt.desc = str;
++    setToolTip(0,getInfo());
++}
++
+ void CGisItemWpt::save(QDomNode& gpx)
+ {
+     QDomDocument doc = gpx.ownerDocument();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_O2w2no.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_O2w2no.bak
new file mode 100644
index 0000000..571aa8f
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_O2w2no.bak
@@ -0,0 +1,27 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Ozaask.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Ozaask.bak
new file mode 100644
index 0000000..32fcfb1
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Ozaask.bak
@@ -0,0 +1,186 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_PVfnen.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_PVfnen.bak
new file mode 100644
index 0000000..36cc09c
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_PVfnen.bak
@@ -0,0 +1,109 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Q80F4i.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Q80F4i.bak
new file mode 100644
index 0000000..18fd8fa
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Q80F4i.bak
@@ -0,0 +1,115 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -190,7 +190,7 @@
+     }
+ }
+ 
+-QString IGisItem::getNameEx()
++QString IGisItem::getNameEx() const
+ {
+     QString str = getName();
+     IGisProject * project = dynamic_cast<IGisProject*>(parent());
+@@ -350,8 +350,8 @@
+     }
+ }
+ 
+-bool IGisItem::isReadOnly()
++bool IGisItem::isReadOnly() const
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+@@ -354,8 +354,8 @@
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+-bool IGisItem::isTainted()
++bool IGisItem::isTainted() const
+ {
+     return (flags & eFlagTainted);
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -174,7 +174,7 @@
+            @brief Get name of this item extended by the project name
+            @return A string object.
+         */
+-        virtual QString getNameEx();
++        virtual QString getNameEx() const;
+ 
+         /**
+            @brief Get a short string with the items properties to be displayed in tool tips or similar
+@@ -198,7 +198,7 @@
+ 
+            @return
+          */
+-        virtual const QRectF& getBoundingRect(){return boundingRect;}
++        virtual const QRectF& getBoundingRect() const {return boundingRect;}
+ 
+         /**
+            @brief Get screen option object to display and handle actions for this item.
+@@ -226,9 +226,9 @@
+            @brief Query if this item is read only
+            @return True if it is read only.
+          */
+-        bool isReadOnly();
++        bool isReadOnly() const;
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+@@ -230,9 +230,9 @@
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+-        bool isTainted();
++        bool isTainted() const;
+         /**
+            @brief Set the read only mode.
+ 
+@@ -255,7 +255,7 @@
+ 
+            @return True if the item has user focus. The default implementation is always false.
+          */
+-        virtual bool hasUserFocus(){return false;}
++        virtual bool hasUserFocus() const {return false;}
+ 
+ 
+         /**
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_QYFq9x.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_QYFq9x.bak
new file mode 100644
index 0000000..a2199e3
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_QYFq9x.bak
@@ -0,0 +1,198 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_QhKuka.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_QhKuka.bak
new file mode 100644
index 0000000..15476b0
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_QhKuka.bak
@@ -0,0 +1,69 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_RHnNae.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_RHnNae.bak
new file mode 100644
index 0000000..d67e946
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_RHnNae.bak
@@ -0,0 +1,219 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_TbVumX.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_TbVumX.bak
new file mode 100644
index 0000000..42c8986
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_TbVumX.bak
@@ -0,0 +1,175 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -190,7 +190,7 @@
+     }
+ }
+ 
+-QString IGisItem::getNameEx()
++QString IGisItem::getNameEx() const
+ {
+     QString str = getName();
+     IGisProject * project = dynamic_cast<IGisProject*>(parent());
+@@ -350,8 +350,8 @@
+     }
+ }
+ 
+-bool IGisItem::isReadOnly()
++bool IGisItem::isReadOnly() const
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+@@ -354,8 +354,8 @@
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+-bool IGisItem::isTainted()
++bool IGisItem::isTainted() const
+ {
+     return (flags & eFlagTainted);
+ }
+diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
+--- a/src/gis/prj/IGisProject.h
++++ b/src/gis/prj/IGisProject.h
+@@ -77,4 +77,7 @@
+ 
+         void edit();
+ 
++        /**
++           @brief Save the project using it's native format.
++         */
+         virtual void save() = 0;
+@@ -80,4 +83,7 @@
+         virtual void save() = 0;
++        /**
++           @brief Save the project selecting one of the available formats.
++        */
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+@@ -81,5 +87,5 @@
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+-        virtual QString getFilename(){return filename;}
++        virtual QString getFilename() const {return filename;}
+ 
+@@ -85,8 +91,8 @@
+ 
+-        type_e getType(){return type;}
++        type_e getType() const {return type;}
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+@@ -87,14 +93,14 @@
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+-        const QString& getName(){return metadata.name;}
+-        const QDateTime& getTime(){return metadata.time;}
+-        const QString& getKeywords(){return metadata.keywords;}
+-        const QString& getDescription(){return metadata.desc;}
+-        const QList<IGisItem::link_t>& getLinks(){return metadata.links;}
++        const QString& getName() const {return metadata.name;}
++        const QDateTime& getTime() const {return metadata.time;}
++        const QString& getKeywords() const {return metadata.keywords;}
++        const QString& getDescription() const {return metadata.desc;}
++        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
+ 
+ 
+         void setName(const QString& str);
+@@ -106,7 +112,7 @@
+            @brief Get a short metadata summary
+            @return Informational string.
+          */
+-        virtual QString getInfo();
++        virtual QString getInfo() const;
+         /**
+            @brief Get a temporary pointer to the item with matching key
+            @param key
+@@ -137,6 +143,18 @@
+          */
+         void editItemByKey(const IGisItem::key_t &key);
+ 
++        /**
++           @brief Add a copy if the gven item to the project
++
++           Befor the item is inserted the method will use it's key to find a duplicat item.
++           If there is an item with the same item key a copy option dialog is shown. Depending
++           the result the action is performed or aborted. The result will be copied into
++           lastResult to repeat the same decision on subsequent items.
++
++           @param item          pointer to item
++           @param off           the offset into the tree widget, -1 for none
++           @param lastResult    a reference to hold the last result of the copy option dialog
++        */
+         void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+ 
+         /**
+@@ -146,7 +164,7 @@
+ 
+            @return True if project is valid
+          */
+-        bool  isValid(){return valid;}
++        bool  isValid() const {return valid;}
+ 
+         void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+         void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
+diff --git a/src/gis/trk/CDetailsTrk.cpp b/src/gis/trk/CDetailsTrk.cpp
+--- a/src/gis/trk/CDetailsTrk.cpp
++++ b/src/gis/trk/CDetailsTrk.cpp
+@@ -344,6 +344,7 @@
+         {
+             trk.setComment(dlg.getHtml());
+         }
++        setupGui();
+     }
+     else if(url.toString() == "description")
+     {
+@@ -353,6 +354,7 @@
+         {
+             trk.setDescription(dlg.getHtml());
+         }
++        setupGui();
+     }
+     else if(url.toString() == "links")
+     {
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_TlaYCc.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_TlaYCc.bak
new file mode 100644
index 0000000..931c079
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_TlaYCc.bak
@@ -0,0 +1,55 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_V50HTU.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_V50HTU.bak
new file mode 100644
index 0000000..e9b02de
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_V50HTU.bak
@@ -0,0 +1,512 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
+--- a/src/gis/wpt/CGisItemWpt.cpp
++++ b/src/gis/wpt/CGisItemWpt.cpp
+@@ -18,8 +18,9 @@
+ 
+ #include "gis/wpt/CGisItemWpt.h"
+ #include "gis/wpt/CDetailsWpt.h"
++#include "gis/wpt/CScrOptWpt.h"
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+@@ -21,9 +22,8 @@
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+-#include "gis/wpt/CScrOptWpt.h"
+ #include "units/IUnit.h"
+ #include "GeoMath.h"
+ 
+@@ -88,7 +88,7 @@
+ 
+ QString CGisItemWpt::getInfo()
+ {
+-    QString str = getName();
++    QString str = "<p>" + getName() + "</p>";
+ 
+     if(geocache.hasData)
+     {
+@@ -97,10 +97,10 @@
+ 
+     if(wpt.time.isValid())
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+@@ -101,10 +101,10 @@
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2elevation(wpt.ele, val, unit);
+         str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+@@ -112,9 +112,9 @@
+ 
+     if(proximity != NOFLOAT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+@@ -116,7 +116,8 @@
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+-    if(wpt.desc.count())
++    QString desc = removeHtml(wpt.desc);
++    if(desc.count())
+     {
+@@ -122,3 +123,3 @@
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+@@ -124,3 +125,3 @@
+ 
+-        if(wpt.desc.count() < 200)
++        if(desc.count() < 200)
+         {
+@@ -126,5 +127,5 @@
+         {
+-            str += wpt.desc;
++            str += desc;
+         }
+         else
+         {
+@@ -128,8 +129,8 @@
+         }
+         else
+         {
+-            str += wpt.desc.left(197) + "...";
++            str += desc.left(197) + "...";
+         }
+     }
+     else
+     {
+@@ -132,7 +133,7 @@
+         }
+     }
+     else
+     {
+-        QString cmt = wpt.cmt;
++        QString cmt = removeHtml(wpt.cmt);
+         if(cmt.count())
+         {
+@@ -137,6 +138,6 @@
+         if(cmt.count())
+         {
+-            if(!str.isEmpty()) str += "\n";
++            if(!str.isEmpty()) str += "<br/>\n";
+ 
+             if(cmt.count() < 200)
+             {
+@@ -148,6 +149,9 @@
+             }
+         }
+     }
++
++    qDebug() << "-----------------------";
++    qDebug() << str;
+     return str;
+ }
+ 
+@@ -207,6 +211,20 @@
+     setIcon();
+ }
+ 
++void CGisItemWpt::setComment(const QString& str)
++{
++    setText(1,"*");
++    wpt.cmt = str;
++    setToolTip(0,getInfo());
++}
++
++void CGisItemWpt::setDescription(const QString& str)
++{
++    setText(1,"*");
++    wpt.desc = str;
++    setToolTip(0,getInfo());
++}
++
+ void CGisItemWpt::save(QDomNode& gpx)
+ {
+     QDomDocument doc = gpx.ownerDocument();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
+diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
+--- a/src/gis/wpt/CScrOptWpt.cpp
++++ b/src/gis/wpt/CScrOptWpt.cpp
+@@ -33,7 +33,7 @@
+     setupUi(this);
+     setOrigin(origin);
+     label->setFont(CMainWindow::self().getMapFont());
+-    label->setText(wpt->getInfo());
++    label->setText(IGisItem::removeHtml(wpt->getInfo()));
+ 
+     anchor = wpt->getPointCloseBy(origin);
+     move(anchor.toPoint() + QPoint(30,30));
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
+diff --git a/src/resources.qrc b/src/resources.qrc
+--- a/src/resources.qrc
++++ b/src/resources.qrc
+@@ -68,6 +68,19 @@
+         <file>icons/16x16/EditDetails.png</file>
+         <file>icons/16x16/EditText.png</file>
+         <file>icons/16x16/TimeZoneSetup.png</file>
++        <file>icons/16x16/Undo.png</file>
++        <file>icons/16x16/Redo.png</file>
++        <file>icons/16x16/Cut.png</file>
++        <file>icons/16x16/Copy.png</file>
++        <file>icons/16x16/Paste.png</file>
++        <file>icons/16x16/TextLeft.png</file>
++        <file>icons/16x16/TextRight.png</file>
++        <file>icons/16x16/TextCenter.png</file>
++        <file>icons/16x16/TextJustified.png</file>
++        <file>icons/16x16/TextBold.png</file>
++        <file>icons/16x16/TextUnderlined.png</file>
++        <file>icons/16x16/TextItalic.png</file>
++
+         <file>icons/32x32/2DFix.png</file>
+         <file>icons/32x32/3DFix.png</file>
+         <file>icons/32x32/Add.png</file>
+@@ -118,6 +131,21 @@
+         <file>icons/32x32/EditDetails.png</file>
+         <file>icons/32x32/EditText.png</file>
+         <file>icons/32x32/TimeZoneSetup.png</file>
++        <file>icons/32x32/Undo.png</file>
++        <file>icons/32x32/Redo.png</file>
++        <file>icons/32x32/Cut.png</file>
++        <file>icons/32x32/Copy.png</file>
++        <file>icons/32x32/Paste.png</file>
++        <file>icons/32x32/TextLeft.png</file>
++        <file>icons/32x32/TextRight.png</file>
++        <file>icons/32x32/TextCenter.png</file>
++        <file>icons/32x32/TextJustified.png</file>
++        <file>icons/32x32/TextBold.png</file>
++        <file>icons/32x32/TextUnderlined.png</file>
++        <file>icons/32x32/TextItalic.png</file>
++
++
++
+         <file>icons/48x48/2DFix.png</file>
+         <file>icons/48x48/3DFix.png</file>
+         <file>icons/48x48/Add.png</file>
+@@ -168,6 +196,21 @@
+         <file>icons/48x48/EditDetails.png</file>
+         <file>icons/48x48/EditText.png</file>
+         <file>icons/48x48/TimeZoneSetup.png</file>
++        <file>icons/48x48/Undo.png</file>
++        <file>icons/48x48/Redo.png</file>
++        <file>icons/48x48/Cut.png</file>
++        <file>icons/48x48/Copy.png</file>
++        <file>icons/48x48/Paste.png</file>
++        <file>icons/48x48/TextLeft.png</file>
++        <file>icons/48x48/TextRight.png</file>
++        <file>icons/48x48/TextCenter.png</file>
++        <file>icons/48x48/TextJustified.png</file>
++        <file>icons/48x48/TextBold.png</file>
++        <file>icons/48x48/TextUnderlined.png</file>
++        <file>icons/48x48/TextItalic.png</file>
++
++
++
+         <file>icons/cache/32x32/bluepin.png</file>
+         <file>icons/cache/32x32/cito.png</file>
+         <file>icons/cache/32x32/corrected.png</file>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_WQ5EF6.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_WQ5EF6.bak
new file mode 100644
index 0000000..520dc5e
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_WQ5EF6.bak
@@ -0,0 +1,220 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -190,7 +190,7 @@
+     }
+ }
+ 
+-QString IGisItem::getNameEx()
++QString IGisItem::getNameEx() const
+ {
+     QString str = getName();
+     IGisProject * project = dynamic_cast<IGisProject*>(parent());
+@@ -350,8 +350,8 @@
+     }
+ }
+ 
+-bool IGisItem::isReadOnly()
++bool IGisItem::isReadOnly() const
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+@@ -354,8 +354,8 @@
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+-bool IGisItem::isTainted()
++bool IGisItem::isTainted() const
+ {
+     return (flags & eFlagTainted);
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -174,7 +174,7 @@
+            @brief Get name of this item extended by the project name
+            @return A string object.
+         */
+-        virtual QString getNameEx();
++        virtual QString getNameEx() const;
+ 
+         /**
+            @brief Get a short string with the items properties to be displayed in tool tips or similar
+@@ -198,7 +198,7 @@
+ 
+            @return
+          */
+-        virtual const QRectF& getBoundingRect(){return boundingRect;}
++        virtual const QRectF& getBoundingRect() const {return boundingRect;}
+ 
+         /**
+            @brief Get screen option object to display and handle actions for this item.
+@@ -226,9 +226,9 @@
+            @brief Query if this item is read only
+            @return True if it is read only.
+          */
+-        bool isReadOnly();
++        bool isReadOnly() const;
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+@@ -230,9 +230,9 @@
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+-        bool isTainted();
++        bool isTainted() const;
+         /**
+            @brief Set the read only mode.
+ 
+@@ -255,7 +255,7 @@
+ 
+            @return True if the item has user focus. The default implementation is always false.
+          */
+-        virtual bool hasUserFocus(){return false;}
++        virtual bool hasUserFocus() const {return false;}
+ 
+ 
+         /**
+diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
+--- a/src/gis/prj/IGisProject.cpp
++++ b/src/gis/prj/IGisProject.cpp
+@@ -136,7 +136,7 @@
+     }
+ }
+ 
+-QString IGisProject::getInfo()
++QString IGisProject::getInfo() const
+ {
+     QString str = metadata.name.isEmpty() ? text(CGisListWks::eColumnName) : metadata.name;
+     str = "<div style='font-weight: bold;'>" + str + "</div>";
+diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
+--- a/src/gis/prj/IGisProject.h
++++ b/src/gis/prj/IGisProject.h
+@@ -77,4 +77,7 @@
+ 
+         void edit();
+ 
++        /**
++           @brief Save the project using it's native format.
++         */
+         virtual void save() = 0;
+@@ -80,4 +83,7 @@
+         virtual void save() = 0;
++        /**
++           @brief Save the project selecting one of the available formats.
++        */
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+@@ -81,5 +87,5 @@
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+-        virtual QString getFilename(){return filename;}
++        virtual QString getFilename() const {return filename;}
+ 
+@@ -85,8 +91,8 @@
+ 
+-        type_e getType(){return type;}
++        type_e getType() const {return type;}
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+@@ -87,14 +93,14 @@
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+-        const QString& getName(){return metadata.name;}
+-        const QDateTime& getTime(){return metadata.time;}
+-        const QString& getKeywords(){return metadata.keywords;}
+-        const QString& getDescription(){return metadata.desc;}
+-        const QList<IGisItem::link_t>& getLinks(){return metadata.links;}
++        const QString& getName() const {return metadata.name;}
++        const QDateTime& getTime() const {return metadata.time;}
++        const QString& getKeywords() const {return metadata.keywords;}
++        const QString& getDescription() const {return metadata.desc;}
++        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
+ 
+ 
+         void setName(const QString& str);
+@@ -106,7 +112,7 @@
+            @brief Get a short metadata summary
+            @return Informational string.
+          */
+-        virtual QString getInfo();
++        virtual QString getInfo() const;
+         /**
+            @brief Get a temporary pointer to the item with matching key
+            @param key
+@@ -137,6 +143,18 @@
+          */
+         void editItemByKey(const IGisItem::key_t &key);
+ 
++        /**
++           @brief Add a copy if the gven item to the project
++
++           Befor the item is inserted the method will use it's key to find a duplicat item.
++           If there is an item with the same item key a copy option dialog is shown. Depending
++           the result the action is performed or aborted. The result will be copied into
++           lastResult to repeat the same decision on subsequent items.
++
++           @param item          pointer to item
++           @param off           the offset into the tree widget, -1 for none
++           @param lastResult    a reference to hold the last result of the copy option dialog
++        */
+         void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+ 
+         /**
+@@ -146,7 +164,7 @@
+ 
+            @return True if project is valid
+          */
+-        bool  isValid(){return valid;}
++        bool  isValid() const {return valid;}
+ 
+         void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+         void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Wvm2XK.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Wvm2XK.bak
new file mode 100644
index 0000000..8024359
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Wvm2XK.bak
@@ -0,0 +1,348 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
+diff --git a/src/resources.qrc b/src/resources.qrc
+--- a/src/resources.qrc
++++ b/src/resources.qrc
+@@ -68,6 +68,19 @@
+         <file>icons/16x16/EditDetails.png</file>
+         <file>icons/16x16/EditText.png</file>
+         <file>icons/16x16/TimeZoneSetup.png</file>
++        <file>icons/16x16/Undo.png</file>
++        <file>icons/16x16/Redo.png</file>
++        <file>icons/16x16/Cut.png</file>
++        <file>icons/16x16/Copy.png</file>
++        <file>icons/16x16/Paste.png</file>
++        <file>icons/16x16/TextLeft.png</file>
++        <file>icons/16x16/TextRight.png</file>
++        <file>icons/16x16/TextCenter.png</file>
++        <file>icons/16x16/TextJustified.png</file>
++        <file>icons/16x16/TextBold.png</file>
++        <file>icons/16x16/TextUnderlined.png</file>
++        <file>icons/16x16/TextItalic.png</file>
++
+         <file>icons/32x32/2DFix.png</file>
+         <file>icons/32x32/3DFix.png</file>
+         <file>icons/32x32/Add.png</file>
+@@ -118,6 +131,21 @@
+         <file>icons/32x32/EditDetails.png</file>
+         <file>icons/32x32/EditText.png</file>
+         <file>icons/32x32/TimeZoneSetup.png</file>
++        <file>icons/32x32/Undo.png</file>
++        <file>icons/32x32/Redo.png</file>
++        <file>icons/32x32/Cut.png</file>
++        <file>icons/32x32/Copy.png</file>
++        <file>icons/32x32/Paste.png</file>
++        <file>icons/32x32/TextLeft.png</file>
++        <file>icons/32x32/TextRight.png</file>
++        <file>icons/32x32/TextCenter.png</file>
++        <file>icons/32x32/TextJustified.png</file>
++        <file>icons/32x32/TextBold.png</file>
++        <file>icons/32x32/TextUnderlined.png</file>
++        <file>icons/32x32/TextItalic.png</file>
++
++
++
+         <file>icons/48x48/2DFix.png</file>
+         <file>icons/48x48/3DFix.png</file>
+         <file>icons/48x48/Add.png</file>
+@@ -168,6 +196,21 @@
+         <file>icons/48x48/EditDetails.png</file>
+         <file>icons/48x48/EditText.png</file>
+         <file>icons/48x48/TimeZoneSetup.png</file>
++        <file>icons/48x48/Undo.png</file>
++        <file>icons/48x48/Redo.png</file>
++        <file>icons/48x48/Cut.png</file>
++        <file>icons/48x48/Copy.png</file>
++        <file>icons/48x48/Paste.png</file>
++        <file>icons/48x48/TextLeft.png</file>
++        <file>icons/48x48/TextRight.png</file>
++        <file>icons/48x48/TextCenter.png</file>
++        <file>icons/48x48/TextJustified.png</file>
++        <file>icons/48x48/TextBold.png</file>
++        <file>icons/48x48/TextUnderlined.png</file>
++        <file>icons/48x48/TextItalic.png</file>
++
++
++
+         <file>icons/cache/32x32/bluepin.png</file>
+         <file>icons/cache/32x32/cito.png</file>
+         <file>icons/cache/32x32/corrected.png</file>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_XyikZV.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_XyikZV.bak
new file mode 100644
index 0000000..c80f1db
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_XyikZV.bak
@@ -0,0 +1,88 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_XzwqFK.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_XzwqFK.bak
new file mode 100644
index 0000000..7ce6b74
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_XzwqFK.bak
@@ -0,0 +1,74 @@
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_ZQmjwC.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_ZQmjwC.bak
new file mode 100644
index 0000000..4eac65a
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_ZQmjwC.bak
@@ -0,0 +1,145 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__FyHdw.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__FyHdw.bak
new file mode 100644
index 0000000..6d9a525
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__FyHdw.bak
@@ -0,0 +1,227 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -190,7 +190,7 @@
+     }
+ }
+ 
+-QString IGisItem::getNameEx()
++QString IGisItem::getNameEx() const
+ {
+     QString str = getName();
+     IGisProject * project = dynamic_cast<IGisProject*>(parent());
+@@ -350,8 +350,8 @@
+     }
+ }
+ 
+-bool IGisItem::isReadOnly()
++bool IGisItem::isReadOnly() const
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+@@ -354,8 +354,8 @@
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+-bool IGisItem::isTainted()
++bool IGisItem::isTainted() const
+ {
+     return (flags & eFlagTainted);
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -174,7 +174,7 @@
+            @brief Get name of this item extended by the project name
+            @return A string object.
+         */
+-        virtual QString getNameEx();
++        virtual QString getNameEx() const;
+ 
+         /**
+            @brief Get a short string with the items properties to be displayed in tool tips or similar
+@@ -198,7 +198,7 @@
+ 
+            @return
+          */
+-        virtual const QRectF& getBoundingRect(){return boundingRect;}
++        virtual const QRectF& getBoundingRect() const {return boundingRect;}
+ 
+         /**
+            @brief Get screen option object to display and handle actions for this item.
+@@ -226,9 +226,9 @@
+            @brief Query if this item is read only
+            @return True if it is read only.
+          */
+-        bool isReadOnly();
++        bool isReadOnly() const;
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+@@ -230,9 +230,9 @@
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+-        bool isTainted();
++        bool isTainted() const;
+         /**
+            @brief Set the read only mode.
+ 
+@@ -255,7 +255,7 @@
+ 
+            @return True if the item has user focus. The default implementation is always false.
+          */
+-        virtual bool hasUserFocus(){return false;}
++        virtual bool hasUserFocus() const {return false;}
+ 
+ 
+         /**
+diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
+--- a/src/gis/prj/IGisProject.h
++++ b/src/gis/prj/IGisProject.h
+@@ -77,4 +77,7 @@
+ 
+         void edit();
+ 
++        /**
++           @brief Save the project using it's native format.
++         */
+         virtual void save() = 0;
+@@ -80,4 +83,7 @@
+         virtual void save() = 0;
++        /**
++           @brief Save the project selecting one of the available formats.
++        */
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+@@ -81,5 +87,5 @@
+         virtual void saveAs() = 0;
+ 
+         virtual void setFilename(const QString& fn){filename = fn;}
+-        virtual QString getFilename(){return filename;}
++        virtual QString getFilename() const {return filename;}
+ 
+@@ -85,8 +91,8 @@
+ 
+-        type_e getType(){return type;}
++        type_e getType() const {return type;}
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+@@ -87,14 +93,14 @@
+ 
+         /**
+            @brief Get unique project key.
+            @return A MD5 hash string
+          */
+         const QString& getKey(){genKey(); return key;}
+-        const QString& getName(){return metadata.name;}
+-        const QDateTime& getTime(){return metadata.time;}
+-        const QString& getKeywords(){return metadata.keywords;}
+-        const QString& getDescription(){return metadata.desc;}
+-        const QList<IGisItem::link_t>& getLinks(){return metadata.links;}
++        const QString& getName() const {return metadata.name;}
++        const QDateTime& getTime() const {return metadata.time;}
++        const QString& getKeywords() const {return metadata.keywords;}
++        const QString& getDescription() const {return metadata.desc;}
++        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
+ 
+ 
+         void setName(const QString& str);
+@@ -106,7 +112,7 @@
+            @brief Get a short metadata summary
+            @return Informational string.
+          */
+-        virtual QString getInfo();
++        virtual QString getInfo() const;
+         /**
+            @brief Get a temporary pointer to the item with matching key
+            @param key
+@@ -137,6 +143,18 @@
+          */
+         void editItemByKey(const IGisItem::key_t &key);
+ 
++        /**
++           @brief Add a copy if the gven item to the project
++
++           Befor the item is inserted the method will use it's key to find a duplicat item.
++           If there is an item with the same item key a copy option dialog is shown. Depending
++           the result the action is performed or aborted. The result will be copied into
++           lastResult to repeat the same decision on subsequent items.
++
++           @param item          pointer to item
++           @param off           the offset into the tree widget, -1 for none
++           @param lastResult    a reference to hold the last result of the copy option dialog
++        */
+         void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+ 
+         /**
+@@ -146,7 +164,7 @@
+ 
+            @return True if project is valid
+          */
+-        bool  isValid(){return valid;}
++        bool  isValid() const {return valid;}
+ 
+         void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+         void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
+diff --git a/src/gis/trk/CDetailsTrk.cpp b/src/gis/trk/CDetailsTrk.cpp
+--- a/src/gis/trk/CDetailsTrk.cpp
++++ b/src/gis/trk/CDetailsTrk.cpp
+@@ -344,6 +344,7 @@
+         {
+             trk.setComment(dlg.getHtml());
+         }
++        setupGui();
+     }
+     else if(url.toString() == "description")
+     {
+@@ -353,6 +354,7 @@
+         {
+             trk.setDescription(dlg.getHtml());
+         }
++        setupGui();
+     }
+     else if(url.toString() == "links")
+     {
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__oamrT.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__oamrT.bak
new file mode 100644
index 0000000..a707975
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__oamrT.bak
@@ -0,0 +1,250 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__xosYF.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__xosYF.bak
new file mode 100644
index 0000000..25629d8
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__xosYF.bak
@@ -0,0 +1,173 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_aFBa4m.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_aFBa4m.bak
new file mode 100644
index 0000000..fb528b4
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_aFBa4m.bak
@@ -0,0 +1,533 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
+--- a/src/gis/wpt/CGisItemWpt.cpp
++++ b/src/gis/wpt/CGisItemWpt.cpp
+@@ -18,8 +18,9 @@
+ 
+ #include "gis/wpt/CGisItemWpt.h"
+ #include "gis/wpt/CDetailsWpt.h"
++#include "gis/wpt/CScrOptWpt.h"
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+@@ -21,9 +22,8 @@
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+-#include "gis/wpt/CScrOptWpt.h"
+ #include "units/IUnit.h"
+ #include "GeoMath.h"
+ 
+@@ -88,7 +88,7 @@
+ 
+ QString CGisItemWpt::getInfo()
+ {
+-    QString str = getName();
++    QString str = "<p>" + getName() + "</p>";
+ 
+     if(geocache.hasData)
+     {
+@@ -97,10 +97,10 @@
+ 
+     if(wpt.time.isValid())
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+@@ -101,10 +101,10 @@
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2elevation(wpt.ele, val, unit);
+         str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+@@ -112,9 +112,9 @@
+ 
+     if(proximity != NOFLOAT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+@@ -116,7 +116,8 @@
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+-    if(wpt.desc.count())
++    QString desc = removeHtml(wpt.desc);
++    if(desc.count())
+     {
+@@ -122,3 +123,3 @@
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+@@ -124,3 +125,3 @@
+ 
+-        if(wpt.desc.count() < 200)
++        if(desc.count() < 200)
+         {
+@@ -126,5 +127,5 @@
+         {
+-            str += wpt.desc;
++            str += desc;
+         }
+         else
+         {
+@@ -128,8 +129,8 @@
+         }
+         else
+         {
+-            str += wpt.desc.left(197) + "...";
++            str += desc.left(197) + "...";
+         }
+     }
+     else
+     {
+@@ -132,7 +133,7 @@
+         }
+     }
+     else
+     {
+-        QString cmt = wpt.cmt;
++        QString cmt = removeHtml(wpt.cmt);
+         if(cmt.count())
+         {
+@@ -137,6 +138,6 @@
+         if(cmt.count())
+         {
+-            if(!str.isEmpty()) str += "\n";
++            if(!str.isEmpty()) str += "<br/>\n";
+ 
+             if(cmt.count() < 200)
+             {
+@@ -148,6 +149,9 @@
+             }
+         }
+     }
++
++    qDebug() << "-----------------------";
++    qDebug() << str;
+     return str;
+ }
+ 
+@@ -207,6 +211,20 @@
+     setIcon();
+ }
+ 
++void CGisItemWpt::setComment(const QString& str)
++{
++    setText(1,"*");
++    wpt.cmt = str;
++    setToolTip(0,getInfo());
++}
++
++void CGisItemWpt::setDescription(const QString& str)
++{
++    setText(1,"*");
++    wpt.desc = str;
++    setToolTip(0,getInfo());
++}
++
+ void CGisItemWpt::save(QDomNode& gpx)
+ {
+     QDomDocument doc = gpx.ownerDocument();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
+diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
+--- a/src/gis/wpt/CScrOptWpt.cpp
++++ b/src/gis/wpt/CScrOptWpt.cpp
+@@ -33,7 +33,7 @@
+     setupUi(this);
+     setOrigin(origin);
+     label->setFont(CMainWindow::self().getMapFont());
+-    label->setText(wpt->getInfo());
++    label->setText(IGisItem::removeHtml(wpt->getInfo()));
+ 
+     anchor = wpt->getPointCloseBy(origin);
+     move(anchor.toPoint() + QPoint(30,30));
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
+diff --git a/src/resources.qrc b/src/resources.qrc
+--- a/src/resources.qrc
++++ b/src/resources.qrc
+@@ -68,6 +68,19 @@
+         <file>icons/16x16/EditDetails.png</file>
+         <file>icons/16x16/EditText.png</file>
+         <file>icons/16x16/TimeZoneSetup.png</file>
++        <file>icons/16x16/Undo.png</file>
++        <file>icons/16x16/Redo.png</file>
++        <file>icons/16x16/Cut.png</file>
++        <file>icons/16x16/Copy.png</file>
++        <file>icons/16x16/Paste.png</file>
++        <file>icons/16x16/TextLeft.png</file>
++        <file>icons/16x16/TextRight.png</file>
++        <file>icons/16x16/TextCenter.png</file>
++        <file>icons/16x16/TextJustified.png</file>
++        <file>icons/16x16/TextBold.png</file>
++        <file>icons/16x16/TextUnderlined.png</file>
++        <file>icons/16x16/TextItalic.png</file>
++
+         <file>icons/32x32/2DFix.png</file>
+         <file>icons/32x32/3DFix.png</file>
+         <file>icons/32x32/Add.png</file>
+@@ -118,6 +131,21 @@
+         <file>icons/32x32/EditDetails.png</file>
+         <file>icons/32x32/EditText.png</file>
+         <file>icons/32x32/TimeZoneSetup.png</file>
++        <file>icons/32x32/Undo.png</file>
++        <file>icons/32x32/Redo.png</file>
++        <file>icons/32x32/Cut.png</file>
++        <file>icons/32x32/Copy.png</file>
++        <file>icons/32x32/Paste.png</file>
++        <file>icons/32x32/TextLeft.png</file>
++        <file>icons/32x32/TextRight.png</file>
++        <file>icons/32x32/TextCenter.png</file>
++        <file>icons/32x32/TextJustified.png</file>
++        <file>icons/32x32/TextBold.png</file>
++        <file>icons/32x32/TextUnderlined.png</file>
++        <file>icons/32x32/TextItalic.png</file>
++
++
++
+         <file>icons/48x48/2DFix.png</file>
+         <file>icons/48x48/3DFix.png</file>
+         <file>icons/48x48/Add.png</file>
+@@ -168,6 +196,21 @@
+         <file>icons/48x48/EditDetails.png</file>
+         <file>icons/48x48/EditText.png</file>
+         <file>icons/48x48/TimeZoneSetup.png</file>
++        <file>icons/48x48/Undo.png</file>
++        <file>icons/48x48/Redo.png</file>
++        <file>icons/48x48/Cut.png</file>
++        <file>icons/48x48/Copy.png</file>
++        <file>icons/48x48/Paste.png</file>
++        <file>icons/48x48/TextLeft.png</file>
++        <file>icons/48x48/TextRight.png</file>
++        <file>icons/48x48/TextCenter.png</file>
++        <file>icons/48x48/TextJustified.png</file>
++        <file>icons/48x48/TextBold.png</file>
++        <file>icons/48x48/TextUnderlined.png</file>
++        <file>icons/48x48/TextItalic.png</file>
++
++
++
+         <file>icons/cache/32x32/bluepin.png</file>
+         <file>icons/cache/32x32/cito.png</file>
+         <file>icons/cache/32x32/corrected.png</file>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_c8KLTi.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_c8KLTi.bak
new file mode 100644
index 0000000..e4effa9
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_c8KLTi.bak
@@ -0,0 +1,31 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_cFEYOV.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_cFEYOV.bak
new file mode 100644
index 0000000..1374e0d
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_cFEYOV.bak
@@ -0,0 +1,113 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_dQbVnU.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_dQbVnU.bak
new file mode 100644
index 0000000..57109e9
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_dQbVnU.bak
@@ -0,0 +1,127 @@
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -351,6 +351,15 @@
+         int y2 = e->pos().y();
+         int off = y2 > y1 ? 1 : 0;
+ 
++        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
++        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
++        if(prj1 && prj2)
++        {
++            QTreeWidget::dropEvent(e);
++            emit sigChanged();
++            return;
++        }
++
+         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
+         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
+ 
+@@ -454,7 +463,10 @@
+             }
+ 
+             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+-            project->insertCopyOfItem(gisItem, -1, lastResult);
++            if(gisItem)
++            {
++                project->insertCopyOfItem(gisItem, -1, lastResult);
++            }
+         }
+     }
+     emit sigChanged();
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -190,7 +190,7 @@
+     }
+ }
+ 
+-QString IGisItem::getNameEx()
++QString IGisItem::getNameEx() const
+ {
+     QString str = getName();
+     IGisProject * project = dynamic_cast<IGisProject*>(parent());
+@@ -350,8 +350,8 @@
+     }
+ }
+ 
+-bool IGisItem::isReadOnly()
++bool IGisItem::isReadOnly() const
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+@@ -354,8 +354,8 @@
+ {
+     return !(flags & eFlagWriteAllowed);
+ }
+ 
+-bool IGisItem::isTainted()
++bool IGisItem::isTainted() const
+ {
+     return (flags & eFlagTainted);
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -174,7 +174,7 @@
+            @brief Get name of this item extended by the project name
+            @return A string object.
+         */
+-        virtual QString getNameEx();
++        virtual QString getNameEx() const;
+ 
+         /**
+            @brief Get a short string with the items properties to be displayed in tool tips or similar
+@@ -198,7 +198,7 @@
+ 
+            @return
+          */
+-        virtual const QRectF& getBoundingRect(){return boundingRect;}
++        virtual const QRectF& getBoundingRect() const {return boundingRect;}
+ 
+         /**
+            @brief Get screen option object to display and handle actions for this item.
+@@ -226,9 +226,9 @@
+            @brief Query if this item is read only
+            @return True if it is read only.
+          */
+-        bool isReadOnly();
++        bool isReadOnly() const;
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+@@ -230,9 +230,9 @@
+ 
+         /**
+            @brief Query if the item is imported and was changed
+            @return True if content was changed.
+          */
+-        bool isTainted();
++        bool isTainted() const;
+         /**
+            @brief Set the read only mode.
+ 
+@@ -255,7 +255,7 @@
+ 
+            @return True if the item has user focus. The default implementation is always false.
+          */
+-        virtual bool hasUserFocus(){return false;}
++        virtual bool hasUserFocus() const {return false;}
+ 
+ 
+         /**
+diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
+--- a/src/gis/prj/IGisProject.cpp
++++ b/src/gis/prj/IGisProject.cpp
+@@ -136,7 +136,7 @@
+     }
+ }
+ 
+-QString IGisProject::getInfo()
++QString IGisProject::getInfo() const
+ {
+     QString str = metadata.name.isEmpty() ? text(CGisListWks::eColumnName) : metadata.name;
+     str = "<div style='font-weight: bold;'>" + str + "</div>";
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_dXCOib.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_dXCOib.bak
new file mode 100644
index 0000000..aa5723b
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_dXCOib.bak
@@ -0,0 +1,140 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_gPbjzI.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_gPbjzI.bak
new file mode 100644
index 0000000..379bf57
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_gPbjzI.bak
@@ -0,0 +1,360 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
+diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
+--- a/src/gis/wpt/CScrOptWpt.cpp
++++ b/src/gis/wpt/CScrOptWpt.cpp
+@@ -33,7 +33,7 @@
+     setupUi(this);
+     setOrigin(origin);
+     label->setFont(CMainWindow::self().getMapFont());
+-    label->setText(wpt->getInfo());
++    label->setText(IGisItem::removeHtml(wpt->getInfo()));
+ 
+     anchor = wpt->getPointCloseBy(origin);
+     move(anchor.toPoint() + QPoint(30,30));
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
+diff --git a/src/resources.qrc b/src/resources.qrc
+--- a/src/resources.qrc
++++ b/src/resources.qrc
+@@ -68,6 +68,19 @@
+         <file>icons/16x16/EditDetails.png</file>
+         <file>icons/16x16/EditText.png</file>
+         <file>icons/16x16/TimeZoneSetup.png</file>
++        <file>icons/16x16/Undo.png</file>
++        <file>icons/16x16/Redo.png</file>
++        <file>icons/16x16/Cut.png</file>
++        <file>icons/16x16/Copy.png</file>
++        <file>icons/16x16/Paste.png</file>
++        <file>icons/16x16/TextLeft.png</file>
++        <file>icons/16x16/TextRight.png</file>
++        <file>icons/16x16/TextCenter.png</file>
++        <file>icons/16x16/TextJustified.png</file>
++        <file>icons/16x16/TextBold.png</file>
++        <file>icons/16x16/TextUnderlined.png</file>
++        <file>icons/16x16/TextItalic.png</file>
++
+         <file>icons/32x32/2DFix.png</file>
+         <file>icons/32x32/3DFix.png</file>
+         <file>icons/32x32/Add.png</file>
+@@ -118,6 +131,21 @@
+         <file>icons/32x32/EditDetails.png</file>
+         <file>icons/32x32/EditText.png</file>
+         <file>icons/32x32/TimeZoneSetup.png</file>
++        <file>icons/32x32/Undo.png</file>
++        <file>icons/32x32/Redo.png</file>
++        <file>icons/32x32/Cut.png</file>
++        <file>icons/32x32/Copy.png</file>
++        <file>icons/32x32/Paste.png</file>
++        <file>icons/32x32/TextLeft.png</file>
++        <file>icons/32x32/TextRight.png</file>
++        <file>icons/32x32/TextCenter.png</file>
++        <file>icons/32x32/TextJustified.png</file>
++        <file>icons/32x32/TextBold.png</file>
++        <file>icons/32x32/TextUnderlined.png</file>
++        <file>icons/32x32/TextItalic.png</file>
++
++
++
+         <file>icons/48x48/2DFix.png</file>
+         <file>icons/48x48/3DFix.png</file>
+         <file>icons/48x48/Add.png</file>
+@@ -168,6 +196,21 @@
+         <file>icons/48x48/EditDetails.png</file>
+         <file>icons/48x48/EditText.png</file>
+         <file>icons/48x48/TimeZoneSetup.png</file>
++        <file>icons/48x48/Undo.png</file>
++        <file>icons/48x48/Redo.png</file>
++        <file>icons/48x48/Cut.png</file>
++        <file>icons/48x48/Copy.png</file>
++        <file>icons/48x48/Paste.png</file>
++        <file>icons/48x48/TextLeft.png</file>
++        <file>icons/48x48/TextRight.png</file>
++        <file>icons/48x48/TextCenter.png</file>
++        <file>icons/48x48/TextJustified.png</file>
++        <file>icons/48x48/TextBold.png</file>
++        <file>icons/48x48/TextUnderlined.png</file>
++        <file>icons/48x48/TextItalic.png</file>
++
++
++
+         <file>icons/cache/32x32/bluepin.png</file>
+         <file>icons/cache/32x32/cito.png</file>
+         <file>icons/cache/32x32/corrected.png</file>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_irk_tW.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_irk_tW.bak
new file mode 100644
index 0000000..a32363f
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_irk_tW.bak
@@ -0,0 +1,406 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
+--- a/src/gis/wpt/CGisItemWpt.cpp
++++ b/src/gis/wpt/CGisItemWpt.cpp
+@@ -18,8 +18,9 @@
+ 
+ #include "gis/wpt/CGisItemWpt.h"
+ #include "gis/wpt/CDetailsWpt.h"
++#include "gis/wpt/CScrOptWpt.h"
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+@@ -21,9 +22,8 @@
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+-#include "gis/wpt/CScrOptWpt.h"
+ #include "units/IUnit.h"
+ #include "GeoMath.h"
+ 
+@@ -88,7 +88,7 @@
+ 
+ QString CGisItemWpt::getInfo()
+ {
+-    QString str = getName();
++    QString str = "<p>" + getName() + "</p>";
+ 
+     if(geocache.hasData)
+     {
+@@ -97,10 +97,10 @@
+ 
+     if(wpt.time.isValid())
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+@@ -101,10 +101,10 @@
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2elevation(wpt.ele, val, unit);
+         str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+@@ -112,9 +112,9 @@
+ 
+     if(proximity != NOFLOAT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+@@ -116,7 +116,8 @@
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+-    if(wpt.desc.count())
++    QString desc = removeHtml(wpt.desc);
++    if(desc.count())
+     {
+@@ -122,3 +123,3 @@
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+@@ -124,3 +125,3 @@
+ 
+-        if(wpt.desc.count() < 200)
++        if(desc.count() < 200)
+         {
+@@ -126,5 +127,5 @@
+         {
+-            str += wpt.desc;
++            str += desc;
+         }
+         else
+         {
+@@ -128,8 +129,8 @@
+         }
+         else
+         {
+-            str += wpt.desc.left(197) + "...";
++            str += desc.left(197) + "...";
+         }
+     }
+     else
+     {
+@@ -132,7 +133,7 @@
+         }
+     }
+     else
+     {
+-        QString cmt = wpt.cmt;
++        QString cmt = removeHtml(wpt.cmt);
+         if(cmt.count())
+         {
+@@ -137,6 +138,6 @@
+         if(cmt.count())
+         {
+-            if(!str.isEmpty()) str += "\n";
++            if(!str.isEmpty()) str += "<br/>\n";
+ 
+             if(cmt.count() < 200)
+             {
+@@ -148,6 +149,9 @@
+             }
+         }
+     }
++
++    qDebug() << "-----------------------";
++    qDebug() << str;
+     return str;
+ }
+ 
+@@ -207,6 +211,20 @@
+     setIcon();
+ }
+ 
++void CGisItemWpt::setComment(const QString& str)
++{
++    setText(1,"*");
++    wpt.cmt = str;
++    setToolTip(0,getInfo());
++}
++
++void CGisItemWpt::setDescription(const QString& str)
++{
++    setText(1,"*");
++    wpt.desc = str;
++    setToolTip(0,getInfo());
++}
++
+ void CGisItemWpt::save(QDomNode& gpx)
+ {
+     QDomDocument doc = gpx.ownerDocument();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
+diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
+--- a/src/gis/wpt/CScrOptWpt.cpp
++++ b/src/gis/wpt/CScrOptWpt.cpp
+@@ -33,7 +33,7 @@
+     setupUi(this);
+     setOrigin(origin);
+     label->setFont(CMainWindow::self().getMapFont());
+-    label->setText(wpt->getInfo());
++    label->setText(IGisItem::removeHtml(wpt->getInfo()));
+ 
+     anchor = wpt->getPointCloseBy(origin);
+     move(anchor.toPoint() + QPoint(30,30));
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_jkEjw8.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_jkEjw8.bak
new file mode 100644
index 0000000..daa045d
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_jkEjw8.bak
@@ -0,0 +1,15 @@
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -451,6 +451,11 @@
+     QPolygonF subline;
+     const int size = line.size();
+ 
++    if(line.isEmpty())
++    {
++        return;
++    }
++
+     pt = line[0];
+     subline << pt;
+ 
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_pZMY9I.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_pZMY9I.bak
new file mode 100644
index 0000000..b7d4990
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_pZMY9I.bak
@@ -0,0 +1,466 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
+--- a/src/gis/wpt/CGisItemWpt.cpp
++++ b/src/gis/wpt/CGisItemWpt.cpp
+@@ -18,8 +18,9 @@
+ 
+ #include "gis/wpt/CGisItemWpt.h"
+ #include "gis/wpt/CDetailsWpt.h"
++#include "gis/wpt/CScrOptWpt.h"
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+@@ -21,9 +22,8 @@
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+-#include "gis/wpt/CScrOptWpt.h"
+ #include "units/IUnit.h"
+ #include "GeoMath.h"
+ 
+@@ -88,7 +88,7 @@
+ 
+ QString CGisItemWpt::getInfo()
+ {
+-    QString str = getName();
++    QString str = "<p>" + getName() + "</p>";
+ 
+     if(geocache.hasData)
+     {
+@@ -97,10 +97,10 @@
+ 
+     if(wpt.time.isValid())
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+@@ -101,10 +101,10 @@
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2elevation(wpt.ele, val, unit);
+         str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+@@ -112,9 +112,9 @@
+ 
+     if(proximity != NOFLOAT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+@@ -116,7 +116,8 @@
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+-    if(wpt.desc.count())
++    QString desc = removeHtml(wpt.desc);
++    if(desc.count())
+     {
+@@ -122,3 +123,3 @@
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+@@ -124,3 +125,3 @@
+ 
+-        if(wpt.desc.count() < 200)
++        if(desc.count() < 200)
+         {
+@@ -126,5 +127,5 @@
+         {
+-            str += wpt.desc;
++            str += desc;
+         }
+         else
+         {
+@@ -128,8 +129,8 @@
+         }
+         else
+         {
+-            str += wpt.desc.left(197) + "...";
++            str += desc.left(197) + "...";
+         }
+     }
+     else
+     {
+@@ -132,7 +133,7 @@
+         }
+     }
+     else
+     {
+-        QString cmt = wpt.cmt;
++        QString cmt = removeHtml(wpt.cmt);
+         if(cmt.count())
+         {
+@@ -137,6 +138,6 @@
+         if(cmt.count())
+         {
+-            if(!str.isEmpty()) str += "\n";
++            if(!str.isEmpty()) str += "<br/>\n";
+ 
+             if(cmt.count() < 200)
+             {
+@@ -148,6 +149,9 @@
+             }
+         }
+     }
++
++    qDebug() << "-----------------------";
++    qDebug() << str;
+     return str;
+ }
+ 
+@@ -207,6 +211,20 @@
+     setIcon();
+ }
+ 
++void CGisItemWpt::setComment(const QString& str)
++{
++    setText(1,"*");
++    wpt.cmt = str;
++    setToolTip(0,getInfo());
++}
++
++void CGisItemWpt::setDescription(const QString& str)
++{
++    setText(1,"*");
++    wpt.desc = str;
++    setToolTip(0,getInfo());
++}
++
+ void CGisItemWpt::save(QDomNode& gpx)
+ {
+     QDomDocument doc = gpx.ownerDocument();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
+diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
+--- a/src/gis/wpt/CScrOptWpt.cpp
++++ b/src/gis/wpt/CScrOptWpt.cpp
+@@ -33,7 +33,7 @@
+     setupUi(this);
+     setOrigin(origin);
+     label->setFont(CMainWindow::self().getMapFont());
+-    label->setText(wpt->getInfo());
++    label->setText(IGisItem::removeHtml(wpt->getInfo()));
+ 
+     anchor = wpt->getPointCloseBy(origin);
+     move(anchor.toPoint() + QPoint(30,30));
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_s1NHwd.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_s1NHwd.bak
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_uCwhiy.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_uCwhiy.bak
new file mode 100644
index 0000000..0ee4f65
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_uCwhiy.bak
@@ -0,0 +1,317 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
+--- a/src/gis/wpt/IScrOptWpt.ui
++++ b/src/gis/wpt/IScrOptWpt.ui
+@@ -88,9 +88,15 @@
+    </item>
+    <item>
+     <widget class="QLabel" name="label">
++     <property name="maximumSize">
++      <size>
++       <width>400</width>
++       <height>16777215</height>
++      </size>
++     </property>
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
+@@ -91,9 +97,12 @@
+      <property name="text">
+       <string>TextLabel</string>
+      </property>
+      <property name="textFormat">
+       <enum>Qt::AutoText</enum>
+      </property>
++     <property name="wordWrap">
++      <bool>true</bool>
++     </property>
+     </widget>
+    </item>
+   </layout>
+diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
+--- a/src/helpers/IWptIconDialog.ui
++++ b/src/helpers/IWptIconDialog.ui
+@@ -24,16 +24,6 @@
+      </property>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QDialogButtonBox" name="buttonBox">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-     <property name="standardButtons">
+-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+-     </property>
+-    </widget>
+-   </item>
+   </layout>
+  </widget>
+  <resources/>
+@@ -37,38 +27,5 @@
+   </layout>
+  </widget>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>accepted()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>248</x>
+-     <y>254</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>157</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>buttonBox</sender>
+-   <signal>rejected()</signal>
+-   <receiver>IWptIconDialog</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel">
+-     <x>316</x>
+-     <y>260</y>
+-    </hint>
+-    <hint type="destinationlabel">
+-     <x>286</x>
+-     <y>274</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
+diff --git a/src/resources.qrc b/src/resources.qrc
+--- a/src/resources.qrc
++++ b/src/resources.qrc
+@@ -68,6 +68,19 @@
+         <file>icons/16x16/EditDetails.png</file>
+         <file>icons/16x16/EditText.png</file>
+         <file>icons/16x16/TimeZoneSetup.png</file>
++        <file>icons/16x16/Undo.png</file>
++        <file>icons/16x16/Redo.png</file>
++        <file>icons/16x16/Cut.png</file>
++        <file>icons/16x16/Copy.png</file>
++        <file>icons/16x16/Paste.png</file>
++        <file>icons/16x16/TextLeft.png</file>
++        <file>icons/16x16/TextRight.png</file>
++        <file>icons/16x16/TextCenter.png</file>
++        <file>icons/16x16/TextJustified.png</file>
++        <file>icons/16x16/TextBold.png</file>
++        <file>icons/16x16/TextUnderlined.png</file>
++        <file>icons/16x16/TextItalic.png</file>
++
+         <file>icons/32x32/2DFix.png</file>
+         <file>icons/32x32/3DFix.png</file>
+         <file>icons/32x32/Add.png</file>
+@@ -118,6 +131,21 @@
+         <file>icons/32x32/EditDetails.png</file>
+         <file>icons/32x32/EditText.png</file>
+         <file>icons/32x32/TimeZoneSetup.png</file>
++        <file>icons/32x32/Undo.png</file>
++        <file>icons/32x32/Redo.png</file>
++        <file>icons/32x32/Cut.png</file>
++        <file>icons/32x32/Copy.png</file>
++        <file>icons/32x32/Paste.png</file>
++        <file>icons/32x32/TextLeft.png</file>
++        <file>icons/32x32/TextRight.png</file>
++        <file>icons/32x32/TextCenter.png</file>
++        <file>icons/32x32/TextJustified.png</file>
++        <file>icons/32x32/TextBold.png</file>
++        <file>icons/32x32/TextUnderlined.png</file>
++        <file>icons/32x32/TextItalic.png</file>
++
++
++
+         <file>icons/48x48/2DFix.png</file>
+         <file>icons/48x48/3DFix.png</file>
+         <file>icons/48x48/Add.png</file>
+@@ -168,6 +196,21 @@
+         <file>icons/48x48/EditDetails.png</file>
+         <file>icons/48x48/EditText.png</file>
+         <file>icons/48x48/TimeZoneSetup.png</file>
++        <file>icons/48x48/Undo.png</file>
++        <file>icons/48x48/Redo.png</file>
++        <file>icons/48x48/Cut.png</file>
++        <file>icons/48x48/Copy.png</file>
++        <file>icons/48x48/Paste.png</file>
++        <file>icons/48x48/TextLeft.png</file>
++        <file>icons/48x48/TextRight.png</file>
++        <file>icons/48x48/TextCenter.png</file>
++        <file>icons/48x48/TextJustified.png</file>
++        <file>icons/48x48/TextBold.png</file>
++        <file>icons/48x48/TextUnderlined.png</file>
++        <file>icons/48x48/TextItalic.png</file>
++
++
++
+         <file>icons/cache/32x32/bluepin.png</file>
+         <file>icons/cache/32x32/cito.png</file>
+         <file>icons/cache/32x32/corrected.png</file>
diff --git a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_ygOGzc.bak b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_ygOGzc.bak
new file mode 100644
index 0000000..a096400
--- /dev/null
+++ b/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_ygOGzc.bak
@@ -0,0 +1,374 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -20,6 +20,7 @@
+     helpers/CInputDialog.cpp
+     helpers/CPositionDialog.cpp
+     helpers/CWptIconDialog.cpp
++    helpers/CTextEditWidget.cpp
+     canvas/CCanvas.cpp
+     canvas/CCanvasSetup.cpp
+     canvas/IDrawContext.cpp
+@@ -93,6 +94,7 @@
+     helpers/CInputDialog.h
+     helpers/CPositionDialog.h
+     helpers/CWptIconDialog.h
++    helpers/CTextEditWidget.h
+     canvas/CCanvas.h
+     canvas/CCanvasSetup.h
+     canvas/IDrawContext.h
+@@ -160,6 +162,7 @@
+     helpers/IInputDialog.ui
+     helpers/IPositionDialog.ui
+     helpers/IWptIconDialog.ui
++    helpers/ITextEditWidget.ui
+     canvas/ICanvasSetup.ui
+     dem/IDemList.ui
+     dem/IDemPathSetup.ui
+diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
+--- a/src/gis/CGisListWks.cpp
++++ b/src/gis/CGisListWks.cpp
+@@ -39,8 +39,6 @@
+     menuItem        = new QMenu(this);
+     actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+     actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+-
+-    actionEditDetails->setEnabled(false);
+ }
+ 
+ CGisListWks::~CGisListWks()
+@@ -143,7 +141,14 @@
+ 
+ void CGisListWks::slotEditItem()
+ {
+-
++    IGisItem::mutexItems.lock();
++    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
++    if(gisItem != 0)
++    {
++        QString key = gisItem->getKey();
++        CGisWidget::self().editItemByKey(key);
++    }
++    IGisItem::mutexItems.unlock();
+ }
+ 
+ void CGisListWks::slotDeleteItem()
+diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
+--- a/src/gis/CGisWidget.cpp
++++ b/src/gis/CGisWidget.cpp
+@@ -33,7 +33,9 @@
+     pSelf = this;
+     setupUi(this);
+ 
+-    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
++//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
++    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
++//    treeWks->header()->setCascadingSectionResizes(true);
+ 
+ 
+     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
+--- a/src/gis/IGisItem.cpp
++++ b/src/gis/IGisItem.cpp
+@@ -278,7 +278,7 @@
+     }
+ }
+ 
+-void IGisItem::removeHtml(QString &str)
++QString IGisItem::removeHtml(const QString &str)
+ {
+     QTextDocument html;
+     html.setHtml(str);
+@@ -282,5 +282,5 @@
+ {
+     QTextDocument html;
+     html.setHtml(str);
+-    str = html.toPlainText();
++    return html.toPlainText();
+ }
+diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
+--- a/src/gis/IGisItem.h
++++ b/src/gis/IGisItem.h
+@@ -115,6 +115,8 @@
+ 
+         virtual void edit(){}
+ 
++        static QString removeHtml(const QString &str);
++
+     protected:
+         friend class CGisProject;
+         struct wpt_t;
+@@ -125,7 +127,7 @@
+         QString color2str(const QColor &color);
+         void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+         void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+-        void removeHtml(QString &str);
++
+ 
+ 
+         struct color_t
+diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
+--- a/src/gis/IGisWidget.ui
++++ b/src/gis/IGisWidget.ui
+@@ -43,8 +43,5 @@
+        <height>22</height>
+       </size>
+      </property>
+-     <attribute name="headerVisible">
+-      <bool>false</bool>
+-     </attribute>
+      <column>
+       <property name="text">
+@@ -49,7 +46,7 @@
+      <column>
+       <property name="text">
+-       <string notr="true">1</string>
++       <string notr="true">Name</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+@@ -52,8 +49,8 @@
+       </property>
+      </column>
+      <column>
+       <property name="text">
+-       <string>2</string>
++       <string>State</string>
+       </property>
+      </column>
+     </widget>
+diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
+--- a/src/gis/wpt/CDetailsWpt.cpp
++++ b/src/gis/wpt/CDetailsWpt.cpp
+@@ -23,6 +23,7 @@
+ #include "helpers/CInputDialog.h"
+ #include "helpers/CPositionDialog.h"
+ #include "helpers/CWptIconDialog.h"
++#include "helpers/CTextEditWidget.h"
+ 
+ 
+ #include <QtWidgets>
+@@ -38,6 +39,8 @@
+     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
++    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
++    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
+ }
+ 
+ CDetailsWpt::~CDetailsWpt()
+@@ -151,3 +154,25 @@
+         setupGui();
+     }
+ }
++
++void CDetailsWpt::slotChangeCmt()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getComment());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setComment(dlg.getHtml());
++        setupGui();
++    }
++}
++
++void CDetailsWpt::slotChangeDesc()
++{
++    CTextEditWidget dlg(0);
++    dlg.setHtml(wpt.getDescription());
++    if(dlg.exec() == QDialog::Accepted)
++    {
++        wpt.setDescription(dlg.getHtml());
++        setupGui();
++    }
++}
+diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
+--- a/src/gis/wpt/CDetailsWpt.h
++++ b/src/gis/wpt/CDetailsWpt.h
+@@ -34,6 +34,8 @@
+     private slots:
+         void slotLinkActivated(const QString& link);
+         void slotChangeIcon();
++        void slotChangeCmt();
++        void slotChangeDesc();
+ 
+     private:
+         void setupGui();
+diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
+--- a/src/gis/wpt/CGisItemWpt.cpp
++++ b/src/gis/wpt/CGisItemWpt.cpp
+@@ -18,8 +18,9 @@
+ 
+ #include "gis/wpt/CGisItemWpt.h"
+ #include "gis/wpt/CDetailsWpt.h"
++#include "gis/wpt/CScrOptWpt.h"
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+@@ -21,9 +22,8 @@
+ #include "gis/CGisProject.h"
+ #include "gis/CGisDraw.h"
+ #include "gis/WptIcons.h"
+ #include "canvas/CCanvas.h"
+ #include "mouse/IMouse.h"
+-#include "gis/wpt/CScrOptWpt.h"
+ #include "units/IUnit.h"
+ #include "GeoMath.h"
+ 
+@@ -88,7 +88,7 @@
+ 
+ QString CGisItemWpt::getInfo()
+ {
+-    QString str = getName();
++    QString str = "<p>" + getName() + "</p>";
+ 
+     if(geocache.hasData)
+     {
+@@ -97,10 +97,10 @@
+ 
+     if(wpt.time.isValid())
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+@@ -101,10 +101,10 @@
+ 
+         str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+     }
+ 
+     if(wpt.ele != NOINT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2elevation(wpt.ele, val, unit);
+         str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+@@ -112,9 +112,9 @@
+ 
+     if(proximity != NOFLOAT)
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+@@ -116,7 +116,8 @@
+         QString val, unit;
+         IUnit::self().meter2distance(proximity, val, unit);
+         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+     }
+ 
+-    if(wpt.desc.count())
++    QString desc = removeHtml(wpt.desc);
++    if(desc.count())
+     {
+@@ -122,3 +123,3 @@
+     {
+-        if(!str.isEmpty()) str += "\n";
++        if(!str.isEmpty()) str += "<br/>\n";
+ 
+@@ -124,3 +125,3 @@
+ 
+-        if(wpt.desc.count() < 200)
++        if(desc.count() < 200)
+         {
+@@ -126,5 +127,5 @@
+         {
+-            str += wpt.desc;
++            str += desc;
+         }
+         else
+         {
+@@ -128,8 +129,8 @@
+         }
+         else
+         {
+-            str += wpt.desc.left(197) + "...";
++            str += desc.left(197) + "...";
+         }
+     }
+     else
+     {
+@@ -132,7 +133,7 @@
+         }
+     }
+     else
+     {
+-        QString cmt = wpt.cmt;
++        QString cmt = removeHtml(wpt.cmt);
+         if(cmt.count())
+         {
+@@ -137,6 +138,6 @@
+         if(cmt.count())
+         {
+-            if(!str.isEmpty()) str += "\n";
++            if(!str.isEmpty()) str += "<br/>\n";
+ 
+             if(cmt.count() < 200)
+             {
+@@ -148,6 +149,9 @@
+             }
+         }
+     }
++
++    qDebug() << "-----------------------";
++    qDebug() << str;
+     return str;
+ }
+ 
+@@ -207,6 +211,20 @@
+     setIcon();
+ }
+ 
++void CGisItemWpt::setComment(const QString& str)
++{
++    setText(1,"*");
++    wpt.cmt = str;
++    setToolTip(0,getInfo());
++}
++
++void CGisItemWpt::setDescription(const QString& str)
++{
++    setText(1,"*");
++    wpt.desc = str;
++    setToolTip(0,getInfo());
++}
++
+ void CGisItemWpt::save(QDomNode& gpx)
+ {
+     QDomDocument doc = gpx.ownerDocument();
+diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
+--- a/src/gis/wpt/CGisItemWpt.h
++++ b/src/gis/wpt/CGisItemWpt.h
+@@ -35,6 +35,8 @@
+         void setElevation(qint32 val);
+         void setProximity(qreal val);
+         void setIcon(const QString& name);
++        void setComment(const QString& str);
++        void setDescription(const QString& str);
+ 
+         const QString& getName(){return wpt.name;}
+         QString getInfo();
+diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
+--- a/src/gis/wpt/CScrOptWpt.cpp
++++ b/src/gis/wpt/CScrOptWpt.cpp
+@@ -33,7 +33,7 @@
+     setupUi(this);
+     setOrigin(origin);
+     label->setFont(CMainWindow::self().getMapFont());
+-    label->setText(wpt->getInfo());
++    label->setText(IGisItem::removeHtml(wpt->getInfo()));
+ 
+     anchor = wpt->getPointCloseBy(origin);
+     move(anchor.toPoint() + QPoint(30,30));
diff --git a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_8rXOP9.bak b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_8rXOP9.bak
new file mode 100644
index 0000000..bd92182
--- /dev/null
+++ b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_8rXOP9.bak
@@ -0,0 +1,14 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -20,8 +20,8 @@
+ set(APPLICATION_NAME qmapshack)
+ 
+ set(APPLICATION_VERSION_MAJOR "1")
+-set(APPLICATION_VERSION_MINOR "X")
+-set(APPLICATION_VERSION_PATCH "X")
++set(APPLICATION_VERSION_MINOR "0")
++set(APPLICATION_VERSION_PATCH "0")
+ 
+ add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
+ 
diff --git a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_BKqvxh.bak b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_BKqvxh.bak
new file mode 100644
index 0000000..8fcd592
--- /dev/null
+++ b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_BKqvxh.bak
@@ -0,0 +1,30 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -20,8 +20,8 @@
+ set(APPLICATION_NAME qmapshack)
+ 
+ set(APPLICATION_VERSION_MAJOR "1")
+-set(APPLICATION_VERSION_MINOR "X")
+-set(APPLICATION_VERSION_PATCH "X")
++set(APPLICATION_VERSION_MINOR "0")
++set(APPLICATION_VERSION_PATCH "0")
+ 
+ add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
+ 
+diff --git a/changelog.txt b/changelog.txt
+--- a/changelog.txt
++++ b/changelog.txt
+@@ -1,3 +1,12 @@
++V 1.0.0
++* Update Czech, French, German and Spanish translation
++* Fix dialogs hiding behind main window
++* Fix various application crashes
++* Fix tile cache growing too large
++* Fix cliff polylines in Garmin maps
++* Add device support on Windows
++* Various little GUI optimizations
++
+ V 1.0.beta1
+ * Add support for TwoNav units
+ * Load/Restore images attached to waypoints on devices
diff --git a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_Yt2BGo.bak b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_Yt2BGo.bak
new file mode 100644
index 0000000..5d446f4
--- /dev/null
+++ b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_Yt2BGo.bak
@@ -0,0 +1,11 @@
+diff --git a/src/map/cache/CDiskCache.cpp b/src/map/cache/CDiskCache.cpp
+--- a/src/map/cache/CDiskCache.cpp
++++ b/src/map/cache/CDiskCache.cpp
+@@ -135,6 +135,7 @@
+ 
+     if(tmpSize > maxSize)
+     {
++        files = dir.entryInfoList(QStringList("*.png"), QDir::Files, QDir::Time|QDir::Reversed);
+         // if cache is still too large remove oldest files
+         foreach(const QFileInfo &fileinfo, files)
+         {
diff --git a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_oX1H7k.bak b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_oX1H7k.bak
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_q0CIcf.bak b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_q0CIcf.bak
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_urUEGg.bak b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_urUEGg.bak
new file mode 100644
index 0000000..bd92182
--- /dev/null
+++ b/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_urUEGg.bak
@@ -0,0 +1,14 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -20,8 +20,8 @@
+ set(APPLICATION_NAME qmapshack)
+ 
+ set(APPLICATION_VERSION_MAJOR "1")
+-set(APPLICATION_VERSION_MINOR "X")
+-set(APPLICATION_VERSION_PATCH "X")
++set(APPLICATION_VERSION_MINOR "0")
++set(APPLICATION_VERSION_PATCH "0")
+ 
+ add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
+ 
diff --git a/src/gis/trk/CDetailsTrk.cpp b/.hg/Trashcan/CDetailsTrk_6SCvxa.cpp.bak
similarity index 80%
copy from src/gis/trk/CDetailsTrk.cpp
copy to .hg/Trashcan/CDetailsTrk_6SCvxa.cpp.bak
index 3081cb0..3b22b1f 100644
--- a/src/gis/trk/CDetailsTrk.cpp
+++ b/.hg/Trashcan/CDetailsTrk_6SCvxa.cpp.bak
@@ -16,21 +16,12 @@
 
 **********************************************************************************************/
 
-#include "GeoMath.h"
 #include "gis/trk/CDetailsTrk.h"
-#include "gis/trk/filter/CFilterDelete.h"
-#include "gis/trk/filter/CFilterDouglasPeuker.h"
-#include "gis/trk/filter/CFilterMedian.h"
-#include "gis/trk/filter/CFilterNewDate.h"
-#include "gis/trk/filter/CFilterObscureDate.h"
-#include "gis/trk/filter/CFilterOffsetElevation.h"
-#include "gis/trk/filter/CFilterReplaceElevation.h"
-#include "gis/trk/filter/CFilterReset.h"
-#include "gis/trk/filter/CFilterSpeed.h"
-#include "helpers/CLinksDialog.h"
 #include "helpers/CSettings.h"
 #include "helpers/CTextEditWidget.h"
+#include "helpers/CLinksDialog.h"
 #include "units/IUnit.h"
+#include "GeoMath.h"
 
 #include <QtWidgets>
 #include <proj_api.h>
@@ -40,7 +31,7 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
     , trk(trk)
     , originator(false)
 {
-    setupUi(this);
+    setupUi(this);    
 
     QPixmap icon(16,8);
     for(int i=0; i < TRK_N_COLORS; ++i)
@@ -51,51 +42,6 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
 
     setupGui();
 
-    QTreeWidgetItem * item, * item0;
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/PointHide.png"));
-    item0->setText(0, tr("Reduce visible track points"));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterDouglasPeuker(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterReset(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterDelete(trk, treeFilter));
-
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/SetEle.png"));
-    item0->setText(0, tr("Change elevation of track points"));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterMedian(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterReplaceElevation(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterOffsetElevation(trk, treeFilter));
-
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/Time.png"));
-    item0->setText(0, tr("Change timestamp of track points"));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterNewDate(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterObscureDate(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterSpeed(trk, treeFilter));
-
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/TrkCut.png"));
-    item0->setText(0, tr("Cut track into pieces"));
-
-
     SETTINGS;
     cfg.beginGroup("TrackDetails");
     checkProfile->setChecked(cfg.value("showProfile", true).toBool());
@@ -116,9 +62,8 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
 
     connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
 
-    trk.findWaypointsCloseBy();
-
     slotShowPlots();
+
 }
 
 CDetailsTrk::~CDetailsTrk()
@@ -135,7 +80,7 @@ CDetailsTrk::~CDetailsTrk()
 
 
 void CDetailsTrk::setupGui()
-{
+{    
     if(originator)
     {
         return;
@@ -146,8 +91,6 @@ void CDetailsTrk::setupGui()
     QString str, val, unit;
     bool isReadOnly = trk.isReadOnly();
 
-    tabWidget->widget(2)->setEnabled(!isReadOnly);
-
     if(trk.isTainted())
     {
         labelTainted->show();
@@ -158,7 +101,7 @@ void CDetailsTrk::setupGui()
     }
 
     labelInfo->setText(trk.getInfo());
-    lineName->setEnabled(!isReadOnly);
+    lineName->setEnabled(!isReadOnly);    
     comboColor->setCurrentIndex(trk.getColorIdx());
     comboColor->setEnabled(!isReadOnly);
     toolLock->setChecked(isReadOnly);
@@ -169,6 +112,7 @@ void CDetailsTrk::setupGui()
     {
         foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
         {
+
             QTreeWidgetItem * item = new QTreeWidgetItem();
             item->setTextAlignment(eColNum,Qt::AlignLeft);
             item->setTextAlignment(eColEle,Qt::AlignRight);
@@ -253,6 +197,7 @@ void CDetailsTrk::setupGui()
             item->setText(eColPosition,str);
 
             items << item;
+
         }
     }
 
@@ -264,8 +209,8 @@ void CDetailsTrk::setupGui()
 
     textCmtDesc->document()->clear();
     textCmtDesc->append(IGisItem::createText(isReadOnly, trk.getComment(), trk.getDescription(), trk.getLinks()));
-    textCmtDesc->moveCursor (QTextCursor::Start);
-    textCmtDesc->ensureCursorVisible();
+    textCmtDesc->moveCursor (QTextCursor::Start) ;
+    textCmtDesc->ensureCursorVisible() ;
 
     plotElevation->setTrack(&trk);
     plotDistance->setTrack(&trk);
@@ -345,6 +290,7 @@ void CDetailsTrk::slotChangeReadOnlyMode(bool on)
 {
     trk.setReadOnlyMode(on);
     setupGui();
+
 }
 
 void CDetailsTrk::slotNameChanged(const QString& name)
@@ -364,7 +310,7 @@ void CDetailsTrk::slotNameChanged(const QString& name)
 
 void CDetailsTrk::slotNameChanged()
 {
-    QString name  = lineName->text();
+    QString  name  = lineName->text();
     QString _name_ = trk.getName();
 
     QPalette palette = lineName->palette();
diff --git a/src/gis/trk/CDetailsTrk.cpp b/.hg/Trashcan/CDetailsTrk_8daxWy.cpp.bak
similarity index 80%
copy from src/gis/trk/CDetailsTrk.cpp
copy to .hg/Trashcan/CDetailsTrk_8daxWy.cpp.bak
index 3081cb0..dd6af46 100644
--- a/src/gis/trk/CDetailsTrk.cpp
+++ b/.hg/Trashcan/CDetailsTrk_8daxWy.cpp.bak
@@ -16,21 +16,12 @@
 
 **********************************************************************************************/
 
-#include "GeoMath.h"
 #include "gis/trk/CDetailsTrk.h"
-#include "gis/trk/filter/CFilterDelete.h"
-#include "gis/trk/filter/CFilterDouglasPeuker.h"
-#include "gis/trk/filter/CFilterMedian.h"
-#include "gis/trk/filter/CFilterNewDate.h"
-#include "gis/trk/filter/CFilterObscureDate.h"
-#include "gis/trk/filter/CFilterOffsetElevation.h"
-#include "gis/trk/filter/CFilterReplaceElevation.h"
-#include "gis/trk/filter/CFilterReset.h"
-#include "gis/trk/filter/CFilterSpeed.h"
-#include "helpers/CLinksDialog.h"
 #include "helpers/CSettings.h"
 #include "helpers/CTextEditWidget.h"
+#include "helpers/CLinksDialog.h"
 #include "units/IUnit.h"
+#include "GeoMath.h"
 
 #include <QtWidgets>
 #include <proj_api.h>
@@ -40,7 +31,7 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
     , trk(trk)
     , originator(false)
 {
-    setupUi(this);
+    setupUi(this);    
 
     QPixmap icon(16,8);
     for(int i=0; i < TRK_N_COLORS; ++i)
@@ -51,51 +42,6 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
 
     setupGui();
 
-    QTreeWidgetItem * item, * item0;
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/PointHide.png"));
-    item0->setText(0, tr("Reduce visible track points"));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterDouglasPeuker(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterReset(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterDelete(trk, treeFilter));
-
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/SetEle.png"));
-    item0->setText(0, tr("Change elevation of track points"));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterMedian(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterReplaceElevation(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterOffsetElevation(trk, treeFilter));
-
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/Time.png"));
-    item0->setText(0, tr("Change timestamp of track points"));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterNewDate(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterObscureDate(trk, treeFilter));
-
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterSpeed(trk, treeFilter));
-
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/TrkCut.png"));
-    item0->setText(0, tr("Cut track into pieces"));
-
-
     SETTINGS;
     cfg.beginGroup("TrackDetails");
     checkProfile->setChecked(cfg.value("showProfile", true).toBool());
@@ -116,9 +62,8 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
 
     connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
 
-    trk.findWaypointsCloseBy();
-
     slotShowPlots();
+
 }
 
 CDetailsTrk::~CDetailsTrk()
@@ -135,7 +80,7 @@ CDetailsTrk::~CDetailsTrk()
 
 
 void CDetailsTrk::setupGui()
-{
+{    
     if(originator)
     {
         return;
@@ -146,8 +91,6 @@ void CDetailsTrk::setupGui()
     QString str, val, unit;
     bool isReadOnly = trk.isReadOnly();
 
-    tabWidget->widget(2)->setEnabled(!isReadOnly);
-
     if(trk.isTainted())
     {
         labelTainted->show();
@@ -158,7 +101,7 @@ void CDetailsTrk::setupGui()
     }
 
     labelInfo->setText(trk.getInfo());
-    lineName->setEnabled(!isReadOnly);
+    lineName->setEnabled(!isReadOnly);    
     comboColor->setCurrentIndex(trk.getColorIdx());
     comboColor->setEnabled(!isReadOnly);
     toolLock->setChecked(isReadOnly);
@@ -169,6 +112,7 @@ void CDetailsTrk::setupGui()
     {
         foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
         {
+
             QTreeWidgetItem * item = new QTreeWidgetItem();
             item->setTextAlignment(eColNum,Qt::AlignLeft);
             item->setTextAlignment(eColEle,Qt::AlignRight);
@@ -253,6 +197,7 @@ void CDetailsTrk::setupGui()
             item->setText(eColPosition,str);
 
             items << item;
+
         }
     }
 
@@ -264,8 +209,8 @@ void CDetailsTrk::setupGui()
 
     textCmtDesc->document()->clear();
     textCmtDesc->append(IGisItem::createText(isReadOnly, trk.getComment(), trk.getDescription(), trk.getLinks()));
-    textCmtDesc->moveCursor (QTextCursor::Start);
-    textCmtDesc->ensureCursorVisible();
+    textCmtDesc->moveCursor (QTextCursor::Start) ;
+    textCmtDesc->ensureCursorVisible() ;
 
     plotElevation->setTrack(&trk);
     plotDistance->setTrack(&trk);
@@ -345,6 +290,7 @@ void CDetailsTrk::slotChangeReadOnlyMode(bool on)
 {
     trk.setReadOnlyMode(on);
     setupGui();
+
 }
 
 void CDetailsTrk::slotNameChanged(const QString& name)
@@ -364,7 +310,7 @@ void CDetailsTrk::slotNameChanged(const QString& name)
 
 void CDetailsTrk::slotNameChanged()
 {
-    QString name  = lineName->text();
+    QString  name  = lineName->text();
     QString _name_ = trk.getName();
 
     QPalette palette = lineName->palette();
@@ -398,7 +344,6 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
         {
             trk.setComment(dlg.getHtml());
         }
-        setupGui();
     }
     else if(url.toString() == "description")
     {
@@ -408,7 +353,6 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
         {
             trk.setDescription(dlg.getHtml());
         }
-        setupGui();
     }
     else if(url.toString() == "links")
     {
diff --git a/src/gis/wpt/CDetailsGeoCache.h b/.hg/Trashcan/CDetailsWpt_JkBB6Z.h.bak
similarity index 69%
copy from src/gis/wpt/CDetailsGeoCache.h
copy to .hg/Trashcan/CDetailsWpt_JkBB6Z.h.bak
index e17c45e..2a09d32 100644
--- a/src/gis/wpt/CDetailsGeoCache.h
+++ b/.hg/Trashcan/CDetailsWpt_JkBB6Z.h.bak
@@ -16,28 +16,29 @@
 
 **********************************************************************************************/
 
-#ifndef CDETAILSGEOCACHE_H
-#define CDETAILSGEOCACHE_H
+#ifndef CDETAILSWPT_H
+#define CDETAILSWPT_H
 
-#include "ui_IDetailsGeoCache.h"
 #include <QDialog>
+#include "ui_IDetailsWpt.h"
 
 class CGisItemWpt;
 
-class CDetailsGeoCache : public QDialog, private Ui::IDetailsGeoCache
-{
+class CDetailsWpt : public QDialog, private Ui::IDetailsWpt
+{    
     Q_OBJECT
-public:
-    CDetailsGeoCache(CGisItemWpt& wpt, QWidget * parent);
-    virtual ~CDetailsGeoCache();
+    public:
+        CDetailsWpt(CGisItemWpt& wpt, QWidget * parent);
+        virtual ~CDetailsWpt();
 
-private slots:
-    void slotHintChanged(bool on);
-    void slotLinkClicked(const QUrl& url);
+    private slots:
+        void slotLinkActivated(const QString& link);
+        void slotChangeIcon();
 
-private:
-    CGisItemWpt& wpt;
+    private:
+        void setupGui();
+        CGisItemWpt& wpt;
 };
 
-#endif //CDETAILSGEOCACHE_H
+#endif //CDETAILSWPT_H
 
diff --git a/src/gis/wpt/CDetailsWpt.cpp b/.hg/Trashcan/CDetailsWpt_KUyyGh.cpp.bak
similarity index 52%
copy from src/gis/wpt/CDetailsWpt.cpp
copy to .hg/Trashcan/CDetailsWpt_KUyyGh.cpp.bak
index 1dd8b8a..487ced0 100644
--- a/src/gis/wpt/CDetailsWpt.cpp
+++ b/.hg/Trashcan/CDetailsWpt_KUyyGh.cpp.bak
@@ -16,60 +16,40 @@
 
 **********************************************************************************************/
 
-#include "GeoMath.h"
 #include "gis/wpt/CDetailsWpt.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CElevationDialog.h"
+#include "GeoMath.h"
+#include "units/IUnit.h"
 #include "helpers/CInputDialog.h"
-#include "helpers/CLinksDialog.h"
 #include "helpers/CPositionDialog.h"
-#include "helpers/CTextEditWidget.h"
 #include "helpers/CWptIconDialog.h"
-#include "units/IUnit.h"
+#include "helpers/CTextEditWidget.h"
 
 
 #include <QtWidgets>
-#include <proj_api.h>
 
 CDetailsWpt::CDetailsWpt(CGisItemWpt &wpt, QWidget *parent)
     : QDialog(parent)
     , wpt(wpt)
-    , originator(false)
 {
     setupUi(this);
-    toolAddImage->hide();
-    toolDelImage->hide();
-    photoAlbum->hide();
-
     setupGui();
     connect(labelName, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelPositon, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
-    connect(textCmtDesc, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotLinkActivated(QUrl)));
     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
-    connect(toolLock, SIGNAL(toggled(bool)), this, SLOT(slotChangeReadOnlyMode(bool)));
-
-    connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
-
-    connect(toolAddImage, SIGNAL(clicked()), photoAlbum, SLOT(slotAddImage()));
-    connect(toolDelImage, SIGNAL(clicked()), photoAlbum, SLOT(slotDelImage()));
-    connect(photoAlbum, SIGNAL(sigChanged(QList<CGisItemWpt::image_t>)), this, SLOT(slotChangedImages(QList<CGisItemWpt::image_t>)));
+    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
+    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
 }
 
 CDetailsWpt::~CDetailsWpt()
 {
-}
 
+}
 
 void CDetailsWpt::setupGui()
 {
-    if(originator)
-    {
-        return;
-    }
-    originator = true;
-
     setWindowTitle(wpt.getName());
 
     QString val, unit;
@@ -77,71 +57,49 @@ void CDetailsWpt::setupGui()
     QPointF pos = wpt.getPosition();
     GPS_Math_Deg_To_Str(pos.x(), pos.y(), strPos);
 
-    bool isReadOnly = wpt.isReadOnly();
-
     toolIcon->setIcon(wpt.getIcon());
     toolIcon->setObjectName(wpt.getIconName());
-    labelName->setText(IGisItem::toLink(isReadOnly, "name", wpt.getName(), ""));
-    labelPositon->setText(IGisItem::toLink(isReadOnly, "position", strPos, ""));
+    labelName->setText(QString("<a href='name'>%1</a>").arg(wpt.getName()));
+    labelPositon->setText(QString("<a href='position'>%1</a>").arg(strPos));
 
-    if(wpt.isTainted())
+    if(wpt.getElevation() != NOINT)
     {
-        labelTainted->show();
+        IUnit::self().meter2elevation(wpt.getElevation(), val, unit);
+        labelElevation->setText(QString("<a href='elevation'>%1</a> %2").arg(val).arg(unit));
     }
     else
     {
-        labelTainted->hide();
+        labelElevation->setText(QString("<a href='elevation'>--</a>"));
     }
 
-    if(wpt.getElevation() != NOINT)
+    if(wpt.getProximity() != NOFLOAT)
     {
-        IUnit::self().meter2elevation(wpt.getElevation(), val, unit);
-        labelElevation->setText(IGisItem::toLink(isReadOnly, "elevation", QString("%1 %2").arg(val).arg(unit), ""));
+        IUnit::self().meter2elevation(wpt.getProximity(), val, unit);
+        labelProximity->setText(QString("<a href='proximity'>%1</a> %2").arg(val).arg(unit));
     }
     else
     {
-        labelElevation->setText(IGisItem::toLink(isReadOnly, "elevation", "--", ""));
+        labelProximity->setText(QString("<a href='proximity'>--</a>"));
     }
 
-    if(wpt.getProximity() != NOFLOAT)
+    if(wpt.getComment().isEmpty())
     {
-        IUnit::self().meter2elevation(wpt.getProximity(), val, unit);
-        labelProximity->setText(IGisItem::toLink(isReadOnly, "proximity", QString("%1 %2").arg(val).arg(unit), ""));
+        labelCmt->setText(tr("no comment"));
     }
     else
     {
-        labelProximity->setText(IGisItem::toLink(isReadOnly, "proximity", "--", ""));
+        labelCmt->setText(wpt.getComment());
     }
 
-    if(wpt.getTime().isValid())
+    if(wpt.getDescription().isEmpty())
     {
-        labelTime->setText(IUnit::datetime2string(wpt.getTime(), false, QPointF(pos.x()*DEG_TO_RAD, pos.y()*DEG_TO_RAD)));
+        labelDesc->setText(tr("no description"));
     }
-
-    textCmtDesc->document()->clear();
-    textCmtDesc->append(IGisItem::createText(isReadOnly, wpt.getComment(), wpt.getDescription(), wpt.getLinks()));
-    textCmtDesc->moveCursor (QTextCursor::Start);
-    textCmtDesc->ensureCursorVisible();
-
-    toolLock->setChecked(isReadOnly);
-
-    listHistory->setupHistory(wpt);
-
-    const QList<CGisItemWpt::image_t>& images = wpt.getImages();
-    photoAlbum->reload(images);
-    toolAddImage->hide();
-    toolDelImage->hide();
-
-    if(!isReadOnly)
+    else
     {
-        toolAddImage->show();
-        if(!images.isEmpty())
-        {
-            toolDelImage->show();
-        }
+        labelDesc->setText(wpt.getDescription());
     }
 
-    originator = false;
 }
 
 void CDetailsWpt::slotLinkActivated(const QString& link)
@@ -158,7 +116,7 @@ void CDetailsWpt::slotLinkActivated(const QString& link)
     else if(link == "elevation")
     {
         QVariant var(wpt.getElevation());
-        CElevationDialog dlg(0, var, QVariant(NOINT), wpt.getPosition());
+        CInputDialog dlg(0, tr("Enter new elevation."), var, QVariant(NOINT));
         if(dlg.exec() == QDialog::Accepted)
         {
             wpt.setElevation(var.toInt());
@@ -186,50 +144,8 @@ void CDetailsWpt::slotLinkActivated(const QString& link)
     setupGui();
 }
 
-void CDetailsWpt::slotLinkActivated(const QUrl& url)
-{
-    if(url.toString() == "comment")
-    {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(wpt.getComment());
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setComment(dlg.getHtml());
-        }
-        setupGui();
-    }
-    else if(url.toString() == "description")
-    {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(wpt.getDescription());
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setDescription(dlg.getHtml());
-        }
-        setupGui();
-    }
-    else if(url.toString() == "links")
-    {
-        QList<IGisItem::link_t> links = wpt.getLinks();
-        CLinksDialog dlg(links, 0);
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setLinks(links);
-        }
-        setupGui();
-    }
-    else
-    {
-        QDesktopServices::openUrl(url);
-    }
-}
-
 void CDetailsWpt::slotChangeIcon()
 {
-    if(wpt.isReadOnly())
-    {
-        return;
-    }
 
     CWptIconDialog dlg(toolIcon);
     if(dlg.exec() == QDialog::Accepted)
@@ -239,15 +155,24 @@ void CDetailsWpt::slotChangeIcon()
     }
 }
 
-
-void CDetailsWpt::slotChangeReadOnlyMode(bool on)
+void CDetailsWpt::slotChangeCmt()
 {
-    wpt.setReadOnlyMode(on);
-    setupGui();
+    CTextEditWidget dlg(0);
+    dlg.setHtml(wpt.getComment());
+    if(dlg.exec() == QDialog::Accepted)
+    {
+        wpt.setComment(dlg.getHtml());
+        setupGui();
+    }
 }
 
-void CDetailsWpt::slotChangedImages(const QList<CGisItemWpt::image_t>& images)
+void CDetailsWpt::slotChangeDesc()
 {
-    wpt.setImages(images);
-    setupGui();
+    CTextEditWidget dlg(0);
+    dlg.setHtml(wpt.getDescription());
+    if(dlg.exec() == QDialog::Accepted)
+    {
+        wpt.setDescription(dlg.getHtml());
+        setupGui();
+    }
 }
diff --git a/src/gis/wpt/CDetailsWpt.cpp b/.hg/Trashcan/CDetailsWpt_VqnTW1.cpp.bak
similarity index 50%
copy from src/gis/wpt/CDetailsWpt.cpp
copy to .hg/Trashcan/CDetailsWpt_VqnTW1.cpp.bak
index 1dd8b8a..4a2b8fe 100644
--- a/src/gis/wpt/CDetailsWpt.cpp
+++ b/.hg/Trashcan/CDetailsWpt_VqnTW1.cpp.bak
@@ -16,60 +16,37 @@
 
 **********************************************************************************************/
 
-#include "GeoMath.h"
 #include "gis/wpt/CDetailsWpt.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CElevationDialog.h"
+#include "GeoMath.h"
+#include "units/IUnit.h"
 #include "helpers/CInputDialog.h"
-#include "helpers/CLinksDialog.h"
 #include "helpers/CPositionDialog.h"
-#include "helpers/CTextEditWidget.h"
 #include "helpers/CWptIconDialog.h"
-#include "units/IUnit.h"
 
 
 #include <QtWidgets>
-#include <proj_api.h>
 
 CDetailsWpt::CDetailsWpt(CGisItemWpt &wpt, QWidget *parent)
     : QDialog(parent)
     , wpt(wpt)
-    , originator(false)
 {
     setupUi(this);
-    toolAddImage->hide();
-    toolDelImage->hide();
-    photoAlbum->hide();
-
     setupGui();
     connect(labelName, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelPositon, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
-    connect(textCmtDesc, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotLinkActivated(QUrl)));
     connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
-    connect(toolLock, SIGNAL(toggled(bool)), this, SLOT(slotChangeReadOnlyMode(bool)));
-
-    connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
-
-    connect(toolAddImage, SIGNAL(clicked()), photoAlbum, SLOT(slotAddImage()));
-    connect(toolDelImage, SIGNAL(clicked()), photoAlbum, SLOT(slotDelImage()));
-    connect(photoAlbum, SIGNAL(sigChanged(QList<CGisItemWpt::image_t>)), this, SLOT(slotChangedImages(QList<CGisItemWpt::image_t>)));
 }
 
 CDetailsWpt::~CDetailsWpt()
 {
-}
 
+}
 
 void CDetailsWpt::setupGui()
 {
-    if(originator)
-    {
-        return;
-    }
-    originator = true;
-
     setWindowTitle(wpt.getName());
 
     QString val, unit;
@@ -77,71 +54,49 @@ void CDetailsWpt::setupGui()
     QPointF pos = wpt.getPosition();
     GPS_Math_Deg_To_Str(pos.x(), pos.y(), strPos);
 
-    bool isReadOnly = wpt.isReadOnly();
-
     toolIcon->setIcon(wpt.getIcon());
     toolIcon->setObjectName(wpt.getIconName());
-    labelName->setText(IGisItem::toLink(isReadOnly, "name", wpt.getName(), ""));
-    labelPositon->setText(IGisItem::toLink(isReadOnly, "position", strPos, ""));
+    labelName->setText(QString("<a href='name'>%1</a>").arg(wpt.getName()));
+    labelPositon->setText(QString("<a href='position'>%1</a>").arg(strPos));
 
-    if(wpt.isTainted())
+    if(wpt.getElevation() != NOINT)
     {
-        labelTainted->show();
+        IUnit::self().meter2elevation(wpt.getElevation(), val, unit);
+        labelElevation->setText(QString("<a href='elevation'>%1</a> %2").arg(val).arg(unit));
     }
     else
     {
-        labelTainted->hide();
+        labelElevation->setText(QString("<a href='elevation'>--</a>"));
     }
 
-    if(wpt.getElevation() != NOINT)
+    if(wpt.getProximity() != NOFLOAT)
     {
-        IUnit::self().meter2elevation(wpt.getElevation(), val, unit);
-        labelElevation->setText(IGisItem::toLink(isReadOnly, "elevation", QString("%1 %2").arg(val).arg(unit), ""));
+        IUnit::self().meter2elevation(wpt.getProximity(), val, unit);
+        labelProximity->setText(QString("<a href='proximity'>%1</a> %2").arg(val).arg(unit));
     }
     else
     {
-        labelElevation->setText(IGisItem::toLink(isReadOnly, "elevation", "--", ""));
+        labelProximity->setText(QString("<a href='proximity'>--</a>"));
     }
 
-    if(wpt.getProximity() != NOFLOAT)
+    if(wpt.getComment().isEmpty())
     {
-        IUnit::self().meter2elevation(wpt.getProximity(), val, unit);
-        labelProximity->setText(IGisItem::toLink(isReadOnly, "proximity", QString("%1 %2").arg(val).arg(unit), ""));
+        labelCmt->setText(tr("no comment"));
     }
     else
     {
-        labelProximity->setText(IGisItem::toLink(isReadOnly, "proximity", "--", ""));
+        labelCmt->setText(wpt.getComment());
     }
 
-    if(wpt.getTime().isValid())
+    if(wpt.getDescription().isEmpty())
     {
-        labelTime->setText(IUnit::datetime2string(wpt.getTime(), false, QPointF(pos.x()*DEG_TO_RAD, pos.y()*DEG_TO_RAD)));
+        labelDesc->setText(tr("no description"));
     }
-
-    textCmtDesc->document()->clear();
-    textCmtDesc->append(IGisItem::createText(isReadOnly, wpt.getComment(), wpt.getDescription(), wpt.getLinks()));
-    textCmtDesc->moveCursor (QTextCursor::Start);
-    textCmtDesc->ensureCursorVisible();
-
-    toolLock->setChecked(isReadOnly);
-
-    listHistory->setupHistory(wpt);
-
-    const QList<CGisItemWpt::image_t>& images = wpt.getImages();
-    photoAlbum->reload(images);
-    toolAddImage->hide();
-    toolDelImage->hide();
-
-    if(!isReadOnly)
+    else
     {
-        toolAddImage->show();
-        if(!images.isEmpty())
-        {
-            toolDelImage->show();
-        }
+        labelDesc->setText(wpt.getDescription());
     }
 
-    originator = false;
 }
 
 void CDetailsWpt::slotLinkActivated(const QString& link)
@@ -158,7 +113,7 @@ void CDetailsWpt::slotLinkActivated(const QString& link)
     else if(link == "elevation")
     {
         QVariant var(wpt.getElevation());
-        CElevationDialog dlg(0, var, QVariant(NOINT), wpt.getPosition());
+        CInputDialog dlg(0, tr("Enter new elevation."), var, QVariant(NOINT));
         if(dlg.exec() == QDialog::Accepted)
         {
             wpt.setElevation(var.toInt());
@@ -186,50 +141,8 @@ void CDetailsWpt::slotLinkActivated(const QString& link)
     setupGui();
 }
 
-void CDetailsWpt::slotLinkActivated(const QUrl& url)
-{
-    if(url.toString() == "comment")
-    {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(wpt.getComment());
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setComment(dlg.getHtml());
-        }
-        setupGui();
-    }
-    else if(url.toString() == "description")
-    {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(wpt.getDescription());
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setDescription(dlg.getHtml());
-        }
-        setupGui();
-    }
-    else if(url.toString() == "links")
-    {
-        QList<IGisItem::link_t> links = wpt.getLinks();
-        CLinksDialog dlg(links, 0);
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setLinks(links);
-        }
-        setupGui();
-    }
-    else
-    {
-        QDesktopServices::openUrl(url);
-    }
-}
-
 void CDetailsWpt::slotChangeIcon()
 {
-    if(wpt.isReadOnly())
-    {
-        return;
-    }
 
     CWptIconDialog dlg(toolIcon);
     if(dlg.exec() == QDialog::Accepted)
@@ -238,16 +151,3 @@ void CDetailsWpt::slotChangeIcon()
         setupGui();
     }
 }
-
-
-void CDetailsWpt::slotChangeReadOnlyMode(bool on)
-{
-    wpt.setReadOnlyMode(on);
-    setupGui();
-}
-
-void CDetailsWpt::slotChangedImages(const QList<CGisItemWpt::image_t>& images)
-{
-    wpt.setImages(images);
-    setupGui();
-}
diff --git a/src/gis/wpt/CDetailsGeoCache.h b/.hg/Trashcan/CDetailsWpt_wgDUq1.h.bak
similarity index 66%
copy from src/gis/wpt/CDetailsGeoCache.h
copy to .hg/Trashcan/CDetailsWpt_wgDUq1.h.bak
index e17c45e..fe76a7c 100644
--- a/src/gis/wpt/CDetailsGeoCache.h
+++ b/.hg/Trashcan/CDetailsWpt_wgDUq1.h.bak
@@ -16,28 +16,31 @@
 
 **********************************************************************************************/
 
-#ifndef CDETAILSGEOCACHE_H
-#define CDETAILSGEOCACHE_H
+#ifndef CDETAILSWPT_H
+#define CDETAILSWPT_H
 
-#include "ui_IDetailsGeoCache.h"
 #include <QDialog>
+#include "ui_IDetailsWpt.h"
 
 class CGisItemWpt;
 
-class CDetailsGeoCache : public QDialog, private Ui::IDetailsGeoCache
-{
+class CDetailsWpt : public QDialog, private Ui::IDetailsWpt
+{    
     Q_OBJECT
-public:
-    CDetailsGeoCache(CGisItemWpt& wpt, QWidget * parent);
-    virtual ~CDetailsGeoCache();
-
-private slots:
-    void slotHintChanged(bool on);
-    void slotLinkClicked(const QUrl& url);
-
-private:
-    CGisItemWpt& wpt;
+    public:
+        CDetailsWpt(CGisItemWpt& wpt, QWidget * parent);
+        virtual ~CDetailsWpt();
+
+    private slots:
+        void slotLinkActivated(const QString& link);
+        void slotChangeIcon();
+        void slotChangeCmt();
+        void slotChangeDesc();
+
+    private:
+        void setupGui();
+        CGisItemWpt& wpt;
 };
 
-#endif //CDETAILSGEOCACHE_H
+#endif //CDETAILSWPT_H
 
diff --git a/src/map/cache/CDiskCache.cpp b/.hg/Trashcan/CDiskCache_ZGaMAX.cpp.bak
similarity index 93%
copy from src/map/cache/CDiskCache.cpp
copy to .hg/Trashcan/CDiskCache_ZGaMAX.cpp.bak
index c483a98..c3a1b7b 100644
--- a/src/map/cache/CDiskCache.cpp
+++ b/.hg/Trashcan/CDiskCache_ZGaMAX.cpp.bak
@@ -125,6 +125,7 @@ void CDiskCache::slotCleanup()
             table.remove(hash);
             cache.remove(hash);
             QFile::remove(fileinfo.absoluteFilePath());
+            qDebug() << "remove old tile" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
         }
         else
         {
@@ -142,11 +143,11 @@ void CDiskCache::slotCleanup()
             cache.remove(hash);
             QFile::remove(fileinfo.absoluteFilePath());
 
-            qDebug() << "remove" << fileinfo.absoluteFilePath();
+            qDebug() << "remove" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
 
-            size -= fileinfo.size();
+            tmpSize -= fileinfo.size();
 
-            if(size < maxSize)
+            if(tmpSize < maxSize)
             {
                 break;
             }
diff --git a/src/map/cache/CDiskCache.cpp b/.hg/Trashcan/CDiskCache_ceXfpe.cpp.bak
similarity index 91%
copy from src/map/cache/CDiskCache.cpp
copy to .hg/Trashcan/CDiskCache_ceXfpe.cpp.bak
index c483a98..7b8cf5f 100644
--- a/src/map/cache/CDiskCache.cpp
+++ b/.hg/Trashcan/CDiskCache_ceXfpe.cpp.bak
@@ -125,6 +125,7 @@ void CDiskCache::slotCleanup()
             table.remove(hash);
             cache.remove(hash);
             QFile::remove(fileinfo.absoluteFilePath());
+            qDebug() << "remove old tile" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
         }
         else
         {
@@ -134,6 +135,7 @@ void CDiskCache::slotCleanup()
 
     if(tmpSize > maxSize)
     {
+        files = dir.entryInfoList(QStringList("*.png"), QDir::Files, QDir::Time|QDir::Reversed);
         // if cache is still too large remove oldest files
         foreach(const QFileInfo &fileinfo, files)
         {
@@ -142,11 +144,11 @@ void CDiskCache::slotCleanup()
             cache.remove(hash);
             QFile::remove(fileinfo.absoluteFilePath());
 
-            qDebug() << "remove" << fileinfo.absoluteFilePath();
+            qDebug() << "remove" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
 
-            size -= fileinfo.size();
+            tmpSize -= fileinfo.size();
 
-            if(size < maxSize)
+            if(tmpSize < maxSize)
             {
                 break;
             }
diff --git a/src/gis/trk/CGisItemTrk.cpp b/.hg/Trashcan/CGisItemTrk_RakRPD.cpp.bak
similarity index 93%
copy from src/gis/trk/CGisItemTrk.cpp
copy to .hg/Trashcan/CGisItemTrk_RakRPD.cpp.bak
index fba2070..4129b73 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/.hg/Trashcan/CGisItemTrk_RakRPD.cpp.bak
@@ -156,6 +156,7 @@ CGisItemTrk::CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject *project, int
     *this = parentTrk;
     key.project = project->getKey();
     key.device  = project->getDeviceKey();
+    registeredPlots.clear();
 
     if(clone)
     {
@@ -204,6 +205,25 @@ CGisItemTrk::CGisItemTrk(const QDomNode& xml, IGisProject *project)
     updateDecoration(eMarkNone, eMarkNone);
 }
 
+CGisItemTrk::CGisItemTrk(const QString& filename, IGisProject * project)
+    : IGisItem(project, eTypeTrk, project->childCount())
+    , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , drawMode(eDrawNormal)
+    , mouseMoveFocus(0)
+    , mouseClickFocus(0)
+{
+    // --- start read and process data ----
+    setColor(penForeground.color());
+    if(!readTwoNav(filename))
+    {
+        throw -1;
+    }
+    // --- stop read and process data ----
+
+    setupHistory();
+    updateDecoration(eMarkNone, eMarkNone);
+}
+
 CGisItemTrk::CGisItemTrk(const history_t& hist, IGisProject * project)
     : IGisItem(project, eTypeTrk, project->childCount())
     , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
@@ -436,7 +456,14 @@ QString CGisItemTrk::getInfoRange()
 QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
 {
     QString str, val1, unit1;
-    str += IUnit::datetime2string(pt.time, false, QPointF(pt.lon, pt.lat) * DEG_TO_RAD) + "\n";
+    if(totalElapsedSeconds != 0)
+    {
+        str += IUnit::datetime2string(pt.time, false, QPointF(pt.lon, pt.lat) * DEG_TO_RAD) + "\n";
+    }
+    else
+    {
+        str += "\n";
+    }
     IUnit::self().meter2elevation(pt.ele, val1, unit1);
     str += QObject::tr("Ele.: %1 %2").arg(val1).arg(unit1);
     if(pt.slope1 != NOFLOAT)
@@ -536,6 +563,7 @@ QPointF CGisItemTrk::getPointCloseBy(const QPoint& screenPos)
 }
 
 
+#define WINDOW 25
 
 void CGisItemTrk::deriveSecondaryData()
 {
@@ -696,13 +724,13 @@ void CGisItemTrk::deriveSecondaryData()
             while(n>0)
             {
                 trkpt_t & trkpt2 = seg.pts[n];
-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT))
+                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT) || (!trkpt2.time.isValid()))
                 {
                     n--;
                     continue;
                 }
 
-                if(trkpt.distance - trkpt2.distance >= 25)
+                if(trkpt.distance - trkpt2.distance >= WINDOW)
                 {
                     d1 = trkpt2.distance;
                     e1 = trkpt2.ele;
@@ -725,7 +753,7 @@ void CGisItemTrk::deriveSecondaryData()
                     continue;
                 }
 
-                if(trkpt2.distance - trkpt.distance >= 25)
+                if(trkpt2.distance - trkpt.distance >= WINDOW)
                 {
                     d2 = trkpt2.distance;
                     e2 = trkpt2.ele;
@@ -741,11 +769,13 @@ void CGisItemTrk::deriveSecondaryData()
 
             if((t2 - t1) > 0)
             {
-                trkpt.speed    = (d2 - d1) / (t2 - t1);
+                trkpt.speed         = (d2 - d1) / (t2 - t1);
+                trkpt.rateAscent    = (e2 - e1) / (t2 - t1);
             }
             else
             {
-                trkpt.speed = NOFLOAT;
+                trkpt.speed         = NOFLOAT;
+                trkpt.rateAscent    = NOFLOAT;
             }
         }
     }
@@ -1289,7 +1319,11 @@ void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
         // create info box
         int w = rectText.width()  + 5 + 5;
-        int h = rectText.height() + 5 + 5 + 2*(fm.height() + 8);
+        int h = rectText.height() + 5 + (fm.height() + 8);
+        if(totalElapsedSeconds != 0)
+        {
+            h += 5 + fm.height() + 8;
+        }
 
 
         QRect box(0, 0, w, h);
@@ -1314,40 +1348,54 @@ void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
         p.save();
         p.translate(box.topLeft());
+
         // draw progress bar distance
         p.translate(5,5);
-        QRect rectBar1(0,0,rectText.width(), 5);
-        p.setPen(Qt::black);
-        p.setBrush(Qt::NoBrush);
+        QRect rectBar1(0,0,rectText.width(), fm.height());
+        p.setPen(QColor(150,150,255));
+        p.setBrush(QColor(150,150,255));
         p.drawRect(rectBar1);
         qreal d = mouseMoveFocus->distance * rectBar1.width() / totalDistance;
-        p.drawRect(d-1,-1, 3, 7);
+        p.setPen(QColor(150,255,150));
+        p.setBrush(QColor(150,255,150));
+        p.drawRect(0,0,d,fm.height());
+
 
         IUnit::self().meter2distance(mouseMoveFocus->distance, val1, unit1);
         IUnit::self().meter2distance(totalDistance - mouseMoveFocus->distance, val2, unit2);
         p.setPen(Qt::darkBlue);
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignLeft, QString("%1%2").arg(val1).arg(unit1));
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignCenter, QString("%1%").arg(mouseMoveFocus->distance * 100 / totalDistance, 0, 'f', 0));
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignRight, QString("%1%2").arg(val2).arg(unit2));
+        p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignLeft, QString("%1%2").arg(val1).arg(unit1));
+        p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignCenter, QString("%1%").arg(mouseMoveFocus->distance * 100 / totalDistance, 0, 'f', 0));
+        p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignRight, QString("%1%2").arg(val2).arg(unit2));
 
         // draw progress bar time
-        p.translate(0,fm.height() + 8);
-        QRect rectBar2(0,0,rectText.width(), 5);
-        p.setPen(Qt::black);
-        p.setBrush(Qt::NoBrush);
-        p.drawRect(rectBar2);
-        qreal t = mouseMoveFocus->elapsedSecondsMoving * rectBar2.width() / totalElapsedSecondsMoving;
-        p.drawRect(t-1,-1, 3, 7);
-
-        IUnit::self().seconds2time(mouseMoveFocus->elapsedSecondsMoving, val1, unit1);
-        IUnit::self().seconds2time(totalElapsedSecondsMoving - mouseMoveFocus->elapsedSecondsMoving, val2, unit2);
-        p.setPen(Qt::darkBlue);
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignLeft, QString("%1%2").arg(val1).arg(unit1));
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignCenter, QString("%1%").arg(mouseMoveFocus->elapsedSecondsMoving * 100 / totalElapsedSecondsMoving, 0, 'f', 0));
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignRight, QString("%1%2").arg(val2).arg(unit2));
-
+        if(totalElapsedSeconds != 0)
+        {
+            p.translate(0,fm.height() + 5);
+            QRect rectBar2(0,0,rectText.width(), fm.height());
+            p.setPen(QColor(150,150,255));
+            p.setBrush(QColor(150,150,255));
+            p.drawRect(rectBar2);
+            qreal t = mouseMoveFocus->elapsedSecondsMoving * rectBar2.width() / totalElapsedSecondsMoving;
+            p.setPen(QColor(150,255,150));
+            p.setBrush(QColor(150,255,150));
+            p.drawRect(0,0,t,fm.height());
+
+            IUnit::self().seconds2time(mouseMoveFocus->elapsedSecondsMoving, val1, unit1);
+            IUnit::self().seconds2time(totalElapsedSecondsMoving - mouseMoveFocus->elapsedSecondsMoving, val2, unit2);
+            p.setPen(Qt::darkBlue);
+            p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignLeft, QString("%1%2").arg(val1).arg(unit1));
+            p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignCenter, QString("%1%").arg(mouseMoveFocus->elapsedSecondsMoving * 100 / totalElapsedSecondsMoving, 0, 'f', 0));
+            p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignRight, QString("%1%2").arg(val2).arg(unit2));
+
+            p.translate(0,fm.height() + 5);
+        }
+        else
+        {
+            p.translate(0, 5);
+        }
         // draw text
-        p.translate(0,fm.height() + 8);
+        p.translate(0, 3);
         p.setPen(Qt::darkBlue);
         p.drawText(rectText, Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap,str);
 
diff --git a/src/gis/trk/CGisItemTrk.h b/.hg/Trashcan/CGisItemTrk_jYp8hv.h.bak
similarity index 92%
copy from src/gis/trk/CGisItemTrk.h
copy to .hg/Trashcan/CGisItemTrk_jYp8hv.h.bak
index d0de51d..046c779 100644
--- a/src/gis/trk/CGisItemTrk.h
+++ b/.hg/Trashcan/CGisItemTrk_jYp8hv.h.bak
@@ -32,6 +32,7 @@ class CDetailsTrk;
 class CScrOptTrk;
 class QSqlDatabase;
 class CQlgtTrack;
+class QDir;
 
 #define TRK_N_COLORS 17
 
@@ -100,28 +101,61 @@ public:
      */
     CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project);
     /**
-       @brief CGisItemTrk
+       @brief Clone QLandkarte GT track
        @param trk1
      */
     CGisItemTrk(const CQlgtTrack& trk1);
+    /**
+       @brief Load track from file (e.g. TwoNav *trk)
+       @param filename
+       @param project
+     */
+    CGisItemTrk(const QString& filename, IGisProject * project);
+
     virtual ~CGisItemTrk();
 
+    /**
+       @brief Save track to GPX tree
+       @param gpx   The <gpx> node to append by the track
+     */
+    void save(QDomNode& gpx);
+    /**
+       @brief Save track to TwoNav track file
+       @param dir   the path to store the file
+     */
+    bool saveTwoNav(const QString& filename);
+    /**
+       @brief Read serialized track from a binary data stream
+       @param stream  the data stream to read from
+       @return A reference to the stream
+     */
     QDataStream& operator<<(QDataStream& stream);
+    /**
+       @brief Serialize track into a binary data stream
+       @param stream  the data stream to write to.
+       @return A reference to the stream
+     */
     QDataStream& operator>>(QDataStream& stream);
 
     const QString& getName() const
     {
         return trk.name;
     }
-    int getColorIdx()
+    int getColorIdx() const
     {
         return colorIdx;
     }
+
+    const QColor& getColor() const
+    {
+        return color;
+    }
+
     QString getInfo() const;
     QString getInfoRange();
     QString getInfoTrkPt(const trkpt_t& pt);
     QString getInfoProgress(const trkpt_t& pt);
-    quint32 getTotalElapsedSeconds()
+    quint32 getTotalElapsedSeconds() const
     {
         return totalElapsedSeconds;
     }
@@ -163,8 +197,6 @@ public:
     void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
     void drawHighlight(QPainter& p);
     void drawRange(QPainter& p);
-    void save(QDomNode& gpx);
-
 
     /**
        @brief Switch user focus on and off.
@@ -373,6 +405,12 @@ private:
        @param trk   The track structure to fill
      */
     void readTrk(const QDomNode& xml, trk_t& trk);
+
+    /**
+       @brief Restore track from TwoNav *trk file
+       @param filename
+     */
+    bool readTwoNav(const QString& filename);
     /**
        @brief Derive secondary data from the track data
 
@@ -444,6 +482,8 @@ public:
             slope1          = NOFLOAT;
             slope2          = NOFLOAT;
             speed           = NOFLOAT;
+            rateAscent      = NOFLOAT;
+            rateDescent     = NOFLOAT;
         }
 
         enum flag_e
@@ -475,6 +515,10 @@ public:
         qreal elapsedSeconds;
         /// the seconds since the start of the track with moving speed
         qreal elapsedSecondsMoving;
+
+        qreal rateAscent;
+
+        qreal rateDescent;
     };
 
     struct trkseg_t
diff --git a/.hg/Trashcan/CGisItemWpt_dhk314.cpp.bak b/.hg/Trashcan/CGisItemWpt_dhk314.cpp.bak
new file mode 100644
index 0000000..c731a21
--- /dev/null
+++ b/.hg/Trashcan/CGisItemWpt_dhk314.cpp.bak
@@ -0,0 +1,458 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/wpt/CDetailsWpt.h"
+#include "gis/CGisProject.h"
+#include "gis/CGisDraw.h"
+#include "gis/WptIcons.h"
+#include "canvas/CCanvas.h"
+#include "mouse/IMouse.h"
+#include "gis/wpt/CScrOptWpt.h"
+#include "units/IUnit.h"
+#include "GeoMath.h"
+
+
+#include <QtWidgets>
+#include <QtXml>
+
+QString CGisItemWpt::keyUserFocus;
+
+CGisItemWpt::CGisItemWpt(const QDomNode &xml, CGisProject *parent)
+    : IGisItem(parent)
+    , proximity(NOFLOAT)
+    , posScreen(NOPOINTF)
+{
+    // --- start read and process data ----
+    readWpt(xml, wpt);
+    // decode some well known extensions
+    if(xml.namedItem("extensions").isElement())
+    {        
+        const QDomNode& ext = xml.namedItem("extensions");
+        readXml(ext, "ql:key", key);
+
+        const QDomNode& wptx1 = ext.namedItem("wptx1:WaypointExtension");
+        readXml(wptx1, "wptx1:Proximity", proximity);
+
+        const QDomNode& xmlCache = ext.namedItem("cache");
+        if(!xmlCache.isNull())
+        {
+            // read OC cache extensions
+        }
+    }
+
+    const QDomNode& xmlCache = xml.namedItem("groundspeak:cache");
+    if(!xmlCache.isNull() && !geocache.hasData)
+    {
+        readGcExt(xmlCache);
+    }
+    // --- stop read and process data ----
+
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
+
+    setText(0, wpt.name);
+    setIcon();
+    setToolTip(0, getInfo());
+    genKey();
+}
+
+CGisItemWpt::~CGisItemWpt()
+{
+
+}
+
+void CGisItemWpt::genKey()
+{
+    if(key.isEmpty())
+    {
+        QCryptographicHash md5(QCryptographicHash::Md5);
+        md5.addData((const char*)&wpt, sizeof(wpt));
+        key = md5.result().toHex();
+    }
+}
+
+QString CGisItemWpt::getInfo()
+{
+    QString str = getName();
+
+    if(geocache.hasData)
+    {
+        str += QString(" %4 (%1, D %2, T %3)").arg(geocache.container).arg(geocache.difficulty, 0,'f',1).arg(geocache.terrain, 0,'f',1).arg(geocache.name);
+    }
+
+    if(wpt.time.isValid())
+    {
+        if(!str.isEmpty()) str += "\n";
+
+        str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+    }
+
+    if(wpt.ele != NOINT)
+    {
+        if(!str.isEmpty()) str += "\n";
+        QString val, unit;
+        IUnit::self().meter2elevation(wpt.ele, val, unit);
+        str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+    }
+
+    if(proximity != NOFLOAT)
+    {
+        if(!str.isEmpty()) str += "\n";
+        QString val, unit;
+        IUnit::self().meter2distance(proximity, val, unit);
+        str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+    }
+
+    if(wpt.desc.count())
+    {
+        if(!str.isEmpty()) str += "\n";
+
+        if(wpt.desc.count() < 200)
+        {
+            str += wpt.desc;
+        }
+        else
+        {
+            str += wpt.desc.left(197) + "...";
+        }
+    }
+    else
+    {
+        QString cmt = wpt.cmt;
+        if(cmt.count())
+        {
+            if(!str.isEmpty()) str += "\n";
+
+            if(cmt.count() < 200)
+            {
+                str += cmt;
+            }
+            else
+            {
+                str += cmt.left(197) + "...";
+            }
+        }
+    }
+    return str;
+}
+
+IScrOpt * CGisItemWpt::getScreenOptions(const QPoint& origin, IMouse * mouse)
+{
+    return new CScrOptWpt(this, origin, mouse);
+}
+
+void CGisItemWpt::setIcon()
+{
+    if(geocache.hasData)
+    {
+        icon = getWptIconByName(geocache.type, focus);
+    }
+    else
+    {
+        icon = getWptIconByName(wpt.sym, focus);
+    }
+
+    QTreeWidgetItem::setIcon(0,icon);
+}
+
+void CGisItemWpt::setName(const QString& str)
+{
+    setText(1, "*");
+    setText(0, str);
+    wpt.name = str;
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setPosition(const QPointF& pos)
+{
+    setText(1,"*");
+    wpt.lon = pos.x();
+    wpt.lat = pos.y();
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setElevation(qint32 val)
+{
+    setText(1,"*");
+    wpt.ele = val;
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setProximity(qreal val)
+{
+    setText(1,"*");
+    proximity = val;
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setIcon(const QString& name)
+{
+    setText(1,"*");
+    wpt.sym = name;
+    setIcon();
+}
+
+void CGisItemWpt::save(QDomNode& gpx)
+{
+    QDomDocument doc = gpx.ownerDocument();
+
+    QDomElement xmlWpt = doc.createElement("wpt");
+    gpx.appendChild(xmlWpt);
+    writeWpt(xmlWpt, wpt);
+
+    // write the key as extension tag
+    QDomElement xmlExt  = doc.createElement("extensions");
+    xmlWpt.appendChild(xmlExt);
+    writeXml(xmlExt, "ql:key", key);
+
+    // write other well known extensions
+    QDomElement wptx1  = doc.createElement("wptx1:WaypointExtension");
+    xmlExt.appendChild(wptx1);
+    writeXml(wptx1, "wptx1:Proximity", proximity);
+
+    if(geocache.hasData && geocache.service == eGC)
+    {
+        QDomElement xmlCache = doc.createElement("groundspeak:cache");
+        writeGcExt(xmlCache);
+        xmlWpt.appendChild(xmlCache);
+    }
+}
+
+void CGisItemWpt::readGcExt(const QDomNode& xmlCache)
+{
+    geocache.service = eGC;
+    const QDomNamedNodeMap& attr = xmlCache.attributes();
+    geocache.id = attr.namedItem("id").nodeValue().toInt();
+
+    geocache.archived   = attr.namedItem("archived").nodeValue().toLocal8Bit() == "True";
+    geocache.available  = attr.namedItem("available").nodeValue().toLocal8Bit() == "True";
+    if(geocache.archived)
+    {
+        geocache.status = QObject::tr("Archived");
+    }
+    else if(geocache.available)
+    {
+        geocache.status = QObject::tr("Available");
+    }
+    else
+    {
+        geocache.status = QObject::tr("Not Available");
+    }
+
+    readXml(xmlCache, "groundspeak:name", geocache.name);
+    readXml(xmlCache, "groundspeak:placed_by", geocache.owner);
+    readXml(xmlCache, "groundspeak:type", geocache.type);
+    readXml(xmlCache, "groundspeak:container", geocache.container);
+    readXml(xmlCache, "groundspeak:difficulty", geocache.difficulty);
+    readXml(xmlCache, "groundspeak:terrain", geocache.terrain);
+    readXml(xmlCache, "groundspeak:short_description", geocache.shortDesc);
+    readXml(xmlCache, "groundspeak:long_description", geocache.longDesc);
+    readXml(xmlCache, "groundspeak:encoded_hints", geocache.hint);
+    readXml(xmlCache, "groundspeak:country", geocache.country);
+    readXml(xmlCache, "groundspeak:state", geocache.state);
+
+    const QDomNodeList& logs = xmlCache.toElement().elementsByTagName("groundspeak:log");
+    uint N = logs.count();
+
+    for(uint n = 0; n < N; ++n)
+    {
+        const QDomNode& xmlLog = logs.item(n);
+        const QDomNamedNodeMap& attr = xmlLog.attributes();
+
+        geocachelog_t log;
+        log.id = attr.namedItem("id").nodeValue().toUInt();
+        readXml(xmlLog, "groundspeak:date", log.date);
+        readXml(xmlLog, "groundspeak:type", log.type);
+        if(xmlLog.namedItem("groundspeak:finder").isElement())
+        {
+            const QDomNamedNodeMap& attr = xmlLog.namedItem("groundspeak:finder").attributes();
+            log.finderId = attr.namedItem("id").nodeValue();
+        }
+
+        readXml(xmlLog, "groundspeak:finder", log.finder);
+        readXml(xmlLog, "groundspeak:text", log.text);
+
+        geocache.logs << log;
+
+    }
+    geocache.hasData = true;
+}
+
+void CGisItemWpt::writeGcExt(QDomNode& xmlCache)
+{
+    QString str;
+    xmlCache.toElement().setAttribute("xmlns:groundspeak", "http://www.groundspeak.com/cache/1/0");
+    xmlCache.toElement().setAttribute("id", geocache.id);
+    xmlCache.toElement().setAttribute("archived", geocache.archived ? "True" : "False");
+    xmlCache.toElement().setAttribute("available", geocache.available ? "True" : "False");
+
+    writeXml(xmlCache, "groundspeak:name", geocache.name);
+    writeXml(xmlCache, "groundspeak:placed_by", geocache.owner);
+    writeXml(xmlCache, "groundspeak:type", geocache.type);
+    writeXml(xmlCache, "groundspeak:container", geocache.container);
+
+    if(geocache.difficulty == int(geocache.difficulty))
+    {
+        str.sprintf("%1.0f", geocache.difficulty);
+    }
+    else
+    {
+        str.sprintf("%1.1f", geocache.difficulty);
+    }
+    writeXml(xmlCache, "groundspeak:difficulty", str);
+
+    if(geocache.terrain == int(geocache.terrain))
+    {
+        str.sprintf("%1.0f", geocache.terrain);
+    }
+    else
+    {
+        str.sprintf("%1.1f", geocache.terrain);
+    }
+    writeXml(xmlCache, "groundspeak:terrain", str);
+    writeXmlHtml(xmlCache, "groundspeak:short_description", geocache.shortDesc);
+    writeXmlHtml(xmlCache, "groundspeak:long_description", geocache.longDesc);
+    writeXml(xmlCache, "groundspeak:encoded_hints", geocache.hint);
+
+    if(!geocache.logs.isEmpty())
+    {
+        QDomElement xmlLogs = xmlCache.ownerDocument().createElement("groundspeak:logs");
+        xmlCache.appendChild(xmlLogs);
+
+        foreach(const geocachelog_t& log, geocache.logs)
+        {
+            QDomElement xmlLog = xmlCache.ownerDocument().createElement("groundspeak:log");
+            xmlLogs.appendChild(xmlLog);
+
+            xmlLog.setAttribute("id", log.id);
+            writeXml(xmlLog, "groundspeak:date", log.date);
+            writeXml(xmlLog, "groundspeak:type", log.type);
+
+            QDomElement xmlFinder = xmlCache.ownerDocument().createElement("groundspeak:finder");
+            xmlLog.appendChild(xmlFinder);
+
+            QDomText _finder_ = xmlCache.ownerDocument().createCDATASection(log.finder);
+            xmlFinder.appendChild(_finder_);
+            xmlFinder.setAttribute("id", log.finderId);
+
+            writeXmlHtml(xmlLog, "groundspeak:text", log.text);
+        }
+    }
+}
+
+bool CGisItemWpt::isCloseTo(const QPointF& pos)
+{
+    if(posScreen == NOPOINTF)
+    {
+        return false;
+    }
+
+    return ((pos - posScreen).manhattanLength() < 22);
+}
+
+void CGisItemWpt::gainUserFocus()
+{
+    keyUserFocus = key;
+}
+
+void CGisItemWpt::edit()
+{
+    CDetailsWpt dlg(*this, 0);
+    dlg.exec();
+}
+
+void CGisItemWpt::drawItem(QPainter& p, const QRectF& viewport, QList<QRectF> &blockedAreas, CGisDraw *gis)
+{
+    posScreen = QPointF(wpt.lon * DEG_TO_RAD, wpt.lat * DEG_TO_RAD);
+    if(!viewport.contains(posScreen))
+    {
+        posScreen = NOPOINTF;
+        return;
+    }
+    gis->convertRad2Px(posScreen);
+    p.drawPixmap(posScreen - focus, icon);
+
+    if(proximity != NOFLOAT)
+    {
+        QPointF pt1(wpt.lon * DEG_TO_RAD, wpt.lat * DEG_TO_RAD);
+        pt1 = GPS_Math_Wpt_Projection(pt1, proximity, 90 * DEG_TO_RAD);
+        gis->convertRad2Px(pt1);
+
+        double r = pt1.x() - posScreen.x();
+
+        p.save();
+        p.setBrush(Qt::NoBrush);
+        p.setPen(QPen(Qt::white,3));
+        p.drawEllipse(QRect(posScreen.x() - r - 1, posScreen.y() - r - 1, 2*r + 1, 2*r + 1));
+        p.setPen(QPen(Qt::red,1));
+        p.drawEllipse(QRect(posScreen.x() - r - 1, posScreen.y() - r - 1, 2*r + 1, 2*r + 1));
+        p.restore();
+    }
+
+    blockedAreas << QRectF(posScreen - focus, icon.size());
+}
+
+void CGisItemWpt::drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF> &blockedAreas, const QFontMetricsF &fm, CGisDraw *gis)
+{
+    if(posScreen == NOPOINTF)
+    {
+        return;
+    }
+
+    QPointF pt = posScreen - focus;
+
+    QRectF rect = fm.boundingRect(wpt.name);
+    rect.adjust(-2,-2,2,2);
+
+    // place label on top
+    rect.moveCenter(pt + QPointF(icon.width()/2, - fm.height()));
+    if(isBlocked(rect, blockedAreas))
+    {
+        // place label on bottom
+        rect.moveCenter(pt + QPointF( icon.width()/2, + fm.height() + icon.height()));
+        if(isBlocked(rect, blockedAreas))
+        {
+            // place label on right
+            rect.moveCenter(pt + QPointF( icon.width() + rect.width()/2, +fm.height()));
+            if(isBlocked(rect, blockedAreas))
+            {
+                // place label on left
+                rect.moveCenter(pt + QPointF( - rect.width()/2, +fm.height()));
+                if(isBlocked(rect, blockedAreas))
+                {
+                    // failed to place label anywhere
+                    return;
+                }
+            }
+        }
+    }
+
+    CCanvas::drawText(wpt.name,p,rect.toRect(), Qt::darkBlue);
+    blockedAreas << rect;
+}
+
+void CGisItemWpt::drawHighlight(QPainter& p)
+{
+    if(posScreen == NOPOINTF)
+    {
+        return;
+    }
+
+    p.drawImage(posScreen - QPointF(31,31), QImage("://cursors/wptHighlight.png"));
+
+}
diff --git a/.hg/Trashcan/CGisItemWpt_lZD09f.h.bak b/.hg/Trashcan/CGisItemWpt_lZD09f.h.bak
new file mode 100644
index 0000000..19668ca
--- /dev/null
+++ b/.hg/Trashcan/CGisItemWpt_lZD09f.h.bak
@@ -0,0 +1,117 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CGISITEMWPT_H
+#define CGISITEMWPT_H
+
+#include "gis/IGisItem.h"
+
+class CGisProject;
+class QDomNode;
+
+class CGisItemWpt : public IGisItem
+{
+    public:
+        CGisItemWpt(const QDomNode& xml, CGisProject * parent);
+        virtual ~CGisItemWpt();
+
+        void setName(const QString& str);
+        void setPosition(const QPointF& pos);
+        void setElevation(qint32 val);
+        void setProximity(qreal val);
+        void setIcon(const QString& name);
+
+        const QString& getName(){return wpt.name;}
+        QString getInfo();
+        QPointF getPosition(){return QPointF(wpt.lon, wpt.lat);}
+        qint32 getElevation(){return wpt.ele;}
+        qreal getProximity(){return proximity;}
+        const QString& getIconName(){return wpt.sym;}
+        const QString& getComment(){return wpt.cmt;}
+        const QString& getDescription(){return wpt.desc;}
+
+        IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
+        QPointF getPointCloseBy(const QPoint& ){return posScreen;}
+
+        void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
+        void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
+        void drawHighlight(QPainter& p);
+        void save(QDomNode& gpx);
+        bool isCloseTo(const QPointF& pos);
+        void gainUserFocus();
+
+        void edit();
+
+    private:
+        void genKey();
+        void setIcon();
+        void readGcExt(const QDomNode& xmlCache);
+        void writeGcExt(QDomNode& xmlCache);
+
+        static QString keyUserFocus;
+
+        enum geocacheservice_e {eGC, eOC, eTC};
+
+        struct geocachelog_t
+        {
+            geocachelog_t() : id(0){}
+            quint32 id;
+            QDateTime date;
+            QString type;
+            QString finderId;
+            QString finder;
+            QString text;
+        };
+
+        struct geocache_t
+        {
+            geocache_t() : service(eOC), hasData(false), id(0), available(true), archived(false), difficulty(0), terrain(0){}
+            geocacheservice_e service;
+            bool hasData;
+            quint32 id;
+            bool available;
+            bool archived;
+            qreal difficulty;
+            qreal terrain;
+            QString status;
+            QString name;
+            QString owner;
+            QString ownerId;
+            QString type;
+            QString container;
+            QString shortDesc;
+            QString longDesc;
+            QString hint;
+            QString country;
+            QString state;
+            QString locale;
+            QList<geocachelog_t> logs;
+        };
+
+
+        wpt_t wpt;
+        qreal proximity;
+        geocache_t geocache;
+
+        QPointF focus;
+        QPointF posScreen;
+
+};
+
+#endif //CGISITEMWPT_H
+
diff --git a/.hg/Trashcan/CGisItemWpt_qCGlIQ.cpp.bak b/.hg/Trashcan/CGisItemWpt_qCGlIQ.cpp.bak
new file mode 100644
index 0000000..24a83e2
--- /dev/null
+++ b/.hg/Trashcan/CGisItemWpt_qCGlIQ.cpp.bak
@@ -0,0 +1,476 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/wpt/CDetailsWpt.h"
+#include "gis/wpt/CScrOptWpt.h"
+#include "gis/CGisProject.h"
+#include "gis/CGisDraw.h"
+#include "gis/WptIcons.h"
+#include "canvas/CCanvas.h"
+#include "mouse/IMouse.h"
+#include "units/IUnit.h"
+#include "GeoMath.h"
+
+
+#include <QtWidgets>
+#include <QtXml>
+
+QString CGisItemWpt::keyUserFocus;
+
+CGisItemWpt::CGisItemWpt(const QDomNode &xml, CGisProject *parent)
+    : IGisItem(parent)
+    , proximity(NOFLOAT)
+    , posScreen(NOPOINTF)
+{
+    // --- start read and process data ----
+    readWpt(xml, wpt);
+    // decode some well known extensions
+    if(xml.namedItem("extensions").isElement())
+    {        
+        const QDomNode& ext = xml.namedItem("extensions");
+        readXml(ext, "ql:key", key);
+
+        const QDomNode& wptx1 = ext.namedItem("wptx1:WaypointExtension");
+        readXml(wptx1, "wptx1:Proximity", proximity);
+
+        const QDomNode& xmlCache = ext.namedItem("cache");
+        if(!xmlCache.isNull())
+        {
+            // read OC cache extensions
+        }
+    }
+
+    const QDomNode& xmlCache = xml.namedItem("groundspeak:cache");
+    if(!xmlCache.isNull() && !geocache.hasData)
+    {
+        readGcExt(xmlCache);
+    }
+    // --- stop read and process data ----
+
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
+
+    setText(0, wpt.name);
+    setIcon();
+    setToolTip(0, getInfo());
+    genKey();
+}
+
+CGisItemWpt::~CGisItemWpt()
+{
+
+}
+
+void CGisItemWpt::genKey()
+{
+    if(key.isEmpty())
+    {
+        QCryptographicHash md5(QCryptographicHash::Md5);
+        md5.addData((const char*)&wpt, sizeof(wpt));
+        key = md5.result().toHex();
+    }
+}
+
+QString CGisItemWpt::getInfo()
+{
+    QString str = "<p>" + getName() + "</p>";
+
+    if(geocache.hasData)
+    {
+        str += QString(" %4 (%1, D %2, T %3)").arg(geocache.container).arg(geocache.difficulty, 0,'f',1).arg(geocache.terrain, 0,'f',1).arg(geocache.name);
+    }
+
+    if(wpt.time.isValid())
+    {
+        if(!str.isEmpty()) str += "<br/>\n";
+
+        str += IUnit::datetime2string(wpt.time, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
+    }
+
+    if(wpt.ele != NOINT)
+    {
+        if(!str.isEmpty()) str += "<br/>\n";
+        QString val, unit;
+        IUnit::self().meter2elevation(wpt.ele, val, unit);
+        str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+    }
+
+    if(proximity != NOFLOAT)
+    {
+        if(!str.isEmpty()) str += "<br/>\n";
+        QString val, unit;
+        IUnit::self().meter2distance(proximity, val, unit);
+        str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+    }
+
+    QString desc = removeHtml(wpt.desc);
+    if(desc.count())
+    {
+        if(!str.isEmpty()) str += "<br/>\n";
+
+        if(desc.count() < 200)
+        {
+            str += desc;
+        }
+        else
+        {
+            str += desc.left(197) + "...";
+        }
+    }
+    else
+    {
+        QString cmt = removeHtml(wpt.cmt);
+        if(cmt.count())
+        {
+            if(!str.isEmpty()) str += "<br/>\n";
+
+            if(cmt.count() < 200)
+            {
+                str += cmt;
+            }
+            else
+            {
+                str += cmt.left(197) + "...";
+            }
+        }
+    }
+
+    qDebug() << "-----------------------";
+    qDebug() << str;
+    return str;
+}
+
+IScrOpt * CGisItemWpt::getScreenOptions(const QPoint& origin, IMouse * mouse)
+{
+    return new CScrOptWpt(this, origin, mouse);
+}
+
+void CGisItemWpt::setIcon()
+{
+    if(geocache.hasData)
+    {
+        icon = getWptIconByName(geocache.type, focus);
+    }
+    else
+    {
+        icon = getWptIconByName(wpt.sym, focus);
+    }
+
+    QTreeWidgetItem::setIcon(0,icon);
+}
+
+void CGisItemWpt::setName(const QString& str)
+{
+    setText(1, "*");
+    setText(0, str);
+    wpt.name = str;
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setPosition(const QPointF& pos)
+{
+    setText(1,"*");
+    wpt.lon = pos.x();
+    wpt.lat = pos.y();
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setElevation(qint32 val)
+{
+    setText(1,"*");
+    wpt.ele = val;
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setProximity(qreal val)
+{
+    setText(1,"*");
+    proximity = val;
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setIcon(const QString& name)
+{
+    setText(1,"*");
+    wpt.sym = name;
+    setIcon();
+}
+
+void CGisItemWpt::setComment(const QString& str)
+{
+    setText(1,"*");
+    wpt.cmt = str;
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::setDescription(const QString& str)
+{
+    setText(1,"*");
+    wpt.desc = str;
+    setToolTip(0,getInfo());
+}
+
+void CGisItemWpt::save(QDomNode& gpx)
+{
+    QDomDocument doc = gpx.ownerDocument();
+
+    QDomElement xmlWpt = doc.createElement("wpt");
+    gpx.appendChild(xmlWpt);
+    writeWpt(xmlWpt, wpt);
+
+    // write the key as extension tag
+    QDomElement xmlExt  = doc.createElement("extensions");
+    xmlWpt.appendChild(xmlExt);
+    writeXml(xmlExt, "ql:key", key);
+
+    // write other well known extensions
+    QDomElement wptx1  = doc.createElement("wptx1:WaypointExtension");
+    xmlExt.appendChild(wptx1);
+    writeXml(wptx1, "wptx1:Proximity", proximity);
+
+    if(geocache.hasData && geocache.service == eGC)
+    {
+        QDomElement xmlCache = doc.createElement("groundspeak:cache");
+        writeGcExt(xmlCache);
+        xmlWpt.appendChild(xmlCache);
+    }
+}
+
+void CGisItemWpt::readGcExt(const QDomNode& xmlCache)
+{
+    geocache.service = eGC;
+    const QDomNamedNodeMap& attr = xmlCache.attributes();
+    geocache.id = attr.namedItem("id").nodeValue().toInt();
+
+    geocache.archived   = attr.namedItem("archived").nodeValue().toLocal8Bit() == "True";
+    geocache.available  = attr.namedItem("available").nodeValue().toLocal8Bit() == "True";
+    if(geocache.archived)
+    {
+        geocache.status = QObject::tr("Archived");
+    }
+    else if(geocache.available)
+    {
+        geocache.status = QObject::tr("Available");
+    }
+    else
+    {
+        geocache.status = QObject::tr("Not Available");
+    }
+
+    readXml(xmlCache, "groundspeak:name", geocache.name);
+    readXml(xmlCache, "groundspeak:placed_by", geocache.owner);
+    readXml(xmlCache, "groundspeak:type", geocache.type);
+    readXml(xmlCache, "groundspeak:container", geocache.container);
+    readXml(xmlCache, "groundspeak:difficulty", geocache.difficulty);
+    readXml(xmlCache, "groundspeak:terrain", geocache.terrain);
+    readXml(xmlCache, "groundspeak:short_description", geocache.shortDesc);
+    readXml(xmlCache, "groundspeak:long_description", geocache.longDesc);
+    readXml(xmlCache, "groundspeak:encoded_hints", geocache.hint);
+    readXml(xmlCache, "groundspeak:country", geocache.country);
+    readXml(xmlCache, "groundspeak:state", geocache.state);
+
+    const QDomNodeList& logs = xmlCache.toElement().elementsByTagName("groundspeak:log");
+    uint N = logs.count();
+
+    for(uint n = 0; n < N; ++n)
+    {
+        const QDomNode& xmlLog = logs.item(n);
+        const QDomNamedNodeMap& attr = xmlLog.attributes();
+
+        geocachelog_t log;
+        log.id = attr.namedItem("id").nodeValue().toUInt();
+        readXml(xmlLog, "groundspeak:date", log.date);
+        readXml(xmlLog, "groundspeak:type", log.type);
+        if(xmlLog.namedItem("groundspeak:finder").isElement())
+        {
+            const QDomNamedNodeMap& attr = xmlLog.namedItem("groundspeak:finder").attributes();
+            log.finderId = attr.namedItem("id").nodeValue();
+        }
+
+        readXml(xmlLog, "groundspeak:finder", log.finder);
+        readXml(xmlLog, "groundspeak:text", log.text);
+
+        geocache.logs << log;
+
+    }
+    geocache.hasData = true;
+}
+
+void CGisItemWpt::writeGcExt(QDomNode& xmlCache)
+{
+    QString str;
+    xmlCache.toElement().setAttribute("xmlns:groundspeak", "http://www.groundspeak.com/cache/1/0");
+    xmlCache.toElement().setAttribute("id", geocache.id);
+    xmlCache.toElement().setAttribute("archived", geocache.archived ? "True" : "False");
+    xmlCache.toElement().setAttribute("available", geocache.available ? "True" : "False");
+
+    writeXml(xmlCache, "groundspeak:name", geocache.name);
+    writeXml(xmlCache, "groundspeak:placed_by", geocache.owner);
+    writeXml(xmlCache, "groundspeak:type", geocache.type);
+    writeXml(xmlCache, "groundspeak:container", geocache.container);
+
+    if(geocache.difficulty == int(geocache.difficulty))
+    {
+        str.sprintf("%1.0f", geocache.difficulty);
+    }
+    else
+    {
+        str.sprintf("%1.1f", geocache.difficulty);
+    }
+    writeXml(xmlCache, "groundspeak:difficulty", str);
+
+    if(geocache.terrain == int(geocache.terrain))
+    {
+        str.sprintf("%1.0f", geocache.terrain);
+    }
+    else
+    {
+        str.sprintf("%1.1f", geocache.terrain);
+    }
+    writeXml(xmlCache, "groundspeak:terrain", str);
+    writeXmlHtml(xmlCache, "groundspeak:short_description", geocache.shortDesc);
+    writeXmlHtml(xmlCache, "groundspeak:long_description", geocache.longDesc);
+    writeXml(xmlCache, "groundspeak:encoded_hints", geocache.hint);
+
+    if(!geocache.logs.isEmpty())
+    {
+        QDomElement xmlLogs = xmlCache.ownerDocument().createElement("groundspeak:logs");
+        xmlCache.appendChild(xmlLogs);
+
+        foreach(const geocachelog_t& log, geocache.logs)
+        {
+            QDomElement xmlLog = xmlCache.ownerDocument().createElement("groundspeak:log");
+            xmlLogs.appendChild(xmlLog);
+
+            xmlLog.setAttribute("id", log.id);
+            writeXml(xmlLog, "groundspeak:date", log.date);
+            writeXml(xmlLog, "groundspeak:type", log.type);
+
+            QDomElement xmlFinder = xmlCache.ownerDocument().createElement("groundspeak:finder");
+            xmlLog.appendChild(xmlFinder);
+
+            QDomText _finder_ = xmlCache.ownerDocument().createCDATASection(log.finder);
+            xmlFinder.appendChild(_finder_);
+            xmlFinder.setAttribute("id", log.finderId);
+
+            writeXmlHtml(xmlLog, "groundspeak:text", log.text);
+        }
+    }
+}
+
+bool CGisItemWpt::isCloseTo(const QPointF& pos)
+{
+    if(posScreen == NOPOINTF)
+    {
+        return false;
+    }
+
+    return ((pos - posScreen).manhattanLength() < 22);
+}
+
+void CGisItemWpt::gainUserFocus()
+{
+    keyUserFocus = key;
+}
+
+void CGisItemWpt::edit()
+{
+    CDetailsWpt dlg(*this, 0);
+    dlg.exec();
+}
+
+void CGisItemWpt::drawItem(QPainter& p, const QRectF& viewport, QList<QRectF> &blockedAreas, CGisDraw *gis)
+{
+    posScreen = QPointF(wpt.lon * DEG_TO_RAD, wpt.lat * DEG_TO_RAD);
+    if(!viewport.contains(posScreen))
+    {
+        posScreen = NOPOINTF;
+        return;
+    }
+    gis->convertRad2Px(posScreen);
+    p.drawPixmap(posScreen - focus, icon);
+
+    if(proximity != NOFLOAT)
+    {
+        QPointF pt1(wpt.lon * DEG_TO_RAD, wpt.lat * DEG_TO_RAD);
+        pt1 = GPS_Math_Wpt_Projection(pt1, proximity, 90 * DEG_TO_RAD);
+        gis->convertRad2Px(pt1);
+
+        double r = pt1.x() - posScreen.x();
+
+        p.save();
+        p.setBrush(Qt::NoBrush);
+        p.setPen(QPen(Qt::white,3));
+        p.drawEllipse(QRect(posScreen.x() - r - 1, posScreen.y() - r - 1, 2*r + 1, 2*r + 1));
+        p.setPen(QPen(Qt::red,1));
+        p.drawEllipse(QRect(posScreen.x() - r - 1, posScreen.y() - r - 1, 2*r + 1, 2*r + 1));
+        p.restore();
+    }
+
+    blockedAreas << QRectF(posScreen - focus, icon.size());
+}
+
+void CGisItemWpt::drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF> &blockedAreas, const QFontMetricsF &fm, CGisDraw *gis)
+{
+    if(posScreen == NOPOINTF)
+    {
+        return;
+    }
+
+    QPointF pt = posScreen - focus;
+
+    QRectF rect = fm.boundingRect(wpt.name);
+    rect.adjust(-2,-2,2,2);
+
+    // place label on top
+    rect.moveCenter(pt + QPointF(icon.width()/2, - fm.height()));
+    if(isBlocked(rect, blockedAreas))
+    {
+        // place label on bottom
+        rect.moveCenter(pt + QPointF( icon.width()/2, + fm.height() + icon.height()));
+        if(isBlocked(rect, blockedAreas))
+        {
+            // place label on right
+            rect.moveCenter(pt + QPointF( icon.width() + rect.width()/2, +fm.height()));
+            if(isBlocked(rect, blockedAreas))
+            {
+                // place label on left
+                rect.moveCenter(pt + QPointF( - rect.width()/2, +fm.height()));
+                if(isBlocked(rect, blockedAreas))
+                {
+                    // failed to place label anywhere
+                    return;
+                }
+            }
+        }
+    }
+
+    CCanvas::drawText(wpt.name,p,rect.toRect(), Qt::darkBlue);
+    blockedAreas << rect;
+}
+
+void CGisItemWpt::drawHighlight(QPainter& p)
+{
+    if(posScreen == NOPOINTF)
+    {
+        return;
+    }
+
+    p.drawImage(posScreen - QPointF(31,31), QImage("://cursors/wptHighlight.png"));
+
+}
diff --git a/.hg/Trashcan/CGisItemWpt_v6zJBd.h.bak b/.hg/Trashcan/CGisItemWpt_v6zJBd.h.bak
new file mode 100644
index 0000000..0b73189
--- /dev/null
+++ b/.hg/Trashcan/CGisItemWpt_v6zJBd.h.bak
@@ -0,0 +1,119 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CGISITEMWPT_H
+#define CGISITEMWPT_H
+
+#include "gis/IGisItem.h"
+
+class CGisProject;
+class QDomNode;
+
+class CGisItemWpt : public IGisItem
+{
+    public:
+        CGisItemWpt(const QDomNode& xml, CGisProject * parent);
+        virtual ~CGisItemWpt();
+
+        void setName(const QString& str);
+        void setPosition(const QPointF& pos);
+        void setElevation(qint32 val);
+        void setProximity(qreal val);
+        void setIcon(const QString& name);
+        void setComment(const QString& str);
+        void setDescription(const QString& str);
+
+        const QString& getName(){return wpt.name;}
+        QString getInfo();
+        QPointF getPosition(){return QPointF(wpt.lon, wpt.lat);}
+        qint32 getElevation(){return wpt.ele;}
+        qreal getProximity(){return proximity;}
+        const QString& getIconName(){return wpt.sym;}
+        const QString& getComment(){return wpt.cmt;}
+        const QString& getDescription(){return wpt.desc;}
+
+        IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
+        QPointF getPointCloseBy(const QPoint& ){return posScreen;}
+
+        void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
+        void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
+        void drawHighlight(QPainter& p);
+        void save(QDomNode& gpx);
+        bool isCloseTo(const QPointF& pos);
+        void gainUserFocus();
+
+        void edit();
+
+    private:
+        void genKey();
+        void setIcon();
+        void readGcExt(const QDomNode& xmlCache);
+        void writeGcExt(QDomNode& xmlCache);
+
+        static QString keyUserFocus;
+
+        enum geocacheservice_e {eGC, eOC, eTC};
+
+        struct geocachelog_t
+        {
+            geocachelog_t() : id(0){}
+            quint32 id;
+            QDateTime date;
+            QString type;
+            QString finderId;
+            QString finder;
+            QString text;
+        };
+
+        struct geocache_t
+        {
+            geocache_t() : service(eOC), hasData(false), id(0), available(true), archived(false), difficulty(0), terrain(0){}
+            geocacheservice_e service;
+            bool hasData;
+            quint32 id;
+            bool available;
+            bool archived;
+            qreal difficulty;
+            qreal terrain;
+            QString status;
+            QString name;
+            QString owner;
+            QString ownerId;
+            QString type;
+            QString container;
+            QString shortDesc;
+            QString longDesc;
+            QString hint;
+            QString country;
+            QString state;
+            QString locale;
+            QList<geocachelog_t> logs;
+        };
+
+
+        wpt_t wpt;
+        qreal proximity;
+        geocache_t geocache;
+
+        QPointF focus;
+        QPointF posScreen;
+
+};
+
+#endif //CGISITEMWPT_H
+
diff --git a/src/gis/CGisListWks.cpp b/.hg/Trashcan/CGisListWks_3x8ATJ.cpp.bak
similarity index 74%
copy from src/gis/CGisListWks.cpp
copy to .hg/Trashcan/CGisListWks_3x8ATJ.cpp.bak
index 5b81c11..266c790 100644
--- a/src/gis/CGisListWks.cpp
+++ b/.hg/Trashcan/CGisListWks_3x8ATJ.cpp.bak
@@ -18,18 +18,10 @@
 
 #include "CMainWindow.h"
 #include "config.h"
-#ifdef Q_OS_LINUX
-#include "device/CDeviceWatcherLinux.h"
-#endif
-#ifdef Q_OS_WIN
-#include "device/CDeviceWatcherWindows.h"
-#endif
-#include "device/IDevice.h"
 #include "gis/CGisListWks.h"
 #include "gis/CGisWidget.h"
 #include "gis/IGisItem.h"
 #include "gis/db/CDBProject.h"
-#include "gis/db/CLostFoundProject.h"
 #include "gis/db/macros.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
@@ -39,8 +31,8 @@
 #include "gis/search/CSearchGoogle.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CSelectCopyAction.h"
 #include "helpers/CSelectProjectDialog.h"
+#include "helpers/CSelectCopyAction.h"
 #include "helpers/CSettings.h"
 
 #include <QtSql>
@@ -50,26 +42,27 @@
 
 class CGisListWksEditLock
 {
-public:
-    CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
-    {
-        if(waitCursor)
+    public:
+        CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
         {
-            QApplication::setOverrideCursor(Qt::WaitCursor);
+            if(waitCursor)
+            {
+                QApplication::setOverrideCursor(Qt::WaitCursor);
+            }
+            mutex.lock();
         }
-        mutex.lock();
-    }
-    ~CGisListWksEditLock()
-    {
-        if(waitCursor)
+        ~CGisListWksEditLock()
         {
-            QApplication::restoreOverrideCursor();
+            if(waitCursor)
+            {
+                QApplication::restoreOverrideCursor();
+            }
+            mutex.unlock();
         }
-        mutex.unlock();
-    }
-private:
-    QMutex& mutex;
-    bool waitCursor;
+    private:
+        QMutex& mutex;
+        bool waitCursor;
+
 };
 
 
@@ -78,7 +71,6 @@ CGisListWks::CGisListWks(QWidget *parent)
     , menuNone(0)
     , saveOnExit(true)
     , saveEvery(5)
-    , deviceWatcher(0)
 {
     db = QSqlDatabase::addDatabase("QSQLITE","Workspace1");
     db.setDatabaseName(QDir::home().filePath(CONFIGDIR).append("/workspace.db"));
@@ -86,51 +78,29 @@ CGisListWks::CGisListWks(QWidget *parent)
     configDB();
 
     menuProject     = new QMenu(this);
-    actionEditPrj   = menuProject->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
     actionSaveAs    = menuProject->addAction(QIcon("://icons/32x32/SaveGISAs.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
     actionSave      = menuProject->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save"), this, SLOT(slotSaveProject()));
-    actionCloseProj = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
-    actionDelProj   = menuProject->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteProject()));
+    actionEditPrj   = menuProject->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
+    actionClose     = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
 
     connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
     connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotItemDoubleClicked(QTreeWidgetItem*,int)));
 
-    menuItemTrk     = new QMenu(this);
-    actionEditDetails = menuItemTrk->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
-    actionCopyItem  = menuItemTrk->addAction(QIcon("://icons/32x32/Copy.png"),tr("Copy to..."), this, SLOT(slotCopyItem()));
-    actionFocusTrk  = menuItemTrk->addAction(QIcon("://icons/32x32/TrkProfile.png"),tr("Track Profile"));
-    actionFocusTrk->setCheckable(true);
-    actionRangeTrk  = menuItemTrk->addAction(QIcon("://icons/32x32/SelectRange.png"),tr("Select Range"), this, SLOT(slotRangeTrk()));
-    actionEditTrk   = menuItemTrk->addAction(QIcon("://icons/32x32/LineMove.png"),tr("Edit Track Points"), this, SLOT(slotEditTrk()));
-    actionReverseTrk = menuItemTrk->addAction(QIcon("://icons/32x32/Reverse.png"),tr("Reverse Track"), this, SLOT(slotReverseTrk()));
-    actionCombineTrk = menuItemTrk->addAction(QIcon("://icons/32x32/Combine.png"),tr("Combine Tracks"), this, SLOT(slotCombineTrk()));
-    actionDelete    = menuItemTrk->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
-
-    menuItemWpt     = new QMenu(this);
-    menuItemWpt->addAction(actionEditDetails);
-    menuItemWpt->addAction(actionCopyItem);
-    actionMoveWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptMove.png"),tr("Move Waypoint"), this, SLOT(slotMoveWpt()));
-    actionProjWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptProj.png"),tr("Proj. Waypoint..."), this, SLOT(slotProjWpt()));
-    menuItemWpt->addAction(actionDelete);
-
-    menuItemRte     = new QMenu(this);
-    menuItemRte->addAction(actionEditDetails);
-    menuItemRte->addAction(actionCopyItem);
-    menuItemRte->addAction(actionDelete);
-
-
-    menuItemOvl     = new QMenu(this);
-    menuItemOvl->addAction(actionEditDetails);
-    menuItemOvl->addAction(actionCopyItem);
-    actionEditArea  = menuItemOvl->addAction(QIcon("://icons/32x32/AreaMove.png"),tr("Edit Area Points"), this, SLOT(slotEditArea()));
-    menuItemOvl->addAction(actionDelete);
-
-
     menuItem        = new QMenu(this);
-    menuItem->addAction(actionCopyItem);
-    menuItem->addAction(actionDelete);
-
+    actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));   
+    actionCopyItem  = menuItem->addAction(QIcon("://icons/32x32/Copy.png"),tr("Copy to..."), this, SLOT(slotCopyItem()));
+    actionMoveWpt   = menuItem->addAction(QIcon("://icons/32x32/WptMove.png"),tr("Move Waypoint"), this, SLOT(slotMoveWpt()));
+    actionProjWpt   = menuItem->addAction(QIcon("://icons/32x32/WptProj.png"),tr("Proj. Waypoint..."), this, SLOT(slotProjWpt()));
+    actionFocusTrk  = menuItem->addAction(QIcon("://icons/32x32/TrkProfile.png"),tr("Track Profile"));
+    actionRangeTrk  = menuItem->addAction(QIcon("://icons/32x32/SelectRange.png"),tr("Select Range"), this, SLOT(slotRangeTrk()));
+    actionEditTrk   = menuItem->addAction(QIcon("://icons/32x32/LineMove.png"),tr("Edit Track Points"), this, SLOT(slotEditTrk()));
+    actionReverseTrk = menuItem->addAction(QIcon("://icons/32x32/Reverse.png"),tr("Reverse Track"), this, SLOT(slotReverseTrk()));
+    actionCombineTrk = menuItem->addAction(QIcon("://icons/32x32/Combine.png"),tr("Combine Tracks"), this, SLOT(slotCombineTrk()));
+    actionEditArea   = menuItem->addAction(QIcon("://icons/32x32/AreaMove.png"),tr("Edit Area Points"), this, SLOT(slotEditArea()));
+    actionFocusTrk->setCheckable(true);
     connect(actionFocusTrk, SIGNAL(triggered(bool)), this, SLOT(slotFocusTrk(bool)));
+    actionDelete    = menuItem->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));    
+
     connect(qApp, SIGNAL(aboutToQuit ()), this, SLOT(slotSaveWorkspace()));
 
     SETTINGS;
@@ -141,16 +111,6 @@ CGisListWks::CGisListWks(QWidget *parent)
     {
         QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
     }
-#ifdef Q_OS_LINUX
-    deviceWatcher = new CDeviceWatcherLinux(this);
-#endif
-#ifdef Q_OS_WIN
-    deviceWatcher = new CDeviceWatcherWindows(this);
-#endif
-    if(deviceWatcher)
-    {
-        connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
-    }
 
     QTimer::singleShot(500, this, SLOT(slotLoadWorkspace()));
 }
@@ -256,11 +216,10 @@ void CGisListWks::setExternalMenu(QMenu * project)
 
 void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
 {
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
     QTreeWidgetItem * item1 = currentItem();
     QTreeWidgetItem * item2 = itemAt(e->pos());
 
+
     // changeing the item order is only valid for single selected items
     if(selectedItems().count() == 1)
     {
@@ -273,7 +232,8 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
             2.1) different parent -> copy
             3) go on with dragMoveEvent();
 
-        */
+         */
+
         CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(item1);
         CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(item2);
 
@@ -341,61 +301,14 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
             QTreeWidget::dragMoveEvent(e);
             return;
         }
-
-        /*
-            Never move/copy projects on devices. Data has to be removed or changed
-            to store a project and it's items on a device. Moving it back to the
-            workspace would conflict with the original project. To much hassle to
-            reslove this properly.
-        */
-        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
-        if(proj1 && proj1->isOnDevice())
-        {
-            e->setDropAction(Qt::IgnoreAction);
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
     }
 
-    /*
-        Test for other project, to change project order. But if other project
-        is on a device block the request. A project has to be copied to the
-        device via it's device item.
-    */
-    IGisProject * proj2 = dynamic_cast<IGisProject*>(item2);
-    if(proj2)
+    IGisProject * proj = dynamic_cast<IGisProject*>(item2);
+    if(proj && (proj != currentItem()->parent()))
     {
-        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
-        if(proj1)
-        {
-            e->setDropAction(proj2->isOnDevice() ? Qt::IgnoreAction : Qt::MoveAction);
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-
-        IGisItem * gisItem1 = dynamic_cast<IGisItem*>(item1);
-        if(gisItem1)
-        {
-            e->setDropAction(Qt::CopyAction);
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-    }
-
-    /*
-        Test for device as drop target. A device will copy the project into
-        it's own supported format.
-    */
-    IDevice * device = dynamic_cast<IDevice*>(item2);
-    if(device)
-    {
-        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
-        if(proj1 && !proj1->isOnDevice())
-        {
-            e->setDropAction(Qt::CopyAction);
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
+        e->setDropAction(Qt::CopyAction);
+        QTreeWidget::dragMoveEvent(e);
+        return;
     }
 
     e->setDropAction(Qt::IgnoreAction);
@@ -404,7 +317,6 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
 
 void CGisListWks::dropEvent ( QDropEvent  * e )
 {
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items   = selectedItems();
     if(items.isEmpty())
@@ -430,7 +342,7 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
         5) Test if item under cursor is a project
         6) If project and project is not item's project create a copy
 
-     */
+    */
     if(items.size() == 1)
     {
         // calc. index offset (below/above item)
@@ -439,17 +351,6 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
         int y2 = e->pos().y();
         int off = y2 > y1 ? 1 : 0;
 
-        IGisProject * prj1 = dynamic_cast<IGisProject*>(currentItem());
-        IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
-        if(prj1 && prj2)
-        {
-            prj2->setFlags(prj2->flags() & ~Qt::ItemIsDropEnabled);
-            QTreeWidget::dropEvent(e);
-            prj2->setFlags(prj2->flags() |  Qt::ItemIsDropEnabled);
-            emit sigChanged();
-            return;
-        }
-
         CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
         CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
 
@@ -553,40 +454,12 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
             }
 
             IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-            if(gisItem)
-            {
-                project->insertCopyOfItem(gisItem, -1, lastResult);
-            }
+            project->insertCopyOfItem(gisItem, -1, lastResult);
         }
     }
-
-    IDevice * device = dynamic_cast<IDevice*>(itemAt(e->pos()));
-    if(device)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-        if(project)
-        {
-            int lastResult = CSelectCopyAction::eResultNone;
-            device->insertCopyOfProject(project, lastResult);
-        }
-    }
-
     emit sigChanged();
 }
 
-void CGisListWks::removeDevice(const QString& key)
-{
-    for(int i = 0; i < topLevelItemCount(); i++)
-    {
-        IDevice * device = dynamic_cast<IDevice*>(topLevelItem(i));
-        if(device && device->getKey() == key)
-        {
-            delete device;
-            emit sigChanged();
-            return;
-        }
-    }
-}
 
 bool CGisListWks::hasProject(IGisProject * project)
 {
@@ -601,11 +474,11 @@ bool CGisListWks::hasProject(IGisProject * project)
         {
             if(item != project)
             {
-                return true;
+                return(true);
             }
         }
     }
-    return false;
+    return(false);
 }
 
 IGisProject * CGisListWks::getProjectByKey(const QString& key)
@@ -636,6 +509,7 @@ CDBProject * CGisListWks::getProjectById(quint64 id, const QString& db)
         }
     }
     return 0;
+
 }
 
 void CGisListWks::slotSaveWorkspace()
@@ -764,9 +638,9 @@ void CGisListWks::slotLoadWorkspace()
 
 void CGisListWks::slotContextMenu(const QPoint& point)
 {
-    QPoint p = mapToGlobal(point);
     if(selectedItems().isEmpty() && menuNone)
     {
+        QPoint p = mapToGlobal(point);
         menuNone->exec(p);
         return;
     }
@@ -776,10 +650,9 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
         if(project != 0)
         {
-            bool isOnDevice = project->isOnDevice();
-            actionCloseProj->setVisible(!isOnDevice);
-            actionDelProj->setVisible(isOnDevice);
-            actionEditPrj->setVisible(false);           
+            actionEditPrj->setVisible(false);
+
+            QPoint p = mapToGlobal(point);
             menuProject->exec(p);
             return;
         }
@@ -787,8 +660,18 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
         if(gisItem != 0)
         {
+            actionEditDetails->setVisible(false);
+            actionProjWpt->setVisible(false);
+            actionMoveWpt->setVisible(false);
+            actionFocusTrk->setVisible(false);
+            actionEditTrk->setVisible(false);
+            actionReverseTrk->setVisible(false);
+            actionCombineTrk->setVisible(false);
+            actionRangeTrk->setVisible(false);
+            actionEditArea->setVisible(false);
+
+            QPoint p = mapToGlobal(point);
             menuItem->exec(p);
-            return;
         }
         return;
     }
@@ -798,20 +681,9 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
         if(project != 0)
         {
-            if(project->getType() == IGisProject::eTypeLostFound)
-            {
-                actionDelProj->setVisible(false);
-                actionSave->setVisible(false);
-                actionEditPrj->setVisible(false);
-            }
-            else
-            {
-                bool isOnDevice = project->isOnDevice();
-                actionCloseProj->setVisible(!isOnDevice);
-                actionDelProj->setVisible(isOnDevice);
-                actionSave->setVisible(true);
-                actionEditPrj->setVisible(true);
-            }
+            actionEditPrj->setVisible(true);
+
+            QPoint p = mapToGlobal(point);
             menuProject->exec(p);
             return;
         }
@@ -819,33 +691,57 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
         if(gisItem != 0)
         {
-            bool isOnDevice = gisItem->isOnDevice();
-            switch(gisItem->type())
-            {
-            case IGisItem::eTypeTrk:
-                actionCombineTrk->setDisabled(isOnDevice);
-                actionRangeTrk->setDisabled(isOnDevice);
-                actionReverseTrk->setDisabled(isOnDevice);
-                actionEditTrk->setDisabled(isOnDevice);
-                actionFocusTrk->setChecked(gisItem->hasUserFocus());
-                menuItemTrk->exec(p);
-                break;
+            actionEditDetails->setVisible(true);
 
-            case IGisItem::eTypeWpt:
-                actionMoveWpt->setDisabled(isOnDevice);
-                actionProjWpt->setDisabled(isOnDevice);
-                menuItemWpt->exec(p);
-                break;
+            // try to cast item to waypoint and hide/show actions on result
+            CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(gisItem);
+            if(wpt == 0)
+            {
+                actionProjWpt->setVisible(false);
+                actionMoveWpt->setVisible(false);
+            }
+            else
+            {
+                actionProjWpt->setVisible(true);
+                actionMoveWpt->setVisible(true);
+                actionMoveWpt->setEnabled(!wpt->isReadOnly());
+                actionProjWpt->setEnabled(!wpt->isGeocache());
+            }
 
-            case IGisItem::eTypeRte:
-                menuItemRte->exec(p);
-                break;
+            // try to cast item to track and hide/show actions on result
+            CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(gisItem);
+            if(trk == 0)
+            {
+                actionFocusTrk->setVisible(false);
+                actionEditTrk->setVisible(false);
+                actionReverseTrk->setVisible(false);
+                actionCombineTrk->setVisible(false);
+                actionRangeTrk->setVisible(false);
+            }
+            else
+            {
+                actionFocusTrk->setVisible(true);
+                actionEditTrk->setVisible(true);
+                actionReverseTrk->setVisible(true);
+                actionCombineTrk->setVisible(true);
+                actionRangeTrk->setVisible(true);
+                actionFocusTrk->setChecked(trk->hasUserFocus());
+                actionEditTrk->setEnabled(!trk->isReadOnly());
+            }
 
-            case IGisItem::eTypeOvl:
-                actionEditArea->setDisabled(isOnDevice);
-                menuItemOvl->exec(p);
-                break;
+            // try to cast item to track and hide/show actions on result
+            CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(gisItem);
+            if(area == 0)
+            {
+                actionEditArea->setVisible(false);
             }
+            else
+            {
+                actionEditArea->setVisible(true);
+            }
+            // display menu
+            QPoint p = mapToGlobal(point);
+            menuItem->exec(p);
             return;
         }
     }
@@ -866,31 +762,6 @@ void CGisListWks::slotCloseProject()
     emit sigChanged();
 }
 
-void CGisListWks::slotDeleteProject()
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            int res = QMessageBox::question(0, QObject::tr("Delete project..."), QObject::tr("Do you really want to delete %1?").arg(project->getFilename()), QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok);
-            if(res != QMessageBox::Ok)
-            {
-                continue;
-            }
-
-
-            if(project->remove())
-            {
-                delete project;
-            }
-        }
-    }
-    emit sigChanged();
-}
-
 void CGisListWks::slotSaveProject()
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
@@ -930,6 +801,7 @@ void CGisListWks::slotEditPrj()
     {
         project->edit();
     }
+
 }
 
 void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
@@ -954,8 +826,8 @@ void CGisListWks::slotEditItem()
 }
 
 void CGisListWks::slotDeleteItem()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
+{        
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items       = selectedItems();
     QMessageBox::StandardButtons last   = QMessageBox::NoButton;
@@ -977,7 +849,7 @@ void CGisListWks::slotDeleteItem()
             /*
                 collect database projects to update their counterpart in
                 the database view, after all operations are done.
-             */
+            */
             if(yes && project->getType() == IGisProject::eTypeDb)
             {
                 projects << dynamic_cast<CDBProject*>(project);
@@ -1181,21 +1053,13 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
     case eEvtD2WShowFolder:
     {
         CEvtD2WShowFolder * evt = (CEvtD2WShowFolder*)e;
         CDBProject * project =  getProjectById(evt->id, evt->db);
         if(project == 0)
         {
-            if(evt->id == 0)
-            {
-                project = new CLostFoundProject(evt->db, this);
-            }
-            else
-            {
-                project = new CDBProject(evt->db, evt->id, this);
-            }
+            project = new CDBProject(evt->db, evt->id, this);
             if(!project->isValid())
             {
                 delete project;
@@ -1205,7 +1069,6 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
     case eEvtD2WHideFolder:
     {
         CEvtD2WHideFolder * evt = (CEvtD2WHideFolder*)e;
@@ -1216,7 +1079,6 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
     case eEvtD2WShowItems:
     {
         CEvtD2WShowItems * evt = (CEvtD2WShowItems*)e;
@@ -1229,7 +1091,6 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
     case eEvtD2WHideItems:
     {
         CEvtD2WHideItems * evt = (CEvtD2WHideItems*)e;
@@ -1242,19 +1103,6 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
-    case eEvtD2WUpdateLnF:
-    {
-        CEvtD2WUpdateLnF * evt = (CEvtD2WUpdateLnF*)e;
-        CLostFoundProject * project = dynamic_cast<CLostFoundProject*>(getProjectById(evt->id, evt->db));
-        if(project)
-        {
-            project->updateFromDb();
-        }
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
     }
 
     return QTreeWidget::event(e);
diff --git a/.hg/Trashcan/CGisListWks_HrzlcL.cpp.bak b/.hg/Trashcan/CGisListWks_HrzlcL.cpp.bak
new file mode 100644
index 0000000..a741a60
--- /dev/null
+++ b/.hg/Trashcan/CGisListWks_HrzlcL.cpp.bak
@@ -0,0 +1,159 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/CGisListWks.h"
+#include "gis/CGisProject.h"
+#include "gis/IGisItem.h"
+#include "gis/CGisWidget.h"
+#include "CMainWindow.h"
+
+#include <QtWidgets>
+
+CGisListWks::CGisListWks(QWidget *parent)
+    : QTreeWidget(parent)
+{
+
+    menuProject     = new QMenu(this);
+    actionSaveAs    = menuProject->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
+    actionSave      = menuProject->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save"), this, SLOT(slotSaveProject()));    
+    actionClose     = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
+
+    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
+    connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotItemDoubleClicked(QTreeWidgetItem*,int)));
+
+    menuItem        = new QMenu(this);
+    actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+    actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+
+    actionEditDetails->setEnabled(false);
+}
+
+CGisListWks::~CGisListWks()
+{
+
+}
+
+bool CGisListWks::hasProject(const QString& key)
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+    for(int i = 0; i < topLevelItemCount(); i++)
+    {
+        CGisProject * item = dynamic_cast<CGisProject*>(topLevelItem(i));
+        if(item && item->getKey() == key)
+        {
+            return true;
+        }
+    }
+    return false;
+}
+
+void CGisListWks::slotContextMenu(const QPoint& point)
+{
+    CGisProject * project = dynamic_cast<CGisProject*>(currentItem());
+    if(project != 0)
+    {
+        QPoint p = mapToGlobal(point);
+        menuProject->exec(p);
+    }
+
+    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
+    if(gisItem != 0)
+    {
+        QPoint p = mapToGlobal(point);
+        menuItem->exec(p);
+    }
+
+}
+
+void CGisListWks::slotCloseProject()
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+    QList<QTreeWidgetItem*> items = selectedItems();
+    foreach(QTreeWidgetItem * item, items)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(item);
+        if(project != 0)
+        {
+            delete project;
+        }
+    }
+    emit sigChanged();
+}
+
+void CGisListWks::slotSaveProject()
+{
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    IGisItem::mutexItems.lock();
+
+    QList<QTreeWidgetItem*> items = selectedItems();
+    foreach(QTreeWidgetItem * item, items)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(item);
+        if(project != 0)
+        {
+            project->save();
+        }
+    }
+    IGisItem::mutexItems.unlock();
+    QApplication::restoreOverrideCursor();
+}
+
+void CGisListWks::slotSaveAsProject()
+{
+    IGisItem::mutexItems.lock();
+
+    QList<QTreeWidgetItem*> items = selectedItems();
+    foreach(QTreeWidgetItem * item, items)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(item);
+        if(project != 0)
+        {
+            project->saveAs();
+        }
+    }
+    IGisItem::mutexItems.unlock();
+
+}
+
+void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
+{
+    IGisItem::mutexItems.lock();
+    IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+    if(gisItem != 0)
+    {
+        CMainWindow::self().zoomWksTo(gisItem->getBoundingRect());
+    }    
+    IGisItem::mutexItems.unlock();
+}
+
+void CGisListWks::slotEditItem()
+{
+
+}
+
+void CGisListWks::slotDeleteItem()
+{
+    IGisItem::mutexItems.lock();
+    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
+    if(gisItem != 0)
+    {
+        QString key = gisItem->getKey();
+        CGisWidget::self().delItemByKey(key);
+    }
+    IGisItem::mutexItems.unlock();
+}
diff --git a/src/gis/CGisListWks.cpp b/.hg/Trashcan/CGisListWks_N1Po8J.cpp.bak
similarity index 75%
copy from src/gis/CGisListWks.cpp
copy to .hg/Trashcan/CGisListWks_N1Po8J.cpp.bak
index 5b81c11..a42c1d1 100644
--- a/src/gis/CGisListWks.cpp
+++ b/.hg/Trashcan/CGisListWks_N1Po8J.cpp.bak
@@ -18,18 +18,10 @@
 
 #include "CMainWindow.h"
 #include "config.h"
-#ifdef Q_OS_LINUX
-#include "device/CDeviceWatcherLinux.h"
-#endif
-#ifdef Q_OS_WIN
-#include "device/CDeviceWatcherWindows.h"
-#endif
-#include "device/IDevice.h"
 #include "gis/CGisListWks.h"
 #include "gis/CGisWidget.h"
 #include "gis/IGisItem.h"
 #include "gis/db/CDBProject.h"
-#include "gis/db/CLostFoundProject.h"
 #include "gis/db/macros.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
@@ -39,8 +31,8 @@
 #include "gis/search/CSearchGoogle.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CSelectCopyAction.h"
 #include "helpers/CSelectProjectDialog.h"
+#include "helpers/CSelectCopyAction.h"
 #include "helpers/CSettings.h"
 
 #include <QtSql>
@@ -50,26 +42,27 @@
 
 class CGisListWksEditLock
 {
-public:
-    CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
-    {
-        if(waitCursor)
+    public:
+        CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
         {
-            QApplication::setOverrideCursor(Qt::WaitCursor);
+            if(waitCursor)
+            {
+                QApplication::setOverrideCursor(Qt::WaitCursor);
+            }
+            mutex.lock();
         }
-        mutex.lock();
-    }
-    ~CGisListWksEditLock()
-    {
-        if(waitCursor)
+        ~CGisListWksEditLock()
         {
-            QApplication::restoreOverrideCursor();
+            if(waitCursor)
+            {
+                QApplication::restoreOverrideCursor();
+            }
+            mutex.unlock();
         }
-        mutex.unlock();
-    }
-private:
-    QMutex& mutex;
-    bool waitCursor;
+    private:
+        QMutex& mutex;
+        bool waitCursor;
+
 };
 
 
@@ -78,7 +71,6 @@ CGisListWks::CGisListWks(QWidget *parent)
     , menuNone(0)
     , saveOnExit(true)
     , saveEvery(5)
-    , deviceWatcher(0)
 {
     db = QSqlDatabase::addDatabase("QSQLITE","Workspace1");
     db.setDatabaseName(QDir::home().filePath(CONFIGDIR).append("/workspace.db"));
@@ -86,51 +78,29 @@ CGisListWks::CGisListWks(QWidget *parent)
     configDB();
 
     menuProject     = new QMenu(this);
-    actionEditPrj   = menuProject->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
     actionSaveAs    = menuProject->addAction(QIcon("://icons/32x32/SaveGISAs.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
     actionSave      = menuProject->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save"), this, SLOT(slotSaveProject()));
-    actionCloseProj = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
-    actionDelProj   = menuProject->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteProject()));
+    actionEditPrj   = menuProject->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
+    actionClose     = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
 
     connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
     connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotItemDoubleClicked(QTreeWidgetItem*,int)));
 
-    menuItemTrk     = new QMenu(this);
-    actionEditDetails = menuItemTrk->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
-    actionCopyItem  = menuItemTrk->addAction(QIcon("://icons/32x32/Copy.png"),tr("Copy to..."), this, SLOT(slotCopyItem()));
-    actionFocusTrk  = menuItemTrk->addAction(QIcon("://icons/32x32/TrkProfile.png"),tr("Track Profile"));
-    actionFocusTrk->setCheckable(true);
-    actionRangeTrk  = menuItemTrk->addAction(QIcon("://icons/32x32/SelectRange.png"),tr("Select Range"), this, SLOT(slotRangeTrk()));
-    actionEditTrk   = menuItemTrk->addAction(QIcon("://icons/32x32/LineMove.png"),tr("Edit Track Points"), this, SLOT(slotEditTrk()));
-    actionReverseTrk = menuItemTrk->addAction(QIcon("://icons/32x32/Reverse.png"),tr("Reverse Track"), this, SLOT(slotReverseTrk()));
-    actionCombineTrk = menuItemTrk->addAction(QIcon("://icons/32x32/Combine.png"),tr("Combine Tracks"), this, SLOT(slotCombineTrk()));
-    actionDelete    = menuItemTrk->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
-
-    menuItemWpt     = new QMenu(this);
-    menuItemWpt->addAction(actionEditDetails);
-    menuItemWpt->addAction(actionCopyItem);
-    actionMoveWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptMove.png"),tr("Move Waypoint"), this, SLOT(slotMoveWpt()));
-    actionProjWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptProj.png"),tr("Proj. Waypoint..."), this, SLOT(slotProjWpt()));
-    menuItemWpt->addAction(actionDelete);
-
-    menuItemRte     = new QMenu(this);
-    menuItemRte->addAction(actionEditDetails);
-    menuItemRte->addAction(actionCopyItem);
-    menuItemRte->addAction(actionDelete);
-
-
-    menuItemOvl     = new QMenu(this);
-    menuItemOvl->addAction(actionEditDetails);
-    menuItemOvl->addAction(actionCopyItem);
-    actionEditArea  = menuItemOvl->addAction(QIcon("://icons/32x32/AreaMove.png"),tr("Edit Area Points"), this, SLOT(slotEditArea()));
-    menuItemOvl->addAction(actionDelete);
-
-
     menuItem        = new QMenu(this);
-    menuItem->addAction(actionCopyItem);
-    menuItem->addAction(actionDelete);
-
+    actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));   
+    actionCopyItem  = menuItem->addAction(QIcon("://icons/32x32/Copy.png"),tr("Copy to..."), this, SLOT(slotCopyItem()));
+    actionMoveWpt   = menuItem->addAction(QIcon("://icons/32x32/WptMove.png"),tr("Move Waypoint"), this, SLOT(slotMoveWpt()));
+    actionProjWpt   = menuItem->addAction(QIcon("://icons/32x32/WptProj.png"),tr("Proj. Waypoint..."), this, SLOT(slotProjWpt()));
+    actionFocusTrk  = menuItem->addAction(QIcon("://icons/32x32/TrkProfile.png"),tr("Track Profile"));
+    actionRangeTrk  = menuItem->addAction(QIcon("://icons/32x32/SelectRange.png"),tr("Select Range"), this, SLOT(slotRangeTrk()));
+    actionEditTrk   = menuItem->addAction(QIcon("://icons/32x32/LineMove.png"),tr("Edit Track Points"), this, SLOT(slotEditTrk()));
+    actionReverseTrk = menuItem->addAction(QIcon("://icons/32x32/Reverse.png"),tr("Reverse Track"), this, SLOT(slotReverseTrk()));
+    actionCombineTrk = menuItem->addAction(QIcon("://icons/32x32/Combine.png"),tr("Combine Tracks"), this, SLOT(slotCombineTrk()));
+    actionEditArea   = menuItem->addAction(QIcon("://icons/32x32/AreaMove.png"),tr("Edit Area Points"), this, SLOT(slotEditArea()));
+    actionFocusTrk->setCheckable(true);
     connect(actionFocusTrk, SIGNAL(triggered(bool)), this, SLOT(slotFocusTrk(bool)));
+    actionDelete    = menuItem->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));    
+
     connect(qApp, SIGNAL(aboutToQuit ()), this, SLOT(slotSaveWorkspace()));
 
     SETTINGS;
@@ -141,16 +111,6 @@ CGisListWks::CGisListWks(QWidget *parent)
     {
         QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
     }
-#ifdef Q_OS_LINUX
-    deviceWatcher = new CDeviceWatcherLinux(this);
-#endif
-#ifdef Q_OS_WIN
-    deviceWatcher = new CDeviceWatcherWindows(this);
-#endif
-    if(deviceWatcher)
-    {
-        connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
-    }
 
     QTimer::singleShot(500, this, SLOT(slotLoadWorkspace()));
 }
@@ -256,11 +216,10 @@ void CGisListWks::setExternalMenu(QMenu * project)
 
 void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
 {
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
     QTreeWidgetItem * item1 = currentItem();
     QTreeWidgetItem * item2 = itemAt(e->pos());
 
+
     // changeing the item order is only valid for single selected items
     if(selectedItems().count() == 1)
     {
@@ -273,7 +232,8 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
             2.1) different parent -> copy
             3) go on with dragMoveEvent();
 
-        */
+         */
+
         CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(item1);
         CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(item2);
 
@@ -341,61 +301,14 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
             QTreeWidget::dragMoveEvent(e);
             return;
         }
-
-        /*
-            Never move/copy projects on devices. Data has to be removed or changed
-            to store a project and it's items on a device. Moving it back to the
-            workspace would conflict with the original project. To much hassle to
-            reslove this properly.
-        */
-        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
-        if(proj1 && proj1->isOnDevice())
-        {
-            e->setDropAction(Qt::IgnoreAction);
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
     }
 
-    /*
-        Test for other project, to change project order. But if other project
-        is on a device block the request. A project has to be copied to the
-        device via it's device item.
-    */
-    IGisProject * proj2 = dynamic_cast<IGisProject*>(item2);
-    if(proj2)
+    IGisProject * proj = dynamic_cast<IGisProject*>(item2);
+    if(proj && (proj != currentItem()->parent()))
     {
-        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
-        if(proj1)
-        {
-            e->setDropAction(proj2->isOnDevice() ? Qt::IgnoreAction : Qt::MoveAction);
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-
-        IGisItem * gisItem1 = dynamic_cast<IGisItem*>(item1);
-        if(gisItem1)
-        {
-            e->setDropAction(Qt::CopyAction);
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-    }
-
-    /*
-        Test for device as drop target. A device will copy the project into
-        it's own supported format.
-    */
-    IDevice * device = dynamic_cast<IDevice*>(item2);
-    if(device)
-    {
-        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
-        if(proj1 && !proj1->isOnDevice())
-        {
-            e->setDropAction(Qt::CopyAction);
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
+        e->setDropAction(Qt::CopyAction);
+        QTreeWidget::dragMoveEvent(e);
+        return;
     }
 
     e->setDropAction(Qt::IgnoreAction);
@@ -404,7 +317,6 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
 
 void CGisListWks::dropEvent ( QDropEvent  * e )
 {
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items   = selectedItems();
     if(items.isEmpty())
@@ -430,7 +342,7 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
         5) Test if item under cursor is a project
         6) If project and project is not item's project create a copy
 
-     */
+    */
     if(items.size() == 1)
     {
         // calc. index offset (below/above item)
@@ -443,9 +355,7 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
         IGisProject * prj2 = dynamic_cast<IGisProject*>(itemAt(e->pos()));
         if(prj1 && prj2)
         {
-            prj2->setFlags(prj2->flags() & ~Qt::ItemIsDropEnabled);
             QTreeWidget::dropEvent(e);
-            prj2->setFlags(prj2->flags() |  Qt::ItemIsDropEnabled);
             emit sigChanged();
             return;
         }
@@ -559,34 +469,9 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
             }
         }
     }
-
-    IDevice * device = dynamic_cast<IDevice*>(itemAt(e->pos()));
-    if(device)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-        if(project)
-        {
-            int lastResult = CSelectCopyAction::eResultNone;
-            device->insertCopyOfProject(project, lastResult);
-        }
-    }
-
     emit sigChanged();
 }
 
-void CGisListWks::removeDevice(const QString& key)
-{
-    for(int i = 0; i < topLevelItemCount(); i++)
-    {
-        IDevice * device = dynamic_cast<IDevice*>(topLevelItem(i));
-        if(device && device->getKey() == key)
-        {
-            delete device;
-            emit sigChanged();
-            return;
-        }
-    }
-}
 
 bool CGisListWks::hasProject(IGisProject * project)
 {
@@ -601,11 +486,11 @@ bool CGisListWks::hasProject(IGisProject * project)
         {
             if(item != project)
             {
-                return true;
+                return(true);
             }
         }
     }
-    return false;
+    return(false);
 }
 
 IGisProject * CGisListWks::getProjectByKey(const QString& key)
@@ -636,6 +521,7 @@ CDBProject * CGisListWks::getProjectById(quint64 id, const QString& db)
         }
     }
     return 0;
+
 }
 
 void CGisListWks::slotSaveWorkspace()
@@ -764,9 +650,9 @@ void CGisListWks::slotLoadWorkspace()
 
 void CGisListWks::slotContextMenu(const QPoint& point)
 {
-    QPoint p = mapToGlobal(point);
     if(selectedItems().isEmpty() && menuNone)
     {
+        QPoint p = mapToGlobal(point);
         menuNone->exec(p);
         return;
     }
@@ -776,10 +662,9 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
         if(project != 0)
         {
-            bool isOnDevice = project->isOnDevice();
-            actionCloseProj->setVisible(!isOnDevice);
-            actionDelProj->setVisible(isOnDevice);
-            actionEditPrj->setVisible(false);           
+            actionEditPrj->setVisible(false);
+
+            QPoint p = mapToGlobal(point);
             menuProject->exec(p);
             return;
         }
@@ -787,8 +672,18 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
         if(gisItem != 0)
         {
+            actionEditDetails->setVisible(false);
+            actionProjWpt->setVisible(false);
+            actionMoveWpt->setVisible(false);
+            actionFocusTrk->setVisible(false);
+            actionEditTrk->setVisible(false);
+            actionReverseTrk->setVisible(false);
+            actionCombineTrk->setVisible(false);
+            actionRangeTrk->setVisible(false);
+            actionEditArea->setVisible(false);
+
+            QPoint p = mapToGlobal(point);
             menuItem->exec(p);
-            return;
         }
         return;
     }
@@ -798,20 +693,9 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
         if(project != 0)
         {
-            if(project->getType() == IGisProject::eTypeLostFound)
-            {
-                actionDelProj->setVisible(false);
-                actionSave->setVisible(false);
-                actionEditPrj->setVisible(false);
-            }
-            else
-            {
-                bool isOnDevice = project->isOnDevice();
-                actionCloseProj->setVisible(!isOnDevice);
-                actionDelProj->setVisible(isOnDevice);
-                actionSave->setVisible(true);
-                actionEditPrj->setVisible(true);
-            }
+            actionEditPrj->setVisible(true);
+
+            QPoint p = mapToGlobal(point);
             menuProject->exec(p);
             return;
         }
@@ -819,33 +703,57 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
         if(gisItem != 0)
         {
-            bool isOnDevice = gisItem->isOnDevice();
-            switch(gisItem->type())
-            {
-            case IGisItem::eTypeTrk:
-                actionCombineTrk->setDisabled(isOnDevice);
-                actionRangeTrk->setDisabled(isOnDevice);
-                actionReverseTrk->setDisabled(isOnDevice);
-                actionEditTrk->setDisabled(isOnDevice);
-                actionFocusTrk->setChecked(gisItem->hasUserFocus());
-                menuItemTrk->exec(p);
-                break;
+            actionEditDetails->setVisible(true);
 
-            case IGisItem::eTypeWpt:
-                actionMoveWpt->setDisabled(isOnDevice);
-                actionProjWpt->setDisabled(isOnDevice);
-                menuItemWpt->exec(p);
-                break;
+            // try to cast item to waypoint and hide/show actions on result
+            CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(gisItem);
+            if(wpt == 0)
+            {
+                actionProjWpt->setVisible(false);
+                actionMoveWpt->setVisible(false);
+            }
+            else
+            {
+                actionProjWpt->setVisible(true);
+                actionMoveWpt->setVisible(true);
+                actionMoveWpt->setEnabled(!wpt->isReadOnly());
+                actionProjWpt->setEnabled(!wpt->isGeocache());
+            }
 
-            case IGisItem::eTypeRte:
-                menuItemRte->exec(p);
-                break;
+            // try to cast item to track and hide/show actions on result
+            CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(gisItem);
+            if(trk == 0)
+            {
+                actionFocusTrk->setVisible(false);
+                actionEditTrk->setVisible(false);
+                actionReverseTrk->setVisible(false);
+                actionCombineTrk->setVisible(false);
+                actionRangeTrk->setVisible(false);
+            }
+            else
+            {
+                actionFocusTrk->setVisible(true);
+                actionEditTrk->setVisible(true);
+                actionReverseTrk->setVisible(true);
+                actionCombineTrk->setVisible(true);
+                actionRangeTrk->setVisible(true);
+                actionFocusTrk->setChecked(trk->hasUserFocus());
+                actionEditTrk->setEnabled(!trk->isReadOnly());
+            }
 
-            case IGisItem::eTypeOvl:
-                actionEditArea->setDisabled(isOnDevice);
-                menuItemOvl->exec(p);
-                break;
+            // try to cast item to track and hide/show actions on result
+            CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(gisItem);
+            if(area == 0)
+            {
+                actionEditArea->setVisible(false);
+            }
+            else
+            {
+                actionEditArea->setVisible(true);
             }
+            // display menu
+            QPoint p = mapToGlobal(point);
+            menuItem->exec(p);
             return;
         }
     }
@@ -866,31 +774,6 @@ void CGisListWks::slotCloseProject()
     emit sigChanged();
 }
 
-void CGisListWks::slotDeleteProject()
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            int res = QMessageBox::question(0, QObject::tr("Delete project..."), QObject::tr("Do you really want to delete %1?").arg(project->getFilename()), QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok);
-            if(res != QMessageBox::Ok)
-            {
-                continue;
-            }
-
-
-            if(project->remove())
-            {
-                delete project;
-            }
-        }
-    }
-    emit sigChanged();
-}
-
 void CGisListWks::slotSaveProject()
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
@@ -930,6 +813,7 @@ void CGisListWks::slotEditPrj()
     {
         project->edit();
     }
+
 }
 
 void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
@@ -954,8 +838,8 @@ void CGisListWks::slotEditItem()
 }
 
 void CGisListWks::slotDeleteItem()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
+{        
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items       = selectedItems();
     QMessageBox::StandardButtons last   = QMessageBox::NoButton;
@@ -977,7 +861,7 @@ void CGisListWks::slotDeleteItem()
             /*
                 collect database projects to update their counterpart in
                 the database view, after all operations are done.
-             */
+            */
             if(yes && project->getType() == IGisProject::eTypeDb)
             {
                 projects << dynamic_cast<CDBProject*>(project);
@@ -1181,21 +1065,13 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
     case eEvtD2WShowFolder:
     {
         CEvtD2WShowFolder * evt = (CEvtD2WShowFolder*)e;
         CDBProject * project =  getProjectById(evt->id, evt->db);
         if(project == 0)
         {
-            if(evt->id == 0)
-            {
-                project = new CLostFoundProject(evt->db, this);
-            }
-            else
-            {
-                project = new CDBProject(evt->db, evt->id, this);
-            }
+            project = new CDBProject(evt->db, evt->id, this);
             if(!project->isValid())
             {
                 delete project;
@@ -1205,7 +1081,6 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
     case eEvtD2WHideFolder:
     {
         CEvtD2WHideFolder * evt = (CEvtD2WHideFolder*)e;
@@ -1216,7 +1091,6 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
     case eEvtD2WShowItems:
     {
         CEvtD2WShowItems * evt = (CEvtD2WShowItems*)e;
@@ -1229,7 +1103,6 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
     case eEvtD2WHideItems:
     {
         CEvtD2WHideItems * evt = (CEvtD2WHideItems*)e;
@@ -1242,19 +1115,6 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
-
-    case eEvtD2WUpdateLnF:
-    {
-        CEvtD2WUpdateLnF * evt = (CEvtD2WUpdateLnF*)e;
-        CLostFoundProject * project = dynamic_cast<CLostFoundProject*>(getProjectById(evt->id, evt->db));
-        if(project)
-        {
-            project->updateFromDb();
-        }
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
     }
 
     return QTreeWidget::event(e);
diff --git a/.hg/Trashcan/CGisListWks_w3G0J5.cpp.bak b/.hg/Trashcan/CGisListWks_w3G0J5.cpp.bak
new file mode 100644
index 0000000..cafa59e
--- /dev/null
+++ b/.hg/Trashcan/CGisListWks_w3G0J5.cpp.bak
@@ -0,0 +1,164 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/CGisListWks.h"
+#include "gis/CGisProject.h"
+#include "gis/IGisItem.h"
+#include "gis/CGisWidget.h"
+#include "CMainWindow.h"
+
+#include <QtWidgets>
+
+CGisListWks::CGisListWks(QWidget *parent)
+    : QTreeWidget(parent)
+{
+
+    menuProject     = new QMenu(this);
+    actionSaveAs    = menuProject->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
+    actionSave      = menuProject->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save"), this, SLOT(slotSaveProject()));    
+    actionClose     = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
+
+    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
+    connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotItemDoubleClicked(QTreeWidgetItem*,int)));
+
+    menuItem        = new QMenu(this);
+    actionEditDetails = menuItem->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
+    actionDelete    = menuItem->addAction(QIcon("://icons/48x48/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
+}
+
+CGisListWks::~CGisListWks()
+{
+
+}
+
+bool CGisListWks::hasProject(const QString& key)
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+    for(int i = 0; i < topLevelItemCount(); i++)
+    {
+        CGisProject * item = dynamic_cast<CGisProject*>(topLevelItem(i));
+        if(item && item->getKey() == key)
+        {
+            return true;
+        }
+    }
+    return false;
+}
+
+void CGisListWks::slotContextMenu(const QPoint& point)
+{
+    CGisProject * project = dynamic_cast<CGisProject*>(currentItem());
+    if(project != 0)
+    {
+        QPoint p = mapToGlobal(point);
+        menuProject->exec(p);
+    }
+
+    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
+    if(gisItem != 0)
+    {
+        QPoint p = mapToGlobal(point);
+        menuItem->exec(p);
+    }
+
+}
+
+void CGisListWks::slotCloseProject()
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+    QList<QTreeWidgetItem*> items = selectedItems();
+    foreach(QTreeWidgetItem * item, items)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(item);
+        if(project != 0)
+        {
+            delete project;
+        }
+    }
+    emit sigChanged();
+}
+
+void CGisListWks::slotSaveProject()
+{
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    IGisItem::mutexItems.lock();
+
+    QList<QTreeWidgetItem*> items = selectedItems();
+    foreach(QTreeWidgetItem * item, items)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(item);
+        if(project != 0)
+        {
+            project->save();
+        }
+    }
+    IGisItem::mutexItems.unlock();
+    QApplication::restoreOverrideCursor();
+}
+
+void CGisListWks::slotSaveAsProject()
+{
+    IGisItem::mutexItems.lock();
+
+    QList<QTreeWidgetItem*> items = selectedItems();
+    foreach(QTreeWidgetItem * item, items)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(item);
+        if(project != 0)
+        {
+            project->saveAs();
+        }
+    }
+    IGisItem::mutexItems.unlock();
+
+}
+
+void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
+{
+    IGisItem::mutexItems.lock();
+    IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+    if(gisItem != 0)
+    {
+        CMainWindow::self().zoomWksTo(gisItem->getBoundingRect());
+    }    
+    IGisItem::mutexItems.unlock();
+}
+
+void CGisListWks::slotEditItem()
+{
+    IGisItem::mutexItems.lock();
+    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
+    if(gisItem != 0)
+    {
+        QString key = gisItem->getKey();
+        CGisWidget::self().editItemByKey(key);
+    }
+    IGisItem::mutexItems.unlock();
+}
+
+void CGisListWks::slotDeleteItem()
+{
+    IGisItem::mutexItems.lock();
+    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
+    if(gisItem != 0)
+    {
+        QString key = gisItem->getKey();
+        CGisWidget::self().delItemByKey(key);
+    }
+    IGisItem::mutexItems.unlock();
+}
diff --git a/.hg/Trashcan/CGisWidget_0r6eN4.cpp.bak b/.hg/Trashcan/CGisWidget_0r6eN4.cpp.bak
new file mode 100644
index 0000000..8d65daa
--- /dev/null
+++ b/.hg/Trashcan/CGisWidget_0r6eN4.cpp.bak
@@ -0,0 +1,215 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/CGisWidget.h"
+#include "gis/CGisProject.h"
+#include "gis/IGisItem.h"
+#include "gis/CGisDraw.h"
+#include "CMainWindow.h"
+
+#include <QtWidgets>
+#include <QtXml>
+
+CGisWidget * CGisWidget::pSelf = 0;
+
+CGisWidget::CGisWidget(QWidget *parent)
+    : QWidget(parent)
+{
+    pSelf = this;
+    setupUi(this);
+
+    treeWks->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
+
+
+    connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+}
+
+CGisWidget::~CGisWidget()
+{
+
+}
+
+void CGisWidget::loadGpx(const QString& filename)
+{
+    // cerate file instance
+    QFile file(filename);
+    file.open(QIODevice::ReadOnly);
+
+    // create md5 hash
+    QCryptographicHash md5(QCryptographicHash::Md5);
+    md5.addData(file.readAll());
+    file.close();
+    QString key = md5.result().toHex();
+
+    // skip if project is already loaded
+    if(treeWks->hasProject(key))
+    {
+        return;
+    }
+
+    // add project to workspace
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    IGisItem::mutexItems.lock();
+    CGisProject * item = new CGisProject(filename, key, treeWks);
+    if(!item->isValid())
+    {
+        delete item;
+    }
+    IGisItem::mutexItems.unlock();    
+    QApplication::restoreOverrideCursor();
+
+    emit sigChanged();
+}
+
+void CGisWidget::slotSaveAll()
+{
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * item = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(item == 0)
+        {
+            continue;
+        }
+        item->save();
+    }
+    IGisItem::mutexItems.unlock();
+    QApplication::restoreOverrideCursor();
+}
+
+
+void CGisWidget::getItemsByPos(const QPointF& pos, QList<IGisItem*>& items)
+{
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(project == 0)
+        {
+            continue;
+        }
+        project->getItemByPos(pos, items);
+    }
+    IGisItem::mutexItems.unlock();
+}
+
+IGisItem * CGisWidget::getItemByKey(const QString& key)
+{
+    IGisItem * item = 0;
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(project == 0)
+        {
+            continue;
+        }
+        item = project->getItemByKey(key);
+        if(item != 0)
+        {
+            break;
+        }
+    }
+    IGisItem::mutexItems.unlock();
+    return item;
+}
+
+void CGisWidget::delItemByKey(const QString& key)
+{
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(project == 0)
+        {
+            continue;
+        }
+        project->delItemByKey(key);
+        if(project->childCount() == 0)
+        {
+            delete project;
+        }
+    }
+
+    IGisItem::mutexItems.unlock();
+
+    emit sigChanged();
+}
+
+void CGisWidget::editItemByKey(const QString& key)
+{
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(project == 0)
+        {
+            continue;
+        }
+        project->editItemByKey(key);
+    }
+
+    IGisItem::mutexItems.unlock();
+
+    emit sigChanged();
+}
+
+void CGisWidget::draw(QPainter& p, const QRectF& viewport, CGisDraw * gis)
+{
+    QFontMetricsF fm(CMainWindow::self().getMapFont());
+    QList<QRectF> blockedAreas;
+    QSet<QString> seenKeys;
+
+    IGisItem::mutexItems.lock();
+    // draw mandatory stuff first
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        if(gis->needsRedraw())
+        {
+            break;
+        }
+
+        CGisProject * item = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(item == 0)
+        {
+            continue;
+        }
+        item->drawItem(p, viewport, blockedAreas, seenKeys, gis);
+    }
+
+    // reset seen keys as lables will build the list a second time
+    seenKeys.clear();
+
+    // draw optional labels second    
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        if(gis->needsRedraw())
+        {
+            break;
+        }
+
+        CGisProject * item = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(item == 0)
+        {
+            continue;
+        }
+        item->drawLabel(p, viewport, blockedAreas, seenKeys, fm, gis);
+    }
+    IGisItem::mutexItems.unlock();
+}
diff --git a/.hg/Trashcan/CGisWidget_1Gl0ex.cpp.bak b/.hg/Trashcan/CGisWidget_1Gl0ex.cpp.bak
new file mode 100644
index 0000000..c484731
--- /dev/null
+++ b/.hg/Trashcan/CGisWidget_1Gl0ex.cpp.bak
@@ -0,0 +1,217 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/CGisWidget.h"
+#include "gis/CGisProject.h"
+#include "gis/IGisItem.h"
+#include "gis/CGisDraw.h"
+#include "CMainWindow.h"
+
+#include <QtWidgets>
+#include <QtXml>
+
+CGisWidget * CGisWidget::pSelf = 0;
+
+CGisWidget::CGisWidget(QWidget *parent)
+    : QWidget(parent)
+{
+    pSelf = this;
+    setupUi(this);
+
+//    treeWks->header()->setSectionResizeMode(0,QHeaderView::Interactive);
+    treeWks->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
+//    treeWks->header()->setCascadingSectionResizes(true);
+
+
+    connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+}
+
+CGisWidget::~CGisWidget()
+{
+
+}
+
+void CGisWidget::loadGpx(const QString& filename)
+{
+    // cerate file instance
+    QFile file(filename);
+    file.open(QIODevice::ReadOnly);
+
+    // create md5 hash
+    QCryptographicHash md5(QCryptographicHash::Md5);
+    md5.addData(file.readAll());
+    file.close();
+    QString key = md5.result().toHex();
+
+    // skip if project is already loaded
+    if(treeWks->hasProject(key))
+    {
+        return;
+    }
+
+    // add project to workspace
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    IGisItem::mutexItems.lock();
+    CGisProject * item = new CGisProject(filename, key, treeWks);
+    if(!item->isValid())
+    {
+        delete item;
+    }
+    IGisItem::mutexItems.unlock();    
+    QApplication::restoreOverrideCursor();
+
+    emit sigChanged();
+}
+
+void CGisWidget::slotSaveAll()
+{
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * item = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(item == 0)
+        {
+            continue;
+        }
+        item->save();
+    }
+    IGisItem::mutexItems.unlock();
+    QApplication::restoreOverrideCursor();
+}
+
+
+void CGisWidget::getItemsByPos(const QPointF& pos, QList<IGisItem*>& items)
+{
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(project == 0)
+        {
+            continue;
+        }
+        project->getItemByPos(pos, items);
+    }
+    IGisItem::mutexItems.unlock();
+}
+
+IGisItem * CGisWidget::getItemByKey(const QString& key)
+{
+    IGisItem * item = 0;
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(project == 0)
+        {
+            continue;
+        }
+        item = project->getItemByKey(key);
+        if(item != 0)
+        {
+            break;
+        }
+    }
+    IGisItem::mutexItems.unlock();
+    return item;
+}
+
+void CGisWidget::delItemByKey(const QString& key)
+{
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(project == 0)
+        {
+            continue;
+        }
+        project->delItemByKey(key);
+        if(project->childCount() == 0)
+        {
+            delete project;
+        }
+    }
+
+    IGisItem::mutexItems.unlock();
+
+    emit sigChanged();
+}
+
+void CGisWidget::editItemByKey(const QString& key)
+{
+    IGisItem::mutexItems.lock();
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        CGisProject * project = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(project == 0)
+        {
+            continue;
+        }
+        project->editItemByKey(key);
+    }
+
+    IGisItem::mutexItems.unlock();
+
+    emit sigChanged();
+}
+
+void CGisWidget::draw(QPainter& p, const QRectF& viewport, CGisDraw * gis)
+{
+    QFontMetricsF fm(CMainWindow::self().getMapFont());
+    QList<QRectF> blockedAreas;
+    QSet<QString> seenKeys;
+
+    IGisItem::mutexItems.lock();
+    // draw mandatory stuff first
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        if(gis->needsRedraw())
+        {
+            break;
+        }
+
+        CGisProject * item = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(item == 0)
+        {
+            continue;
+        }
+        item->drawItem(p, viewport, blockedAreas, seenKeys, gis);
+    }
+
+    // reset seen keys as lables will build the list a second time
+    seenKeys.clear();
+
+    // draw optional labels second    
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        if(gis->needsRedraw())
+        {
+            break;
+        }
+
+        CGisProject * item = dynamic_cast<CGisProject*>(treeWks->topLevelItem(i));
+        if(item == 0)
+        {
+            continue;
+        }
+        item->drawLabel(p, viewport, blockedAreas, seenKeys, fm, gis);
+    }
+    IGisItem::mutexItems.unlock();
+}
diff --git a/CMakeLists.txt b/.hg/Trashcan/CMakeLists_OYf8I5.txt.bak
similarity index 97%
copy from CMakeLists.txt
copy to .hg/Trashcan/CMakeLists_OYf8I5.txt.bak
index a63ad3a..95b1823 100644
--- a/CMakeLists.txt
+++ b/.hg/Trashcan/CMakeLists_OYf8I5.txt.bak
@@ -19,8 +19,8 @@ endif(WIN32)
 
 set(APPLICATION_NAME qmapshack)
 
-set(APPLICATION_VERSION_MAJOR "0")
-set(APPLICATION_VERSION_MINOR "12")
+set(APPLICATION_VERSION_MAJOR "1")
+set(APPLICATION_VERSION_MINOR "0")
 set(APPLICATION_VERSION_PATCH "0")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
diff --git a/.hg/Trashcan/CMakeLists_SIS4BY.txt.bak b/.hg/Trashcan/CMakeLists_SIS4BY.txt.bak
new file mode 100644
index 0000000..88273f0
--- /dev/null
+++ b/.hg/Trashcan/CMakeLists_SIS4BY.txt.bak
@@ -0,0 +1,256 @@
+
+# Find includes in corresponding build directories
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+# Instruct CMake to run moc automatically when needed.
+set(CMAKE_AUTOMOC ON)
+
+# Find the QtWidgets library
+find_package(Qt5Widgets)
+find_package(Qt5Core)
+find_package(Qt5Xml)
+find_package(Qt5LinguistTools)
+find_package(GDAL REQUIRED)
+find_package(PROJ REQUIRED)
+
+set( SRCS
+    main.cpp
+    GeoMath.cpp
+    CMainWindow.cpp
+    CAbout.cpp
+    helpers/CInputDialog.cpp
+    helpers/CPositionDialog.cpp
+    helpers/CWptIconDialog.cpp
+    helpers/CTextEditWidget.cpp
+    canvas/CCanvas.cpp
+    canvas/CCanvasSetup.cpp
+    canvas/IDrawContext.cpp
+    canvas/IDrawObject.cpp
+    dem/IDem.cpp
+    map/IMapProp.cpp
+    dem/IDemProp.cpp
+    dem/CDemDraw.cpp
+    dem/CDemVRT.cpp
+    dem/CDemList.cpp
+    dem/CDemItem.cpp
+    dem/CDemPathSetup.cpp
+    dem/CDemPropSetup.cpp
+    map/IMap.cpp
+    map/CMapDraw.cpp
+    map/CMapItem.cpp
+    map/CMapList.cpp
+    map/CMapRMAP.cpp
+    map/CMapJNX.cpp
+    map/CMapIMG.cpp
+    map/CMapMAP.cpp
+    map/CMapVRT.cpp
+    map/CMapPathSetup.cpp    
+    map/CMapPropSetup.cpp
+    map/garmin/IGarminStrTbl.cpp
+    map/garmin/CGarminStrTbl6.cpp
+    map/garmin/CGarminStrTbl8.cpp
+    map/garmin/CGarminStrTblUtf8.cpp
+    map/garmin/CGarminPoint.cpp
+    map/garmin/CGarminPolygon.cpp
+    map/garmin/CGarminTyp.cpp
+    units/IUnit.cpp
+    units/CUnitImperial.cpp
+    units/CUnitMetric.cpp
+    units/CUnitNautic.cpp
+    units/CTimeZoneSetup.cpp
+    grid/CGrid.cpp
+    grid/CGridSetup.cpp
+    grid/CProjWizard.cpp
+    grid/mitab.cpp
+    mouse/IMouse.cpp
+    mouse/IScrOpt.cpp
+    mouse/CMouseNormal.cpp
+    mouse/CScrOptUnclutter.cpp    
+    gis/WptIcons.cpp
+    gis/CGisDraw.cpp
+    gis/IGisItem.cpp
+    gis/wpt/CGisItemWpt.cpp
+    gis/wpt/CScrOptWpt.cpp
+    gis/wpt/CDetailsWpt.cpp
+    gis/trk/CGisItemTrk.cpp
+    gis/trk/CScrOptTrk.cpp
+    gis/rte/CGisItemRte.cpp
+    gis/rte/CScrOptRte.cpp
+    gis/CGisWidget.cpp
+    gis/CGisListDB.cpp
+    gis/CGisListWks.cpp
+    gis/CGisProject.cpp    
+)
+
+set( HDRS
+
+    version.h
+    GeoMath.h
+    CMainWindow.h
+    CAbout.h
+    helpers/Platform.h
+    helpers/CFileExt.h
+    helpers/CAppOpts.h
+    helpers/CSettings.h
+    helpers/CInputDialog.h
+    helpers/CPositionDialog.h
+    helpers/CWptIconDialog.h
+    helpers/CTextEditWidget.h
+    canvas/CCanvas.h
+    canvas/CCanvasSetup.h
+    canvas/IDrawContext.h
+    canvas/IDrawObject.h
+    dem/IDem.h
+    dem/IDemProp.h
+    dem/CDemDraw.h
+    dem/CDemVRT.h
+    dem/CDemList.h
+    dem/CDemItem.h
+    dem/CDemPathSetup.h
+    dem/CDemPropSetup.h
+    map/IMap.h
+    map/IMapProp.h
+    map/CMapDraw.h
+    map/CMapItem.h
+    map/CMapList.h
+    map/CMapRMAP.h
+    map/CMapJNX.h
+    map/CMapIMG.h
+    map/CMapMAP.h
+    map/CMapVRT.h
+    map/CMapPathSetup.h
+    map/CMapPropSetup.h    
+    map/garmin/Garmin.h
+    map/garmin/IGarminStrTbl.h
+    map/garmin/CGarminStrTbl6.h
+    map/garmin/CGarminStrTbl8.h
+    map/garmin/CGarminStrTblUtf8.h
+    map/garmin/CGarminPoint.h
+    map/garmin/CGarminPolygon.h
+    map/garmin/CGarminTyp.h
+    units/IUnit.h
+    units/CUnitImperial.h
+    units/CUnitMetric.h
+    units/CUnitNautic.h
+    units/CTimeZoneSetup.h
+    grid/CGrid.h
+    grid/CGridSetup.h
+    grid/CProjWizard.h
+    grid/mitab.h
+    mouse/IMouse.h
+    mouse/IScrOpt.h
+    mouse/CMouseNormal.h
+    mouse/CScrOptUnclutter.h    
+    gis/WptIcons.h
+    gis/CGisDraw.h
+    gis/IGisItem.h
+    gis/wpt/CGisItemWpt.h
+    gis/wpt/CScrOptWpt.h
+    gis/wpt/CDetailsWpt.h
+    gis/trk/CGisItemTrk.h
+    gis/trk/CScrOptTrk.h
+    gis/rte/CGisItemRte.h
+    gis/rte/CScrOptRte.h
+    gis/CGisWidget.h
+    gis/CGisListDB.h
+    gis/CGisListWks.h
+    gis/CGisProject.h    
+)
+
+set( UIS
+    IMainWindow.ui
+    IAbout.ui
+    helpers/IInputDialog.ui
+    helpers/IPositionDialog.ui
+    helpers/IWptIconDialog.ui
+    helpers/ITextEditWidget.ui
+    canvas/ICanvasSetup.ui
+    dem/IDemList.ui
+    dem/IDemPathSetup.ui
+    dem/IDemPropSetup.ui
+    map/IMapList.ui
+    map/IMapPathSetup.ui
+    map/IMapPropSetup.ui
+    grid/IGridSetup.ui
+    grid/IProjWizard.ui
+    gis/IGisWidget.ui
+    gis/wpt/IScrOptWpt.ui
+    gis/wpt/IDetailsWpt.ui
+    gis/trk/IScrOptTrk.ui
+    gis/rte/IScrOptRte.ui
+    units/ITimeZoneSetup.ui
+)
+
+set( RCS
+    resources.qrc
+)
+
+
+qt5_wrap_ui(UI_HDRS ${UIS})
+qt5_add_resources(RC_SRCS ${RCS})
+
+if(UNIX)
+    add_definitions(-Wall)
+endif(UNIX)
+
+
+file(GLOB TRANSLATIONS_FILES locale/*.ts)
+
+
+qt5_add_translation(
+    ${APPLICATION_NAME}_QM_FILES
+    ${TRANSLATIONS_FILES}
+)
+
+
+set(ALLINP
+    ${SRCS}
+    ${HDRS}
+    ${UI_HDRS}
+    ${RC_SRCS}
+    ${${APPLICATION_NAME}_QM_FILES}
+)
+
+include_directories(
+    ${CMAKE_BINARY_DIR}
+    ${CMAKE_SOURCE_DIR}/3rdparty/CGetOpt
+    ${GDAL_INCLUDE_DIRS}
+    ${PROJ_INCLUDE_DIRS}
+
+)
+
+
+
+# Tell CMake to create the helloworld executable
+add_executable(${APPLICATION_NAME} WIN32 ${ALLINP})
+
+# Use the Widgets module from Qt 5.
+target_link_libraries(${APPLICATION_NAME}
+    Qt5::Widgets
+    Qt5::Xml
+    CGetOpt
+    ${GDAL_LIBRARIES}
+    ${PROJ_LIBRARIES}
+
+)
+
+install(
+    TARGETS
+      ${APPLICATION_NAME}
+    DESTINATION
+      ${BIN_INSTALL_DIR}
+)
+
+if (UNIX AND NOT WIN32 AND NOT APPLE)
+install(
+    FILES
+        ${${APPLICATION_NAME}_QM_FILES}
+    DESTINATION
+        ${DATA_INSTALL_PREFIX}/${APPLICATION_NAME}/translations)
+endif (UNIX AND NOT WIN32 AND NOT APPLE)
+
+if (APPLE)
+add_custom_target(locversion.plist ALL
+    COMMAND
+        ${CMAKE_SOURCE_DIR}/MacOSX/mklocversion.sh ${MAC_BUNDLE_PATH} ${${APPLICATION_NAME}_QM_FILES}
+)
+endif (APPLE)
diff --git a/CMakeLists.txt b/.hg/Trashcan/CMakeLists_XwOIvC.txt.bak
similarity index 96%
copy from CMakeLists.txt
copy to .hg/Trashcan/CMakeLists_XwOIvC.txt.bak
index a63ad3a..116fd7e 100644
--- a/CMakeLists.txt
+++ b/.hg/Trashcan/CMakeLists_XwOIvC.txt.bak
@@ -19,9 +19,9 @@ endif(WIN32)
 
 set(APPLICATION_NAME qmapshack)
 
-set(APPLICATION_VERSION_MAJOR "0")
-set(APPLICATION_VERSION_MINOR "12")
-set(APPLICATION_VERSION_PATCH "0")
+set(APPLICATION_VERSION_MAJOR "1")
+set(APPLICATION_VERSION_MINOR "X")
+set(APPLICATION_VERSION_PATCH "X")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
 
diff --git a/.hg/Trashcan/CMakeLists_lr2bNv.txt.bak b/.hg/Trashcan/CMakeLists_lr2bNv.txt.bak
new file mode 100644
index 0000000..e9e689e
--- /dev/null
+++ b/.hg/Trashcan/CMakeLists_lr2bNv.txt.bak
@@ -0,0 +1,253 @@
+
+# Find includes in corresponding build directories
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+# Instruct CMake to run moc automatically when needed.
+set(CMAKE_AUTOMOC ON)
+
+# Find the QtWidgets library
+find_package(Qt5Widgets)
+find_package(Qt5Core)
+find_package(Qt5Xml)
+find_package(Qt5LinguistTools)
+find_package(GDAL REQUIRED)
+find_package(PROJ REQUIRED)
+
+set( SRCS
+    main.cpp
+    GeoMath.cpp
+    CMainWindow.cpp
+    CAbout.cpp
+    helpers/CInputDialog.cpp
+    helpers/CPositionDialog.cpp
+    helpers/CWptIconDialog.cpp
+    canvas/CCanvas.cpp
+    canvas/CCanvasSetup.cpp
+    canvas/IDrawContext.cpp
+    canvas/IDrawObject.cpp
+    dem/IDem.cpp
+    map/IMapProp.cpp
+    dem/IDemProp.cpp
+    dem/CDemDraw.cpp
+    dem/CDemVRT.cpp
+    dem/CDemList.cpp
+    dem/CDemItem.cpp
+    dem/CDemPathSetup.cpp
+    dem/CDemPropSetup.cpp
+    map/IMap.cpp
+    map/CMapDraw.cpp
+    map/CMapItem.cpp
+    map/CMapList.cpp
+    map/CMapRMAP.cpp
+    map/CMapJNX.cpp
+    map/CMapIMG.cpp
+    map/CMapMAP.cpp
+    map/CMapVRT.cpp
+    map/CMapPathSetup.cpp    
+    map/CMapPropSetup.cpp
+    map/garmin/IGarminStrTbl.cpp
+    map/garmin/CGarminStrTbl6.cpp
+    map/garmin/CGarminStrTbl8.cpp
+    map/garmin/CGarminStrTblUtf8.cpp
+    map/garmin/CGarminPoint.cpp
+    map/garmin/CGarminPolygon.cpp
+    map/garmin/CGarminTyp.cpp
+    units/IUnit.cpp
+    units/CUnitImperial.cpp
+    units/CUnitMetric.cpp
+    units/CUnitNautic.cpp
+    units/CTimeZoneSetup.cpp
+    grid/CGrid.cpp
+    grid/CGridSetup.cpp
+    grid/CProjWizard.cpp
+    grid/mitab.cpp
+    mouse/IMouse.cpp
+    mouse/IScrOpt.cpp
+    mouse/CMouseNormal.cpp
+    mouse/CScrOptUnclutter.cpp    
+    gis/WptIcons.cpp
+    gis/CGisDraw.cpp
+    gis/IGisItem.cpp
+    gis/wpt/CGisItemWpt.cpp
+    gis/wpt/CScrOptWpt.cpp
+    gis/wpt/CDetailsWpt.cpp
+    gis/trk/CGisItemTrk.cpp
+    gis/trk/CScrOptTrk.cpp
+    gis/rte/CGisItemRte.cpp
+    gis/rte/CScrOptRte.cpp
+    gis/CGisWidget.cpp
+    gis/CGisListDB.cpp
+    gis/CGisListWks.cpp
+    gis/CGisProject.cpp    
+)
+
+set( HDRS
+
+    version.h
+    GeoMath.h
+    CMainWindow.h
+    CAbout.h
+    helpers/Platform.h
+    helpers/CFileExt.h
+    helpers/CAppOpts.h
+    helpers/CSettings.h
+    helpers/CInputDialog.h
+    helpers/CPositionDialog.h
+    helpers/CWptIconDialog.h
+    canvas/CCanvas.h
+    canvas/CCanvasSetup.h
+    canvas/IDrawContext.h
+    canvas/IDrawObject.h
+    dem/IDem.h
+    dem/IDemProp.h
+    dem/CDemDraw.h
+    dem/CDemVRT.h
+    dem/CDemList.h
+    dem/CDemItem.h
+    dem/CDemPathSetup.h
+    dem/CDemPropSetup.h
+    map/IMap.h
+    map/IMapProp.h
+    map/CMapDraw.h
+    map/CMapItem.h
+    map/CMapList.h
+    map/CMapRMAP.h
+    map/CMapJNX.h
+    map/CMapIMG.h
+    map/CMapMAP.h
+    map/CMapVRT.h
+    map/CMapPathSetup.h
+    map/CMapPropSetup.h    
+    map/garmin/Garmin.h
+    map/garmin/IGarminStrTbl.h
+    map/garmin/CGarminStrTbl6.h
+    map/garmin/CGarminStrTbl8.h
+    map/garmin/CGarminStrTblUtf8.h
+    map/garmin/CGarminPoint.h
+    map/garmin/CGarminPolygon.h
+    map/garmin/CGarminTyp.h
+    units/IUnit.h
+    units/CUnitImperial.h
+    units/CUnitMetric.h
+    units/CUnitNautic.h
+    units/CTimeZoneSetup.h
+    grid/CGrid.h
+    grid/CGridSetup.h
+    grid/CProjWizard.h
+    grid/mitab.h
+    mouse/IMouse.h
+    mouse/IScrOpt.h
+    mouse/CMouseNormal.h
+    mouse/CScrOptUnclutter.h    
+    gis/WptIcons.h
+    gis/CGisDraw.h
+    gis/IGisItem.h
+    gis/wpt/CGisItemWpt.h
+    gis/wpt/CScrOptWpt.h
+    gis/wpt/CDetailsWpt.h
+    gis/trk/CGisItemTrk.h
+    gis/trk/CScrOptTrk.h
+    gis/rte/CGisItemRte.h
+    gis/rte/CScrOptRte.h
+    gis/CGisWidget.h
+    gis/CGisListDB.h
+    gis/CGisListWks.h
+    gis/CGisProject.h    
+)
+
+set( UIS
+    IMainWindow.ui
+    IAbout.ui
+    helpers/IInputDialog.ui
+    helpers/IPositionDialog.ui
+    helpers/IWptIconDialog.ui
+    canvas/ICanvasSetup.ui
+    dem/IDemList.ui
+    dem/IDemPathSetup.ui
+    dem/IDemPropSetup.ui
+    map/IMapList.ui
+    map/IMapPathSetup.ui
+    map/IMapPropSetup.ui
+    grid/IGridSetup.ui
+    grid/IProjWizard.ui
+    gis/IGisWidget.ui
+    gis/wpt/IScrOptWpt.ui
+    gis/wpt/IDetailsWpt.ui
+    gis/trk/IScrOptTrk.ui
+    gis/rte/IScrOptRte.ui
+    units/ITimeZoneSetup.ui
+)
+
+set( RCS
+    resources.qrc
+)
+
+
+qt5_wrap_ui(UI_HDRS ${UIS})
+qt5_add_resources(RC_SRCS ${RCS})
+
+if(UNIX)
+    add_definitions(-Wall)
+endif(UNIX)
+
+
+file(GLOB TRANSLATIONS_FILES locale/*.ts)
+
+
+qt5_add_translation(
+    ${APPLICATION_NAME}_QM_FILES
+    ${TRANSLATIONS_FILES}
+)
+
+
+set(ALLINP
+    ${SRCS}
+    ${HDRS}
+    ${UI_HDRS}
+    ${RC_SRCS}
+    ${${APPLICATION_NAME}_QM_FILES}
+)
+
+include_directories(
+    ${CMAKE_BINARY_DIR}
+    ${CMAKE_SOURCE_DIR}/3rdparty/CGetOpt
+    ${GDAL_INCLUDE_DIRS}
+    ${PROJ_INCLUDE_DIRS}
+
+)
+
+
+
+# Tell CMake to create the helloworld executable
+add_executable(${APPLICATION_NAME} WIN32 ${ALLINP})
+
+# Use the Widgets module from Qt 5.
+target_link_libraries(${APPLICATION_NAME}
+    Qt5::Widgets
+    Qt5::Xml
+    CGetOpt
+    ${GDAL_LIBRARIES}
+    ${PROJ_LIBRARIES}
+
+)
+
+install(
+    TARGETS
+      ${APPLICATION_NAME}
+    DESTINATION
+      ${BIN_INSTALL_DIR}
+)
+
+if (UNIX AND NOT WIN32 AND NOT APPLE)
+install(
+    FILES
+        ${${APPLICATION_NAME}_QM_FILES}
+    DESTINATION
+        ${DATA_INSTALL_PREFIX}/${APPLICATION_NAME}/translations)
+endif (UNIX AND NOT WIN32 AND NOT APPLE)
+
+if (APPLE)
+add_custom_target(locversion.plist ALL
+    COMMAND
+        ${CMAKE_SOURCE_DIR}/MacOSX/mklocversion.sh ${MAC_BUNDLE_PATH} ${${APPLICATION_NAME}_QM_FILES}
+)
+endif (APPLE)
diff --git a/.hg/Trashcan/CPlotSpeed__YNWxV.cpp.bak b/.hg/Trashcan/CPlotSpeed__YNWxV.cpp.bak
new file mode 100644
index 0000000..56e90cf
--- /dev/null
+++ b/.hg/Trashcan/CPlotSpeed__YNWxV.cpp.bak
@@ -0,0 +1,116 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "plot/CPlotAxis.h"
+#include "plot/CPlotSpeed.h"
+
+CPlotSpeed::CPlotSpeed(QWidget *parent)
+//    : IPlot(0, CPlotData::eAxisLinear, eModeNormal, parent)
+    : IPlot(0, CPlotData::eAxisTime, eModeNormal, parent)
+{
+}
+
+CPlotSpeed::~CPlotSpeed()
+{
+}
+
+void CPlotSpeed::setTrack(CGisItemTrk * track)
+{
+    trk = track;
+    trk->registerPlot(this);
+
+    updateData();
+}
+
+void CPlotSpeed::updateData()
+{
+    CPlotData::axistype_e type = data->axisType;
+
+    if(mode == eModeIcon)
+    {
+        setXLabel(trk->getName());
+        setYLabel("");
+    }
+    else
+    {
+        if(type == CPlotData::eAxisLinear)
+        {
+            setXLabel(tr("distance [%1]").arg(IUnit::self().baseunit));
+        }
+        else
+        {
+            setXLabel(tr("time [h]"));
+        }
+        setYLabel(tr("speed. [%1]").arg(IUnit::self().speedunit));
+    }
+
+    clear();
+    if(trk->getTotalElapsedSeconds() == 0)
+    {
+        return;
+    }
+
+    QPolygonF lineSpeed;
+
+    qreal speedfactor = IUnit::self().speedfactor;
+    const CGisItemTrk::trk_t& t = trk->getTrackData();
+    foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
+    {
+        foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+        {
+            if(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
+            {
+                continue;
+            }
+
+            if(trkpt.speed != NOFLOAT)
+            {
+                lineSpeed << QPointF(type == CPlotData::eAxisLinear ? trkpt.distance : (qreal)trkpt.time.toTime_t(), trkpt.rateAscent * 3600/*trkpt.speed * speedfactor*/);
+            }
+        }
+    }
+
+    newLine(lineSpeed, "GPS");
+    setLimits();
+    data->ymin = 0;
+    data->y().setLimits(0,data->ymax);
+    resetZoom();
+}
+
+void CPlotSpeed::setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt)
+{
+    if(pt == 0)
+    {
+        if(posMouse != NOPOINT)
+        {
+            posMouse = NOPOINT;
+            needsRedraw = true;
+        }
+    }
+    else
+    {
+        if(posMouse == NOPOINT)
+        {
+            needsRedraw = true;
+        }
+
+        posMouse.rx() = left  + data->x().val2pt(pt->distance);
+        posMouse.ry() = top  +  data->y().val2pt(pt->speed);
+    }
+    update();
+}
diff --git a/.hg/Trashcan/CScrOptWpt_XBKh1B.cpp.bak b/.hg/Trashcan/CScrOptWpt_XBKh1B.cpp.bak
new file mode 100644
index 0000000..abccd2c
--- /dev/null
+++ b/.hg/Trashcan/CScrOptWpt_XBKh1B.cpp.bak
@@ -0,0 +1,89 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+
+#include "gis/wpt/CScrOptWpt.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/CGisWidget.h"
+#include "mouse/IMouse.h"
+#include "canvas/CCanvas.h"
+#include "CMainWindow.h"
+
+#include <QtWidgets>
+
+CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& origin, IMouse *parent)
+    : IScrOpt(parent->getCanvas())
+    , key(wpt->getKey())
+{
+    setupUi(this);
+    setOrigin(origin);
+    label->setFont(CMainWindow::self().getMapFont());
+    label->setText(wpt->getInfo());
+
+    anchor = wpt->getPointCloseBy(origin);
+    move(anchor.toPoint() + QPoint(30,30));
+    adjustSize();
+    show();
+
+    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
+    connect(toolEdit, SIGNAL(clicked()), this, SLOT(slotEdit()));
+}
+
+CScrOptWpt::~CScrOptWpt()
+{
+
+}
+
+void CScrOptWpt::slotDelete()
+{
+    CGisWidget::self().delItemByKey(key);
+}
+
+void CScrOptWpt::slotEdit()
+{
+    CGisWidget::self().editItemByKey(key);
+    deleteLater();
+}
+
+void CScrOptWpt::draw(QPainter& p)
+{
+    IGisItem * item = CGisWidget::self().getItemByKey(key);
+    if(item == 0)
+    {
+        deleteLater();
+        return;
+    }
+    item->drawHighlight(p);
+
+    QRectF r = rect();
+    r.moveTopLeft(QPoint(x(), y()));
+    QPainterPath path1;
+    path1.addRoundedRect(r,5,5);
+
+    QPolygonF poly2;
+    poly2 << anchor << (r.topLeft() + QPointF(10,0)) << (r.topLeft() + QPointF(0,10)) << anchor;
+    QPainterPath path2;
+    path2.addPolygon(poly2);
+
+    path1 = path1.united(path2);
+
+    p.setPen(CCanvas::penBorderGray);
+    p.setBrush(CCanvas::brushBackWhite);
+    p.drawPolygon(path1.toFillPolygon());
+
+}
diff --git a/.hg/Trashcan/CScrOptWpt_xMZh5g.cpp.bak b/.hg/Trashcan/CScrOptWpt_xMZh5g.cpp.bak
new file mode 100644
index 0000000..f209af8
--- /dev/null
+++ b/.hg/Trashcan/CScrOptWpt_xMZh5g.cpp.bak
@@ -0,0 +1,89 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+
+#include "gis/wpt/CScrOptWpt.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/CGisWidget.h"
+#include "mouse/IMouse.h"
+#include "canvas/CCanvas.h"
+#include "CMainWindow.h"
+
+#include <QtWidgets>
+
+CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& origin, IMouse *parent)
+    : IScrOpt(parent->getCanvas())
+    , key(wpt->getKey())
+{
+    setupUi(this);
+    setOrigin(origin);
+    label->setFont(CMainWindow::self().getMapFont());
+    label->setText(IGisItem::removeHtml(wpt->getInfo()));
+
+    anchor = wpt->getPointCloseBy(origin);
+    move(anchor.toPoint() + QPoint(30,30));
+    adjustSize();
+    show();
+
+    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
+    connect(toolEdit, SIGNAL(clicked()), this, SLOT(slotEdit()));
+}
+
+CScrOptWpt::~CScrOptWpt()
+{
+
+}
+
+void CScrOptWpt::slotDelete()
+{
+    CGisWidget::self().delItemByKey(key);
+}
+
+void CScrOptWpt::slotEdit()
+{
+    CGisWidget::self().editItemByKey(key);
+    deleteLater();
+}
+
+void CScrOptWpt::draw(QPainter& p)
+{
+    IGisItem * item = CGisWidget::self().getItemByKey(key);
+    if(item == 0)
+    {
+        deleteLater();
+        return;
+    }
+    item->drawHighlight(p);
+
+    QRectF r = rect();
+    r.moveTopLeft(QPoint(x(), y()));
+    QPainterPath path1;
+    path1.addRoundedRect(r,5,5);
+
+    QPolygonF poly2;
+    poly2 << anchor << (r.topLeft() + QPointF(10,0)) << (r.topLeft() + QPointF(0,10)) << anchor;
+    QPainterPath path2;
+    path2.addPolygon(poly2);
+
+    path1 = path1.united(path2);
+
+    p.setPen(CCanvas::penBorderGray);
+    p.setBrush(CCanvas::brushBackWhite);
+    p.drawPolygon(path1.toFillPolygon());
+
+}
diff --git a/.hg/Trashcan/IGisItem_5WFVpa.h.bak b/.hg/Trashcan/IGisItem_5WFVpa.h.bak
new file mode 100644
index 0000000..b6af0a7
--- /dev/null
+++ b/.hg/Trashcan/IGisItem_5WFVpa.h.bak
@@ -0,0 +1,375 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef IGISITEM_H
+#define IGISITEM_H
+
+#include <QTreeWidgetItem>
+
+#include <QDateTime>
+#include <QString>
+#include <QStringList>
+#include <QMap>
+#include <QVariant>
+#include <QUrl>
+#include <QDomNode>
+#include <QMutex>
+#include <QColor>
+
+#include "units/IUnit.h"
+
+class CGisDraw;
+class IScrOpt;
+class IMouse;
+class QSqlDatabase;
+class IGisProject;
+
+
+class IGisItem : public QTreeWidgetItem
+{
+
+    public:
+        struct history_event_t
+        {
+            QDateTime time;
+            QString   hash;
+            QString   icon;
+            QString   comment;
+            QByteArray data;
+        };
+
+        struct history_t
+        {
+            qint32 histIdxInitial;
+            qint32 histIdxCurrent;
+            QList<history_event_t> events;
+        };
+
+
+        struct link_t
+        {
+            QUrl    uri;
+            QString text;
+            QString type;
+        };
+
+        struct wpt_t
+        {
+            wpt_t() :
+                lat(NOFLOAT),
+                lon(NOFLOAT),
+                ele(NOINT),
+                magvar(NOINT),
+                geoidheight(NOINT),
+                sat(NOINT),
+                hdop(NOINT),
+                vdop(NOINT),
+                pdop(NOINT),
+                ageofdgpsdata(NOINT),
+                dgpsid(NOINT)
+            {}
+            // -- all gpx tags - start
+            qreal lat;
+            qreal lon;
+            qint32 ele;
+            QDateTime time;
+            qint32 magvar;
+            qint32 geoidheight;
+            QString name;
+            QString cmt;
+            QString desc;
+            QString src;
+            QList<link_t> links;
+            QString sym;
+            QString type;
+            QString fix;
+            qint32 sat;
+            qint32 hdop;
+            qint32 vdop;
+            qint32 pdop;
+            qint32 ageofdgpsdata;
+            qint32 dgpsid;
+            // -- all gpx tags - stop
+            QMap<QString, QVariant> extensions;
+        };
+
+        /// never ever change these numbers. it will break binary data files
+        enum type_e
+        {
+              eTypeWpt = 1
+            , eTypeTrk = 2
+            , eTypeRte = 3
+            , eTypeOvl = 4
+            , eTypeMax = 5
+        };
+
+        enum mark_e
+        {
+             eMarkNone      = 0
+            ,eMarkChanged   = 0x00000001
+        };
+
+        struct key_t
+        {
+            bool operator==(const key_t& k) const {return ((item == k.item) && (project == k.project));}
+            bool operator!=(const key_t& k) const {return ((item != k.item) || (project != k.project));}
+            void clear(){item.clear(); project.clear();}
+            QString item;
+            QString project;
+        };
+
+        IGisItem(IGisProject *parent, type_e typ, int idx);
+        virtual ~IGisItem();
+
+        /// this mutex has to be locked when ever the item list is accessed.
+        static QMutex mutexItems;
+
+        /**
+           @brief Update the visual representation of the QTreeWidgetItem
+           @param enable
+           @param disable
+         */
+        virtual void updateDecoration(mark_e enable, mark_e disable);
+
+        /**
+           @brief Save the item's data into a GPX structure
+           @param gpx       the files <gpx> tag to attach the data to
+         */
+        virtual void save(QDomNode& gpx) = 0;
+
+        /**
+           @brief Get key string to identify object
+           @return
+         */
+        const key_t& getKey();
+
+
+        /**
+           @brief Get the icon attached to object
+           @return
+         */
+        virtual const QPixmap& getIcon() const {return icon;}
+        /**
+           @brief Get name of this item.
+           @return A reference to the internal string object
+         */
+        virtual const QString& getName() const = 0;
+
+        /**
+           @brief Get name of this item extended by the project name
+           @return A string object.
+        */
+        virtual QString getNameEx();
+
+        /**
+           @brief Get a short string with the items properties to be displayed in tool tips or similar
+           @return A string object.
+        */
+        virtual QString getInfo() const = 0;
+
+        /**
+            @brief Edit content of item.
+
+            This is quite dependent on the item. The default implemntation does nothing. It has to be
+            overwritten and the item has to generate what ever is needed to edit/view it's details.
+
+         */
+        virtual void edit(){}
+
+        /**
+           @brief Get the dimension of the item
+
+           All coordinates are in Rad. Items with no
+
+           @return
+         */
+        virtual const QRectF& getBoundingRect(){return boundingRect;}
+
+        /**
+           @brief Get screen option object to display and handle actions for this item.
+           @param mouse     a pointer to the mouse object initiating the action
+           @return A null pointer is returned if no screen option are available
+         */
+        virtual IScrOpt * getScreenOptions(const QPoint& origin, IMouse * mouse){return 0;}
+
+        /**
+           @brief Get a point of the item that is close by the given screen pixel coordinate
+           @param point     a point in screen pixels
+           @return If no point is found NOPOINTF is returned.
+         */
+        virtual QPointF getPointCloseBy(const QPoint& point){return NOPOINTF;}
+
+        /**
+           @brief Test if the item is close to a given pixel coordinate of the screen
+
+           @param pos       the coordinate on the screen in pixel
+           @return If no point can be found NOPOINTF is returned.
+        */
+        virtual bool isCloseTo(const QPointF& pos) = 0;
+
+        /**
+           @brief Query if this item is read only
+           @return True if it is read only.
+         */
+        bool isReadOnly();
+
+        /**
+           @brief Query if the item is imported and was changed
+           @return True if content was changed.
+         */
+        bool isTainted();
+        /**
+           @brief Set the read only mode.
+
+           This is quite dependent on the item. The default implementation will display a
+           message box with a warning and ask the user to confirm.
+
+           @param readOnly      set true to make item read only
+         */
+        virtual void setReadOnlyMode(bool readOnly);
+
+        virtual void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) = 0;
+        virtual void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis){}
+        virtual void drawLabel(QPainter& p, const QRectF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) = 0;
+        virtual void drawHighlight(QPainter& p) = 0;        
+
+        virtual void gainUserFocus(bool yes) = 0;
+
+        /**
+           @brief Check for user focus
+
+           @return True if the item has user focus. The default implementation is always false.
+         */
+        virtual bool hasUserFocus(){return false;}
+
+
+        /**
+           @brief Serialize object out of a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        virtual QDataStream& operator<<(QDataStream& stream) = 0;
+        /**
+           @brief Serialize object into a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        virtual QDataStream& operator>>(QDataStream& stream) = 0;
+
+        /**
+           @brief Get read access to history of changes
+
+           @return A reference to the history structure.
+        */
+        const history_t& getHistory() const {return history;}
+
+        /**
+           @brief Load a given state of chnage from the history
+           @param idx
+        */
+        void loadHistory(int idx);
+
+        void cutHistory();
+
+        static QString removeHtml(const QString &str);
+        static QString createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links);
+        static QString createText(bool isReadOnly, const QString& desc, const QList<link_t>& links);
+        static QString toLink(bool isReadOnly, const QString& href, const QString& str);
+
+        static QString noKey;
+
+    protected:
+        struct color_t;
+
+        /// set icon of QTreeWidgetItem
+        virtual void setSymbol() = 0;
+        /// read waypoint data from an XML snippet
+        void readWpt(const QDomNode& xml, wpt_t &wpt);
+        /// write waypoint data to an XML snippet
+        void writeWpt(QDomElement &xml, const wpt_t &wpt);
+        /// gnerate a unique key from item's data
+        virtual void genKey();
+        /// setup the history structure right after the creation of the item
+        void setupHistory();
+        /// convert a color string from GPX to a QT color
+        QColor str2color(const QString& name);
+        /// convertr a QT color to a string to be used in a GPX file
+        QString color2str(const QColor &color);
+        /// to optimize drawing of large polylines split the line into sections that are visible
+        void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+        /// ditribute arrows over a polyline
+        void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+        /// call when ever you make a change to the item's data
+        virtual void changed(const QString& what, const QString& icon);
+
+        virtual void loadFromDb(quint64 id, QSqlDatabase& db);
+
+        quint32 flags;
+        key_t   key;
+        QString hash;
+        QPixmap icon;
+        QRectF boundingRect;
+
+        history_t history;
+
+
+        static const color_t colorMap[];
+
+
+        struct color_t
+        {
+            const char * name;
+            QColor color;
+        };
+
+
+        enum flags_e
+        {
+             eFlagCreatedInQms  = 0x00000001
+            ,eFlagWriteAllowed  = 0x00000002
+            ,eFlagTainted       = 0x00000004
+        };
+
+
+
+        static inline bool isBlocked(const QRectF& rect, const QList<QRectF> &blockedAreas)
+        {
+            foreach(const QRectF& r, blockedAreas)
+            {
+                if(rect.intersects(r))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+
+};
+
+QDataStream& operator>>(QDataStream& stream, IGisItem::history_t& h);
+QDataStream& operator<<(QDataStream& stream, const IGisItem::history_t& h);
+
+#endif //IGISITEM_H
+
diff --git a/src/gis/IGisItem.cpp b/.hg/Trashcan/IGisItem_APOLa5.cpp.bak
similarity index 77%
copy from src/gis/IGisItem.cpp
copy to .hg/Trashcan/IGisItem_APOLa5.cpp.bak
index f5acdd8..743cc15 100644
--- a/src/gis/IGisItem.cpp
+++ b/.hg/Trashcan/IGisItem_APOLa5.cpp.bak
@@ -16,21 +16,20 @@
 
 **********************************************************************************************/
 
-#include "GeoMath.h"
-#include "canvas/CCanvas.h"
-#include "gis/CGisDraw.h"
-#include "gis/CGisListWks.h"
 #include "gis/IGisItem.h"
-#include "gis/db/macros.h"
+#include "gis/CGisListWks.h"
 #include "gis/prj/IGisProject.h"
-#include "gis/rte/CGisItemRte.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/db/macros.h"
 #include "units/IUnit.h"
+#include "canvas/CCanvas.h"
+#include "GeoMath.h"
 
-#include <QtSql>
-#include <QtWidgets>
 #include <QtXml>
+#include <QtWidgets>
+#include <QtSql>
 
 QMutex IGisItem::mutexItems(QMutex::Recursive);
 
@@ -38,7 +37,7 @@ QString IGisItem::noKey;
 
 const IGisItem::color_t IGisItem::colorMap[] =
 {
-    {"Black",       QColor(Qt::black)}
+     {"Black",       QColor(Qt::black)}
     ,{"DarkRed",     QColor(Qt::darkRed)}
     ,{"DarkGreen",   QColor(Qt::darkGreen)}
     ,{"DarkYellow",  QColor(Qt::darkYellow)}
@@ -56,13 +55,14 @@ const IGisItem::color_t IGisItem::colorMap[] =
     ,{"White",       QColor(Qt::white)}
     ,{"Transparent", QColor(Qt::transparent)}
     ,{0, QColor()}
+
 };
 
 IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
     : QTreeWidgetItem(parent, typ)
     , flags(0)
 {
-    int n = -1;
+    int n;
     setFlags(QTreeWidgetItem::flags() & ~Qt::ItemIsDropEnabled);
 
     if(parent == 0)
@@ -71,8 +71,6 @@ IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
     }
 
     key.project = parent->getKey();
-    key.device  = parent->getDeviceKey();
-
     if(idx >= 0)
     {
         parent->removeChild(this);
@@ -155,6 +153,7 @@ IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
 
 IGisItem::~IGisItem()
 {
+
 }
 
 void IGisItem::genKey()
@@ -172,14 +171,6 @@ void IGisItem::genKey()
         md5.addData(buffer);
         key.item = md5.result().toHex();
     }
-    if(key.project.isEmpty())
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(parent());
-        if(project)
-        {
-            key.project = project->getKey();
-        }
-    }
 }
 
 void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
@@ -187,7 +178,7 @@ void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
     QSqlQuery query(db);
     query.prepare("SELECT data FROM items WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return );
+    QUERY_EXEC(return);
     if(query.next())
     {
         QByteArray data(query.value(0).toByteArray());
@@ -205,7 +196,7 @@ QString IGisItem::getNameEx() const
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
     if(project)
     {
-        str += " @ " + project->getName();               
+        str += " @ " + project->getName();
     }
     return str;
 }
@@ -241,12 +232,12 @@ void IGisItem::updateDecoration(mark_e enable, mark_e disable)
 
 
 void IGisItem::changed(const QString &what, const QString &icon)
-{
+{    
     /*
         If item gets changed but if it's origin is not QMapShack
         then it is assumed to be tainted, as imported data should
         never be changed without notice.
-     */
+    */
     if(!(flags & eFlagCreatedInQms))
     {
         flags |= eFlagTainted;
@@ -281,7 +272,7 @@ void IGisItem::changed(const QString &what, const QString &icon)
 }
 
 void IGisItem::setupHistory()
-{
+{    
     history.histIdxInitial = -1;
     history.histIdxCurrent = -1;
 
@@ -292,7 +283,7 @@ void IGisItem::setupHistory()
         history_event_t& event = history.events.last();
         event.time      = QDateTime::currentDateTimeUtc();
         event.comment   = QObject::tr("Initial version.");
-        event.icon      = "://icons/48x48/Start.png";
+        event.icon      = "://icons/48x48/Start.png";        
     }
 
     // search for the first item with data
@@ -361,22 +352,12 @@ void IGisItem::cutHistory()
 
 bool IGisItem::isReadOnly() const
 {
-    return !(flags & eFlagWriteAllowed) || isOnDevice();
+    return !(flags & eFlagWriteAllowed);
 }
 
 bool IGisItem::isTainted() const
 {
-    return flags & eFlagTainted;
-}
-
-bool IGisItem::isOnDevice() const
-{
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project == 0)
-    {
-        return false;
-    }
-    return project->isOnDevice();
+    return (flags & eFlagTainted);
 }
 
 void IGisItem::setReadOnlyMode(bool readOnly)
@@ -406,7 +387,7 @@ void IGisItem::setReadOnlyMode(bool readOnly)
 
 const IGisItem::key_t &IGisItem::getKey()
 {
-    if(key.item.isEmpty() || key.project.isEmpty())
+    if(key.item.isEmpty())
     {
         genKey();
     }
@@ -484,6 +465,7 @@ void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewp
     {
         lines << subline;
     }
+
 }
 
 void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPainter& p)
@@ -496,11 +478,11 @@ void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPai
         QPointF( 0.0, 15.0)      //lower tail
     };
 
-    QPointF pt, pt1, ptt;
+    QPointF  pt, pt1, ptt;
 
     // draw direction arrows
-    bool start = true;
-    qreal heading;
+    bool    start = true;
+    qreal  heading;
 
     //generate arrow pic on-the-fly
     QImage arrow_pic(21,16, QImage::Format_ARGB32);
@@ -560,150 +542,82 @@ QString IGisItem::removeHtml(const QString &str)
 }
 
 
-QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str, const QString &key)
+QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str)
 {
     if(isReadOnly)
     {
         return QString("%1").arg(str);
     }
-    if(key.isEmpty())
-    {
-        return QString("<a href='%1'>%2</a>").arg(href).arg(str);
-    }
-    else
-    {
-        return QString("<a href='%1?key=%3'>%2</a>").arg(href).arg(str).arg(key);
-    }
+
+    return QString("<a href='%1'>%2</a>").arg(href).arg(str);
 }
 
-QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links, const QString &key)
+QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links)
 {
     QString str;
-    bool isEmpty;
 
-    isEmpty = removeHtml(cmt).simplified().isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"));
+    if(removeHtml(cmt).simplified().isEmpty())
     {
-        str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"), key);
-        if(isEmpty)
-        {
-            str += QObject::tr("<p>--- no comment ---</p>");
-        }
-        else
-        {
-            str += cmt;
-        }
+        str += QObject::tr("<p>--- no comment ---</p>");
+    }
+    else
+    {
+        str += cmt;
     }
 
-    isEmpty = removeHtml(desc).simplified().isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
+    if(removeHtml(desc).simplified().isEmpty())
     {
-        str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"), key);
-        if(removeHtml(desc).simplified().isEmpty())
-        {
-            str += QObject::tr("<p>--- no description ---</p>");
-        }
-        else
-        {
-            str += desc;
-        }
+        str += QObject::tr("<p>--- no description ---</p>");
+    }
+    else
+    {
+        str += desc;
     }
 
-    isEmpty = links.isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
+    if(links.isEmpty())
     {
-        str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"), key);
-        if(isEmpty)
+        str += QObject::tr("<p>--- no links ---</p>");
+    }
+    else
+    {
+        foreach(const link_t& link, links)
         {
-            str += QObject::tr("<p>--- no links ---</p>");
-        }
-        else
-        {
-            foreach(const link_t &link, links)
-            {
-                if(link.text.isEmpty())
-                {
-                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.uri.toString());
-                }
-                else
-                {
-                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
-                }
-            }
+            str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
         }
     }
+
     return str;
 }
 
-QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<link_t>& links, const QString& key)
+QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<link_t>& links)
 {
     QString str;
-    bool isEmpty;
 
-    isEmpty = removeHtml(desc).simplified().isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
+    if(removeHtml(desc).simplified().isEmpty())
     {
-        str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"), key);
-        if(removeHtml(desc).simplified().isEmpty())
-        {
-            str += QObject::tr("<p>--- no description ---</p>");
-        }
-        else
-        {
-            str += desc;
-        }
+        str += QObject::tr("<p>--- no description ---</p>");
+    }
+    else
+    {
+        str += desc;
     }
 
-    isEmpty = links.isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
+    if(links.isEmpty())
     {
-        str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"), key);
-        if(isEmpty)
-        {
-            str += QObject::tr("<p>--- no links ---</p>");
-        }
-        else
+        str += QObject::tr("<p>--- no links ---</p>");
+    }
+    else
+    {
+        foreach(const link_t& link, links)
         {
-            foreach(const link_t &link, links)
-            {
-                if(link.text.isEmpty())
-                {
-                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.uri.toString());
-                }
-                else
-                {
-                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
-                }
-            }
+            str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
         }
     }
-    return str;
-}
-
-bool IGisItem::isVisible(const QRectF &rect, const QPolygonF& viewport, CGisDraw *gis)
-{
-    QPolygonF tmp1;
-    tmp1 << rect.topLeft();
-    tmp1 << rect.topRight();
-    tmp1 << rect.bottomRight();
-    tmp1 << rect.bottomLeft();
-
-    gis->convertRad2Px(tmp1);
-
-    QPolygonF tmp2 = viewport;
-    gis->convertRad2Px(tmp2);
-
-    return tmp2.boundingRect().intersects(tmp2.boundingRect());
-}
-
-bool IGisItem::isVisible(const QPointF& point, const QPolygonF& viewport, CGisDraw * gis)
-{
-    QPolygonF tmp2 = viewport;
-    gis->convertRad2Px(tmp2);
 
-    QPointF pt = point;
-    gis->convertRad2Px(pt);
-
-    return tmp2.boundingRect().contains(pt);
+    return str;
 }
-
diff --git a/.hg/Trashcan/IGisItem_GNArfG.h.bak b/.hg/Trashcan/IGisItem_GNArfG.h.bak
new file mode 100644
index 0000000..ff21eb0
--- /dev/null
+++ b/.hg/Trashcan/IGisItem_GNArfG.h.bak
@@ -0,0 +1,375 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef IGISITEM_H
+#define IGISITEM_H
+
+#include <QTreeWidgetItem>
+
+#include <QDateTime>
+#include <QString>
+#include <QStringList>
+#include <QMap>
+#include <QVariant>
+#include <QUrl>
+#include <QDomNode>
+#include <QMutex>
+#include <QColor>
+
+#include "units/IUnit.h"
+
+class CGisDraw;
+class IScrOpt;
+class IMouse;
+class QSqlDatabase;
+class IGisProject;
+
+
+class IGisItem : public QTreeWidgetItem
+{
+
+    public:
+        struct history_event_t
+        {
+            QDateTime time;
+            QString   hash;
+            QString   icon;
+            QString   comment;
+            QByteArray data;
+        };
+
+        struct history_t
+        {
+            qint32 histIdxInitial;
+            qint32 histIdxCurrent;
+            QList<history_event_t> events;
+        };
+
+
+        struct link_t
+        {
+            QUrl    uri;
+            QString text;
+            QString type;
+        };
+
+        struct wpt_t
+        {
+            wpt_t() :
+                lat(NOFLOAT),
+                lon(NOFLOAT),
+                ele(NOINT),
+                magvar(NOINT),
+                geoidheight(NOINT),
+                sat(NOINT),
+                hdop(NOINT),
+                vdop(NOINT),
+                pdop(NOINT),
+                ageofdgpsdata(NOINT),
+                dgpsid(NOINT)
+            {}
+            // -- all gpx tags - start
+            qreal lat;
+            qreal lon;
+            qint32 ele;
+            QDateTime time;
+            qint32 magvar;
+            qint32 geoidheight;
+            QString name;
+            QString cmt;
+            QString desc;
+            QString src;
+            QList<link_t> links;
+            QString sym;
+            QString type;
+            QString fix;
+            qint32 sat;
+            qint32 hdop;
+            qint32 vdop;
+            qint32 pdop;
+            qint32 ageofdgpsdata;
+            qint32 dgpsid;
+            // -- all gpx tags - stop
+            QMap<QString, QVariant> extensions;
+        };
+
+        /// never ever change these numbers. it will break binary data files
+        enum type_e
+        {
+              eTypeWpt = 1
+            , eTypeTrk = 2
+            , eTypeRte = 3
+            , eTypeOvl = 4
+            , eTypeMax = 5
+        };
+
+        enum mark_e
+        {
+             eMarkNone      = 0
+            ,eMarkChanged   = 0x00000001
+        };
+
+        struct key_t
+        {
+            bool operator==(const key_t& k) const {return ((item == k.item) && (project == k.project));}
+            bool operator!=(const key_t& k) const {return ((item != k.item) || (project != k.project));}
+            void clear(){item.clear(); project.clear();}
+            QString item;
+            QString project;
+        };
+
+        IGisItem(IGisProject *parent, type_e typ, int idx);
+        virtual ~IGisItem();
+
+        /// this mutex has to be locked when ever the item list is accessed.
+        static QMutex mutexItems;
+
+        /**
+           @brief Update the visual representation of the QTreeWidgetItem
+           @param enable
+           @param disable
+         */
+        virtual void updateDecoration(mark_e enable, mark_e disable);
+
+        /**
+           @brief Save the item's data into a GPX structure
+           @param gpx       the files <gpx> tag to attach the data to
+         */
+        virtual void save(QDomNode& gpx) = 0;
+
+        /**
+           @brief Get key string to identify object
+           @return
+         */
+        const key_t& getKey();
+
+
+        /**
+           @brief Get the icon attached to object
+           @return
+         */
+        virtual const QPixmap& getIcon() const {return icon;}
+        /**
+           @brief Get name of this item.
+           @return A reference to the internal string object
+         */
+        virtual const QString& getName() const = 0;
+
+        /**
+           @brief Get name of this item extended by the project name
+           @return A string object.
+        */
+        virtual QString getNameEx() const;
+
+        /**
+           @brief Get a short string with the items properties to be displayed in tool tips or similar
+           @return A string object.
+        */
+        virtual QString getInfo() const = 0;
+
+        /**
+            @brief Edit content of item.
+
+            This is quite dependent on the item. The default implemntation does nothing. It has to be
+            overwritten and the item has to generate what ever is needed to edit/view it's details.
+
+         */
+        virtual void edit(){}
+
+        /**
+           @brief Get the dimension of the item
+
+           All coordinates are in Rad. Items with no
+
+           @return
+         */
+        virtual const QRectF& getBoundingRect() const {return boundingRect;}
+
+        /**
+           @brief Get screen option object to display and handle actions for this item.
+           @param mouse     a pointer to the mouse object initiating the action
+           @return A null pointer is returned if no screen option are available
+         */
+        virtual IScrOpt * getScreenOptions(const QPoint& origin, IMouse * mouse){return 0;}
+
+        /**
+           @brief Get a point of the item that is close by the given screen pixel coordinate
+           @param point     a point in screen pixels
+           @return If no point is found NOPOINTF is returned.
+         */
+        virtual QPointF getPointCloseBy(const QPoint& point){return NOPOINTF;}
+
+        /**
+           @brief Test if the item is close to a given pixel coordinate of the screen
+
+           @param pos       the coordinate on the screen in pixel
+           @return If no point can be found NOPOINTF is returned.
+        */
+        virtual bool isCloseTo(const QPointF& pos) = 0;
+
+        /**
+           @brief Query if this item is read only
+           @return True if it is read only.
+         */
+        bool isReadOnly() const;
+
+        /**
+           @brief Query if the item is imported and was changed
+           @return True if content was changed.
+         */
+        bool isTainted() const;
+        /**
+           @brief Set the read only mode.
+
+           This is quite dependent on the item. The default implementation will display a
+           message box with a warning and ask the user to confirm.
+
+           @param readOnly      set true to make item read only
+         */
+        virtual void setReadOnlyMode(bool readOnly);
+
+        virtual void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) = 0;
+        virtual void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis){}
+        virtual void drawLabel(QPainter& p, const QRectF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) = 0;
+        virtual void drawHighlight(QPainter& p) = 0;        
+
+        virtual void gainUserFocus(bool yes) = 0;
+
+        /**
+           @brief Check for user focus
+
+           @return True if the item has user focus. The default implementation is always false.
+         */
+        virtual bool hasUserFocus() const {return false;}
+
+
+        /**
+           @brief Serialize object out of a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        virtual QDataStream& operator<<(QDataStream& stream) = 0;
+        /**
+           @brief Serialize object into a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        virtual QDataStream& operator>>(QDataStream& stream) = 0;
+
+        /**
+           @brief Get read access to history of changes
+
+           @return A reference to the history structure.
+        */
+        const history_t& getHistory() const {return history;}
+
+        /**
+           @brief Load a given state of chnage from the history
+           @param idx
+        */
+        void loadHistory(int idx);
+
+        void cutHistory();
+
+        static QString removeHtml(const QString &str);
+        static QString createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links);
+        static QString createText(bool isReadOnly, const QString& desc, const QList<link_t>& links);
+        static QString toLink(bool isReadOnly, const QString& href, const QString& str);
+
+        static QString noKey;
+
+    protected:
+        struct color_t;
+
+        /// set icon of QTreeWidgetItem
+        virtual void setSymbol() = 0;
+        /// read waypoint data from an XML snippet
+        void readWpt(const QDomNode& xml, wpt_t &wpt);
+        /// write waypoint data to an XML snippet
+        void writeWpt(QDomElement &xml, const wpt_t &wpt);
+        /// gnerate a unique key from item's data
+        virtual void genKey();
+        /// setup the history structure right after the creation of the item
+        void setupHistory();
+        /// convert a color string from GPX to a QT color
+        QColor str2color(const QString& name);
+        /// convertr a QT color to a string to be used in a GPX file
+        QString color2str(const QColor &color);
+        /// to optimize drawing of large polylines split the line into sections that are visible
+        void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+        /// ditribute arrows over a polyline
+        void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+        /// call when ever you make a change to the item's data
+        virtual void changed(const QString& what, const QString& icon);
+
+        virtual void loadFromDb(quint64 id, QSqlDatabase& db);
+
+        quint32 flags;
+        key_t   key;
+        QString hash;
+        QPixmap icon;
+        QRectF boundingRect;
+
+        history_t history;
+
+
+        static const color_t colorMap[];
+
+
+        struct color_t
+        {
+            const char * name;
+            QColor color;
+        };
+
+
+        enum flags_e
+        {
+             eFlagCreatedInQms  = 0x00000001
+            ,eFlagWriteAllowed  = 0x00000002
+            ,eFlagTainted       = 0x00000004
+        };
+
+
+
+        static inline bool isBlocked(const QRectF& rect, const QList<QRectF> &blockedAreas)
+        {
+            foreach(const QRectF& r, blockedAreas)
+            {
+                if(rect.intersects(r))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+
+};
+
+QDataStream& operator>>(QDataStream& stream, IGisItem::history_t& h);
+QDataStream& operator<<(QDataStream& stream, const IGisItem::history_t& h);
+
+#endif //IGISITEM_H
+
diff --git a/.hg/Trashcan/IGisItem_SGAlUU.cpp.bak b/.hg/Trashcan/IGisItem_SGAlUU.cpp.bak
new file mode 100644
index 0000000..247cdf6
--- /dev/null
+++ b/.hg/Trashcan/IGisItem_SGAlUU.cpp.bak
@@ -0,0 +1,286 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/IGisItem.h"
+#include "units/IUnit.h"
+#include "canvas/CCanvas.h"
+#include "GeoMath.h"
+
+#include <QtXml>
+#include <QtWidgets>
+
+QMutex IGisItem::mutexItems(QMutex::Recursive);
+
+const IGisItem::color_t IGisItem::colorMap[] =
+{
+     {"Black",       QColor(Qt::black)}
+    ,{"DarkRed",     QColor(Qt::darkRed)}
+    ,{"DarkGreen",   QColor(Qt::darkGreen)}
+    ,{"DarkYellow",  QColor(Qt::darkYellow)}
+    ,{"DarkBlue",    QColor(Qt::darkBlue)}
+    ,{"DarkMagenta", QColor(Qt::darkMagenta)}
+    ,{"DarkCyan",    QColor(Qt::darkCyan)}
+    ,{"LightGray",   QColor(Qt::gray)}
+    ,{"DarkGray",    QColor(Qt::darkGray)}
+    ,{"Red",         QColor(Qt::red)}
+    ,{"Green",       QColor(Qt::green)}
+    ,{"Yellow",      QColor(Qt::yellow)}
+    ,{"Blue",        QColor(Qt::blue)}
+    ,{"Magenta",     QColor(Qt::magenta)}
+    ,{"Cyan",        QColor(Qt::cyan)}
+    ,{"White",       QColor(Qt::white)}
+    ,{"Transparent", QColor(Qt::transparent)}
+    ,{0, QColor()}
+
+};
+
+IGisItem::IGisItem(QTreeWidgetItem *parent)
+    : QTreeWidgetItem(parent)
+{
+
+}
+
+IGisItem::~IGisItem()
+{
+
+}
+
+void IGisItem::readWpt(const QDomNode& xml, wpt_t& wpt)
+{
+    const QDomNamedNodeMap& attr = xml.attributes();    
+    wpt.lat = attr.namedItem("lat").nodeValue().toDouble();
+    wpt.lon = attr.namedItem("lon").nodeValue().toDouble();
+
+    readXml(xml, "ele", wpt.ele);
+    readXml(xml, "time", wpt.time);
+    readXml(xml, "magvar", wpt.magvar);
+    readXml(xml, "geoidheight", wpt.geoidheight);
+    readXml(xml, "name", wpt.name);
+    readXml(xml, "cmt", wpt.cmt);
+    readXml(xml, "desc", wpt.desc);
+    readXml(xml, "src", wpt.src);
+    readXml(xml, "link", wpt.links);
+    readXml(xml, "sym", wpt.sym);
+    readXml(xml, "type", wpt.type);
+    readXml(xml, "fix", wpt.fix);
+    readXml(xml, "sat", wpt.sat);
+    readXml(xml, "hdop", wpt.hdop);
+    readXml(xml, "vdop", wpt.vdop);
+    readXml(xml, "pdop", wpt.pdop);
+    readXml(xml, "ageofdgpsdata", wpt.ageofdgpsdata);
+    readXml(xml, "dgpsid", wpt.dgpsid);
+
+    // some GPX 1.0 backward compatibility
+    QString url;
+    readXml(xml, "url", url);
+    if(!url.isEmpty())
+    {
+        link_t link;
+        link.uri.setUrl(url);
+        readXml(xml, "urlname", link.text);
+
+        wpt.links << link;
+    }
+
+}
+
+
+void IGisItem::writeWpt(QDomElement& xml, const wpt_t& wpt)
+{
+    QString str;
+
+    str.sprintf("%1.8f", wpt.lat);
+    xml.setAttribute("lat",str);
+    str.sprintf("%1.8f", wpt.lon);
+    xml.setAttribute("lon",str);
+
+    writeXml(xml, "ele", wpt.ele);
+    writeXml(xml, "time", wpt.time);
+    writeXml(xml, "magvar", wpt.magvar);
+    writeXml(xml, "geoidheight", wpt.geoidheight);
+    writeXml(xml, "name", wpt.name);
+    writeXml(xml, "cmt", wpt.cmt);
+    writeXml(xml, "desc", wpt.desc);
+    writeXml(xml, "src", wpt.src);
+    writeXml(xml, "link", wpt.links);
+    writeXml(xml, "sym", wpt.sym);
+    writeXml(xml, "type", wpt.type);
+    writeXml(xml, "fix", wpt.fix);
+    writeXml(xml, "sat", wpt.sat);
+    writeXml(xml, "hdop", wpt.hdop);
+    writeXml(xml, "vdop", wpt.vdop);
+    writeXml(xml, "pdop", wpt.pdop);
+    writeXml(xml, "ageofdgpsdata", wpt.ageofdgpsdata);
+    writeXml(xml, "dgpsid", wpt.dgpsid);
+
+}
+
+const QString& IGisItem::getKey()
+{
+    if(key.isEmpty())
+    {
+        genKey();
+    }
+    return key;
+}
+
+QColor IGisItem::str2color(const QString& name)
+{
+    const color_t * p = colorMap;
+    while(p->name)
+    {
+        if(p->name == name)
+        {
+            return p->color;
+        }
+        p++;
+    }
+
+    return QColor();
+}
+
+QString IGisItem::color2str(const QColor& color)
+{
+    const color_t * p = colorMap;
+    while(p->name)
+    {
+        if(p->color == color)
+        {
+            return p->name;
+        }
+        p++;
+    }
+
+    return "";
+}
+
+void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines)
+{
+    int i;
+    QPointF pt, ptt, pt1;
+    QPolygonF subline;
+    const int size = line.size();
+
+    pt = line[0];
+    subline << pt;
+
+    for(i = 1; i < size; i++)
+    {
+        pt1 = line[i];
+
+        if(!GPS_Math_LineCrossesRect(pt, pt1, extViewport))
+        {
+            pt = pt1;
+            if(subline.size() > 1)
+            {
+                lines << subline;
+            }
+            subline.clear();
+            subline << pt;
+            continue;
+        }
+
+        ptt = pt1 - pt;
+        if(ptt.manhattanLength() < 5)
+        {
+            continue;
+        }
+
+        subline << pt1;
+        pt = pt1;
+    }
+
+    if(subline.size() > 1)
+    {
+        lines << subline;
+    }
+
+}
+
+void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPainter& p)
+{
+    QPointF arrow[4] =
+    {
+        QPointF( 20.0, 7.0),     //front
+        QPointF( 0.0, 0.0),      //upper tail
+        QPointF( 5.0, 7.0),      //mid tail
+        QPointF( 0.0, 15.0)      //lower tail
+    };
+
+    QPointF  pt, pt1, ptt;
+
+    // draw direction arrows
+    bool    start = true;
+    double  heading;
+
+    //generate arrow pic on-the-fly
+    QImage arrow_pic(21,16, QImage::Format_ARGB32);
+    arrow_pic.fill( qRgba(0,0,0,0));
+    QPainter t_paint(&arrow_pic);
+    USE_ANTI_ALIASING(t_paint, true);
+    t_paint.setPen(QPen(Qt::white, 2));
+    t_paint.setBrush(p.brush());
+    t_paint.drawPolygon(arrow, 4);
+    t_paint.end();
+
+    foreach(pt,line)
+    {
+        if(start)                // no arrow on  the first loop
+        {
+            start = false;
+        }
+        else
+        {
+            if(!extViewport.contains(pt))
+            {
+                pt1 = pt;
+                continue;
+            }
+            if((qAbs(pt.x() - pt1.x()) + qAbs(pt.y() - pt1.y())) < 7)
+            {
+                pt1 = pt;
+                continue;
+            }
+            // keep distance
+            if((qAbs(pt.x() - ptt.x()) + qAbs(pt.y() - ptt.y())) > 100)
+            {
+                if(0 != pt.x() - pt1.x() && (pt.y() - pt1.y()))
+                {
+                    heading = ( atan2((double)(pt.y() - pt1.y()), (double)(pt.x() - pt1.x())) * 180.) / M_PI;
+
+                    p.save();
+                    // draw arrow between bullets
+                    p.translate((pt.x() + pt1.x())/2,(pt.y() + pt1.y())/2);
+                    p.rotate(heading);
+                    p.drawImage(-11, -7, arrow_pic);
+                    p.restore();
+                    //remember last point
+                    ptt = pt;
+                }
+            }
+        }
+        pt1 = pt;
+    }
+}
+
+void IGisItem::removeHtml(QString &str)
+{
+    QTextDocument html;
+    html.setHtml(str);
+    str = html.toPlainText();
+}
diff --git a/src/gis/IGisItem.cpp b/.hg/Trashcan/IGisItem_W2uRAd.cpp.bak
similarity index 99%
copy from src/gis/IGisItem.cpp
copy to .hg/Trashcan/IGisItem_W2uRAd.cpp.bak
index f5acdd8..7b2ad6d 100644
--- a/src/gis/IGisItem.cpp
+++ b/.hg/Trashcan/IGisItem_W2uRAd.cpp.bak
@@ -205,7 +205,7 @@ QString IGisItem::getNameEx() const
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
     if(project)
     {
-        str += " @ " + project->getName();               
+        str += " @ " + project->getName();
     }
     return str;
 }
@@ -451,6 +451,11 @@ void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewp
     QPolygonF subline;
     const int size = line.size();
 
+    if(line.isEmpty())
+    {
+        return;
+    }
+
     pt = line[0];
     subline << pt;
 
diff --git a/src/gis/IGisItem.cpp b/.hg/Trashcan/IGisItem_g1UeWY.cpp.bak
similarity index 99%
copy from src/gis/IGisItem.cpp
copy to .hg/Trashcan/IGisItem_g1UeWY.cpp.bak
index f5acdd8..e4d8c9c 100644
--- a/src/gis/IGisItem.cpp
+++ b/.hg/Trashcan/IGisItem_g1UeWY.cpp.bak
@@ -205,7 +205,7 @@ QString IGisItem::getNameEx() const
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
     if(project)
     {
-        str += " @ " + project->getName();               
+        str += " @ " + project->getName();
     }
     return str;
 }
diff --git a/.hg/Trashcan/IGisItem_sh1ohv.h.bak b/.hg/Trashcan/IGisItem_sh1ohv.h.bak
new file mode 100644
index 0000000..91fdbf1
--- /dev/null
+++ b/.hg/Trashcan/IGisItem_sh1ohv.h.bak
@@ -0,0 +1,402 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef IGISITEM_H
+#define IGISITEM_H
+
+#include <QTreeWidgetItem>
+
+#include <QDateTime>
+#include <QString>
+#include <QStringList>
+#include <QMap>
+#include <QVariant>
+#include <QUrl>
+#include <QDomNode>
+#include <QMutex>
+#include <QColor>
+
+#include "units/IUnit.h"
+
+class CGisDraw;
+class IScrOpt;
+class IMouse;
+
+class IGisItem : public QObject, public QTreeWidgetItem
+{
+    Q_OBJECT
+    public:
+        IGisItem(QTreeWidgetItem * parent);
+        virtual ~IGisItem();
+
+        /// this mutex has to be locked when ever the item list is accessed.
+        static QMutex mutexItems;
+
+        /**
+           @brief Save the item's data into a GPX structure
+           @param gpx       the files <gpx> tag to attach the data to
+         */
+        virtual void save(QDomNode& gpx) = 0;
+
+        /**
+           @brief Get key string to identify object
+           @return
+         */
+        const QString& getKey();
+        /**
+           @brief Get the icon attached to object
+           @return
+         */
+        virtual const QPixmap& getIcon(){return icon;}
+        /**
+           @brief Get name of this item.
+           @return A reference to the internal string object
+         */
+        virtual const QString& getName() = 0;
+
+        /**
+           @brief Get a short string with the items properties to be displayed in tool tips or similar
+           @return A string object.
+        */
+        virtual QString getInfo() = 0;
+
+
+        /**
+           @brief Get the dimension of the item
+
+           All coordinates are in Rad. Items with no
+
+           @return
+         */
+        virtual QRectF getBoundingRect(){return boundingRect;}
+
+        /**
+           @brief Get screen option object to display and handle actions for this item.
+           @param mouse     a pointer to the mouse object initiating the action
+           @return A null pointer is returned if no screen option are available
+         */
+        virtual IScrOpt * getScreenOptions(const QPoint& origin, IMouse * mouse){return 0;}
+
+        /**
+           @brief Get a point of the item that is close by the given screen pixel coordinate
+           @param point     a point in screen pixels
+           @return If no point is found NOPOINTF is returned.
+         */
+        virtual QPointF getPointCloseBy(const QPoint& point){return NOPOINTF;}
+
+        /**
+           @brief Test if the item is close to a given pixel coordinate of the screen
+
+           @param pos       the coordinate on the screen in pixel
+           @return If no point can be found NOPOINTF is returned.
+        */
+        virtual bool isCloseTo(const QPointF& pos) = 0;
+
+        virtual void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) = 0;
+        virtual void drawLabel(QPainter& p, const QRectF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) = 0;
+        virtual void drawHighlight(QPainter& p) = 0;        
+
+        virtual void gainUserFocus() = 0;
+
+        virtual void edit(){}
+
+    protected:
+        friend class CGisProject;
+        struct wpt_t;
+        void readWpt(const QDomNode& xml, wpt_t &wpt);
+        void writeWpt(QDomElement &xml, const wpt_t &wpt);
+        virtual void genKey() = 0;
+        QColor str2color(const QString& name);
+        QString color2str(const QColor &color);
+        void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+        void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+        void removeHtml(QString &str);
+
+
+        struct color_t
+        {
+            const char * name;
+            QColor color;
+        };
+
+
+        struct link_t
+        {
+            QUrl    uri;
+            QString text;
+            QString type;
+        };
+
+        struct wpt_t
+        {
+            wpt_t() :
+                lat(NOFLOAT),
+                lon(NOFLOAT),
+                ele(NOINT),
+                magvar(NOINT),
+                geoidheight(NOINT),
+                sat(NOINT),
+                hdop(NOINT),
+                vdop(NOINT),
+                pdop(NOINT),
+                ageofdgpsdata(NOINT),
+                dgpsid(NOINT)
+            {}
+            // -- all gpx tags - start
+            qreal lat;
+            qreal lon;
+            qint32 ele;
+            QDateTime time;
+            qint32 magvar;
+            qint32 geoidheight;
+            QString name;
+            QString cmt;
+            QString desc;
+            QString src;
+            QList<link_t> links;
+            QString sym;
+            QString type;
+            QString fix;
+            qint32 sat;
+            qint32 hdop;
+            qint32 vdop;
+            qint32 pdop;
+            qint32 ageofdgpsdata;
+            qint32 dgpsid;
+            // -- all gpx tags - stop
+            QMap<QString, QVariant> extensions;
+        };
+
+
+        QString key;
+        QPixmap icon;
+        QRectF boundingRect;
+        static const color_t colorMap[];
+
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, qint32& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                qint32 tmp;
+                bool ok = false;
+                tmp = xml.namedItem(tag).toElement().text().toInt(&ok);
+                if(!ok)
+                {
+                    tmp = qRound(xml.namedItem(tag).toElement().text().toDouble(&ok));
+                }
+                if(ok)
+                {
+                    value = tmp;
+                }
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, quint32& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                quint32 tmp;
+                bool ok = false;
+                tmp = xml.namedItem(tag).toElement().text().toUInt(&ok);
+                if(ok)
+                {
+                    value = tmp;
+                }
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, quint64& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                quint64 tmp;
+                bool ok = false;
+                tmp = xml.namedItem(tag).toElement().text().toULongLong(&ok);
+                if(ok)
+                {
+                    value = tmp;
+                }
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, qreal& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                qreal tmp;
+                bool ok = false;
+                tmp = xml.namedItem(tag).toElement().text().toDouble(&ok);
+                if(ok)
+                {
+                    value = tmp;
+                }
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, QString& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                value = xml.namedItem(tag).toElement().text();
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, QDateTime& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                QString time = xml.namedItem(tag).toElement().text();
+                IUnit::parseTimestamp(time, value);
+
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, QList<link_t>& l)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                const QDomNodeList& links = xml.toElement().elementsByTagName(tag);
+                int N = links.count();
+                for(int n = 0; n < N; ++n)
+                {
+                    const QDomNode& link = links.item(n);
+
+                    link_t tmp;
+                    tmp.uri.setUrl(link.attributes().namedItem("href").nodeValue());
+                    readXml(link, "text", tmp.text);
+                    readXml(link, "type", tmp.type);
+
+                    l << tmp;
+                }
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, qint32 val)
+        {
+            if(val != NOINT)
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(QString::number(val));
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, quint32 val)
+        {
+            if(val != NOINT)
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(QString::number(val));
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, quint64 val)
+        {
+            if(val != 0)
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(QString::number(val));
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, const QString& val)
+        {
+            if(!val.isEmpty())
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(val);
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, qreal val)
+        {
+            if(val != NOFLOAT)
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(QString("%1").arg(val,0,'f',8));
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXmlHtml(QDomNode& xml, const QString& tag, const QString& val)
+        {
+            if(!val.isEmpty())
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createCDATASection(val);
+                elem.appendChild(text);
+                elem.setAttribute("html","True");
+
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, const QDateTime& time)
+        {
+            if(time.isValid())
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(time.toString("yyyy-MM-dd'T'hh:mm:ss'Z'"));
+                elem.appendChild(text);
+            }
+        }
+
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, const QList<link_t>& links)
+        {
+            if(!links.isEmpty())
+            {
+                foreach(const link_t& link, links)
+                {
+                    QDomElement elem = xml.ownerDocument().createElement(tag);
+                    xml.appendChild(elem);
+
+                    elem.setAttribute("href", link.uri.toString());
+                    writeXml(elem, "text", link.text);
+                    writeXml(elem, "type", link.type);
+                }
+            }
+        }
+
+        static inline bool isBlocked(const QRectF& rect, const QList<QRectF> &blockedAreas)
+        {
+            foreach(const QRectF& r, blockedAreas)
+            {
+                if(rect.intersects(r))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+
+};
+
+#endif //IGISITEM_H
+
diff --git a/src/gis/IGisItem.cpp b/.hg/Trashcan/IGisItem_xTCUle.cpp.bak
similarity index 76%
copy from src/gis/IGisItem.cpp
copy to .hg/Trashcan/IGisItem_xTCUle.cpp.bak
index f5acdd8..020c910 100644
--- a/src/gis/IGisItem.cpp
+++ b/.hg/Trashcan/IGisItem_xTCUle.cpp.bak
@@ -16,21 +16,20 @@
 
 **********************************************************************************************/
 
-#include "GeoMath.h"
-#include "canvas/CCanvas.h"
-#include "gis/CGisDraw.h"
-#include "gis/CGisListWks.h"
 #include "gis/IGisItem.h"
-#include "gis/db/macros.h"
+#include "gis/CGisListWks.h"
 #include "gis/prj/IGisProject.h"
-#include "gis/rte/CGisItemRte.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/db/macros.h"
 #include "units/IUnit.h"
+#include "canvas/CCanvas.h"
+#include "GeoMath.h"
 
-#include <QtSql>
-#include <QtWidgets>
 #include <QtXml>
+#include <QtWidgets>
+#include <QtSql>
 
 QMutex IGisItem::mutexItems(QMutex::Recursive);
 
@@ -38,7 +37,7 @@ QString IGisItem::noKey;
 
 const IGisItem::color_t IGisItem::colorMap[] =
 {
-    {"Black",       QColor(Qt::black)}
+     {"Black",       QColor(Qt::black)}
     ,{"DarkRed",     QColor(Qt::darkRed)}
     ,{"DarkGreen",   QColor(Qt::darkGreen)}
     ,{"DarkYellow",  QColor(Qt::darkYellow)}
@@ -56,13 +55,14 @@ const IGisItem::color_t IGisItem::colorMap[] =
     ,{"White",       QColor(Qt::white)}
     ,{"Transparent", QColor(Qt::transparent)}
     ,{0, QColor()}
+
 };
 
 IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
     : QTreeWidgetItem(parent, typ)
     , flags(0)
 {
-    int n = -1;
+    int n;
     setFlags(QTreeWidgetItem::flags() & ~Qt::ItemIsDropEnabled);
 
     if(parent == 0)
@@ -71,8 +71,6 @@ IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
     }
 
     key.project = parent->getKey();
-    key.device  = parent->getDeviceKey();
-
     if(idx >= 0)
     {
         parent->removeChild(this);
@@ -155,6 +153,7 @@ IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
 
 IGisItem::~IGisItem()
 {
+
 }
 
 void IGisItem::genKey()
@@ -172,14 +171,6 @@ void IGisItem::genKey()
         md5.addData(buffer);
         key.item = md5.result().toHex();
     }
-    if(key.project.isEmpty())
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(parent());
-        if(project)
-        {
-            key.project = project->getKey();
-        }
-    }
 }
 
 void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
@@ -187,7 +178,7 @@ void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
     QSqlQuery query(db);
     query.prepare("SELECT data FROM items WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return );
+    QUERY_EXEC(return);
     if(query.next())
     {
         QByteArray data(query.value(0).toByteArray());
@@ -199,13 +190,13 @@ void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
     }
 }
 
-QString IGisItem::getNameEx() const
+QString IGisItem::getNameEx()
 {
     QString str = getName();
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
     if(project)
     {
-        str += " @ " + project->getName();               
+        str += " @ " + project->getName();
     }
     return str;
 }
@@ -241,12 +232,12 @@ void IGisItem::updateDecoration(mark_e enable, mark_e disable)
 
 
 void IGisItem::changed(const QString &what, const QString &icon)
-{
+{    
     /*
         If item gets changed but if it's origin is not QMapShack
         then it is assumed to be tainted, as imported data should
         never be changed without notice.
-     */
+    */
     if(!(flags & eFlagCreatedInQms))
     {
         flags |= eFlagTainted;
@@ -281,7 +272,7 @@ void IGisItem::changed(const QString &what, const QString &icon)
 }
 
 void IGisItem::setupHistory()
-{
+{    
     history.histIdxInitial = -1;
     history.histIdxCurrent = -1;
 
@@ -292,7 +283,7 @@ void IGisItem::setupHistory()
         history_event_t& event = history.events.last();
         event.time      = QDateTime::currentDateTimeUtc();
         event.comment   = QObject::tr("Initial version.");
-        event.icon      = "://icons/48x48/Start.png";
+        event.icon      = "://icons/48x48/Start.png";        
     }
 
     // search for the first item with data
@@ -359,24 +350,14 @@ void IGisItem::cutHistory()
     }
 }
 
-bool IGisItem::isReadOnly() const
-{
-    return !(flags & eFlagWriteAllowed) || isOnDevice();
-}
-
-bool IGisItem::isTainted() const
+bool IGisItem::isReadOnly()
 {
-    return flags & eFlagTainted;
+    return !(flags & eFlagWriteAllowed);
 }
 
-bool IGisItem::isOnDevice() const
+bool IGisItem::isTainted()
 {
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project == 0)
-    {
-        return false;
-    }
-    return project->isOnDevice();
+    return (flags & eFlagTainted);
 }
 
 void IGisItem::setReadOnlyMode(bool readOnly)
@@ -406,7 +387,7 @@ void IGisItem::setReadOnlyMode(bool readOnly)
 
 const IGisItem::key_t &IGisItem::getKey()
 {
-    if(key.item.isEmpty() || key.project.isEmpty())
+    if(key.item.isEmpty())
     {
         genKey();
     }
@@ -484,6 +465,7 @@ void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewp
     {
         lines << subline;
     }
+
 }
 
 void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPainter& p)
@@ -496,11 +478,11 @@ void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPai
         QPointF( 0.0, 15.0)      //lower tail
     };
 
-    QPointF pt, pt1, ptt;
+    QPointF  pt, pt1, ptt;
 
     // draw direction arrows
-    bool start = true;
-    qreal heading;
+    bool    start = true;
+    qreal  heading;
 
     //generate arrow pic on-the-fly
     QImage arrow_pic(21,16, QImage::Format_ARGB32);
@@ -560,150 +542,82 @@ QString IGisItem::removeHtml(const QString &str)
 }
 
 
-QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str, const QString &key)
+QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str)
 {
     if(isReadOnly)
     {
         return QString("%1").arg(str);
     }
-    if(key.isEmpty())
-    {
-        return QString("<a href='%1'>%2</a>").arg(href).arg(str);
-    }
-    else
-    {
-        return QString("<a href='%1?key=%3'>%2</a>").arg(href).arg(str).arg(key);
-    }
+
+    return QString("<a href='%1'>%2</a>").arg(href).arg(str);
 }
 
-QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links, const QString &key)
+QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links)
 {
     QString str;
-    bool isEmpty;
 
-    isEmpty = removeHtml(cmt).simplified().isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"));
+    if(removeHtml(cmt).simplified().isEmpty())
     {
-        str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"), key);
-        if(isEmpty)
-        {
-            str += QObject::tr("<p>--- no comment ---</p>");
-        }
-        else
-        {
-            str += cmt;
-        }
+        str += QObject::tr("<p>--- no comment ---</p>");
+    }
+    else
+    {
+        str += cmt;
     }
 
-    isEmpty = removeHtml(desc).simplified().isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
+    if(removeHtml(desc).simplified().isEmpty())
     {
-        str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"), key);
-        if(removeHtml(desc).simplified().isEmpty())
-        {
-            str += QObject::tr("<p>--- no description ---</p>");
-        }
-        else
-        {
-            str += desc;
-        }
+        str += QObject::tr("<p>--- no description ---</p>");
+    }
+    else
+    {
+        str += desc;
     }
 
-    isEmpty = links.isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
+    if(links.isEmpty())
     {
-        str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"), key);
-        if(isEmpty)
+        str += QObject::tr("<p>--- no links ---</p>");
+    }
+    else
+    {
+        foreach(const link_t& link, links)
         {
-            str += QObject::tr("<p>--- no links ---</p>");
-        }
-        else
-        {
-            foreach(const link_t &link, links)
-            {
-                if(link.text.isEmpty())
-                {
-                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.uri.toString());
-                }
-                else
-                {
-                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
-                }
-            }
+            str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
         }
     }
+
     return str;
 }
 
-QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<link_t>& links, const QString& key)
+QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<link_t>& links)
 {
     QString str;
-    bool isEmpty;
 
-    isEmpty = removeHtml(desc).simplified().isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
+    if(removeHtml(desc).simplified().isEmpty())
     {
-        str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"), key);
-        if(removeHtml(desc).simplified().isEmpty())
-        {
-            str += QObject::tr("<p>--- no description ---</p>");
-        }
-        else
-        {
-            str += desc;
-        }
+        str += QObject::tr("<p>--- no description ---</p>");
+    }
+    else
+    {
+        str += desc;
     }
 
-    isEmpty = links.isEmpty();
-    if(!isReadOnly || !isEmpty)
+    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
+    if(links.isEmpty())
     {
-        str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"), key);
-        if(isEmpty)
-        {
-            str += QObject::tr("<p>--- no links ---</p>");
-        }
-        else
+        str += QObject::tr("<p>--- no links ---</p>");
+    }
+    else
+    {
+        foreach(const link_t& link, links)
         {
-            foreach(const link_t &link, links)
-            {
-                if(link.text.isEmpty())
-                {
-                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.uri.toString());
-                }
-                else
-                {
-                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
-                }
-            }
+            str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
         }
     }
-    return str;
-}
-
-bool IGisItem::isVisible(const QRectF &rect, const QPolygonF& viewport, CGisDraw *gis)
-{
-    QPolygonF tmp1;
-    tmp1 << rect.topLeft();
-    tmp1 << rect.topRight();
-    tmp1 << rect.bottomRight();
-    tmp1 << rect.bottomLeft();
-
-    gis->convertRad2Px(tmp1);
-
-    QPolygonF tmp2 = viewport;
-    gis->convertRad2Px(tmp2);
-
-    return tmp2.boundingRect().intersects(tmp2.boundingRect());
-}
-
-bool IGisItem::isVisible(const QPointF& point, const QPolygonF& viewport, CGisDraw * gis)
-{
-    QPolygonF tmp2 = viewport;
-    gis->convertRad2Px(tmp2);
 
-    QPointF pt = point;
-    gis->convertRad2Px(pt);
-
-    return tmp2.boundingRect().contains(pt);
+    return str;
 }
-
diff --git a/.hg/Trashcan/IGisItem_xsSU6A.h.bak b/.hg/Trashcan/IGisItem_xsSU6A.h.bak
new file mode 100644
index 0000000..736587f
--- /dev/null
+++ b/.hg/Trashcan/IGisItem_xsSU6A.h.bak
@@ -0,0 +1,404 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef IGISITEM_H
+#define IGISITEM_H
+
+#include <QTreeWidgetItem>
+
+#include <QDateTime>
+#include <QString>
+#include <QStringList>
+#include <QMap>
+#include <QVariant>
+#include <QUrl>
+#include <QDomNode>
+#include <QMutex>
+#include <QColor>
+
+#include "units/IUnit.h"
+
+class CGisDraw;
+class IScrOpt;
+class IMouse;
+
+class IGisItem : public QObject, public QTreeWidgetItem
+{
+    Q_OBJECT
+    public:
+        IGisItem(QTreeWidgetItem * parent);
+        virtual ~IGisItem();
+
+        /// this mutex has to be locked when ever the item list is accessed.
+        static QMutex mutexItems;
+
+        /**
+           @brief Save the item's data into a GPX structure
+           @param gpx       the files <gpx> tag to attach the data to
+         */
+        virtual void save(QDomNode& gpx) = 0;
+
+        /**
+           @brief Get key string to identify object
+           @return
+         */
+        const QString& getKey();
+        /**
+           @brief Get the icon attached to object
+           @return
+         */
+        virtual const QPixmap& getIcon(){return icon;}
+        /**
+           @brief Get name of this item.
+           @return A reference to the internal string object
+         */
+        virtual const QString& getName() = 0;
+
+        /**
+           @brief Get a short string with the items properties to be displayed in tool tips or similar
+           @return A string object.
+        */
+        virtual QString getInfo() = 0;
+
+
+        /**
+           @brief Get the dimension of the item
+
+           All coordinates are in Rad. Items with no
+
+           @return
+         */
+        virtual QRectF getBoundingRect(){return boundingRect;}
+
+        /**
+           @brief Get screen option object to display and handle actions for this item.
+           @param mouse     a pointer to the mouse object initiating the action
+           @return A null pointer is returned if no screen option are available
+         */
+        virtual IScrOpt * getScreenOptions(const QPoint& origin, IMouse * mouse){return 0;}
+
+        /**
+           @brief Get a point of the item that is close by the given screen pixel coordinate
+           @param point     a point in screen pixels
+           @return If no point is found NOPOINTF is returned.
+         */
+        virtual QPointF getPointCloseBy(const QPoint& point){return NOPOINTF;}
+
+        /**
+           @brief Test if the item is close to a given pixel coordinate of the screen
+
+           @param pos       the coordinate on the screen in pixel
+           @return If no point can be found NOPOINTF is returned.
+        */
+        virtual bool isCloseTo(const QPointF& pos) = 0;
+
+        virtual void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) = 0;
+        virtual void drawLabel(QPainter& p, const QRectF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) = 0;
+        virtual void drawHighlight(QPainter& p) = 0;        
+
+        virtual void gainUserFocus() = 0;
+
+        virtual void edit(){}
+
+        static QString removeHtml(const QString &str);
+
+    protected:
+        friend class CGisProject;
+        struct wpt_t;
+        void readWpt(const QDomNode& xml, wpt_t &wpt);
+        void writeWpt(QDomElement &xml, const wpt_t &wpt);
+        virtual void genKey() = 0;
+        QColor str2color(const QString& name);
+        QString color2str(const QColor &color);
+        void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+        void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+
+
+
+        struct color_t
+        {
+            const char * name;
+            QColor color;
+        };
+
+
+        struct link_t
+        {
+            QUrl    uri;
+            QString text;
+            QString type;
+        };
+
+        struct wpt_t
+        {
+            wpt_t() :
+                lat(NOFLOAT),
+                lon(NOFLOAT),
+                ele(NOINT),
+                magvar(NOINT),
+                geoidheight(NOINT),
+                sat(NOINT),
+                hdop(NOINT),
+                vdop(NOINT),
+                pdop(NOINT),
+                ageofdgpsdata(NOINT),
+                dgpsid(NOINT)
+            {}
+            // -- all gpx tags - start
+            qreal lat;
+            qreal lon;
+            qint32 ele;
+            QDateTime time;
+            qint32 magvar;
+            qint32 geoidheight;
+            QString name;
+            QString cmt;
+            QString desc;
+            QString src;
+            QList<link_t> links;
+            QString sym;
+            QString type;
+            QString fix;
+            qint32 sat;
+            qint32 hdop;
+            qint32 vdop;
+            qint32 pdop;
+            qint32 ageofdgpsdata;
+            qint32 dgpsid;
+            // -- all gpx tags - stop
+            QMap<QString, QVariant> extensions;
+        };
+
+
+        QString key;
+        QPixmap icon;
+        QRectF boundingRect;
+        static const color_t colorMap[];
+
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, qint32& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                qint32 tmp;
+                bool ok = false;
+                tmp = xml.namedItem(tag).toElement().text().toInt(&ok);
+                if(!ok)
+                {
+                    tmp = qRound(xml.namedItem(tag).toElement().text().toDouble(&ok));
+                }
+                if(ok)
+                {
+                    value = tmp;
+                }
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, quint32& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                quint32 tmp;
+                bool ok = false;
+                tmp = xml.namedItem(tag).toElement().text().toUInt(&ok);
+                if(ok)
+                {
+                    value = tmp;
+                }
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, quint64& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                quint64 tmp;
+                bool ok = false;
+                tmp = xml.namedItem(tag).toElement().text().toULongLong(&ok);
+                if(ok)
+                {
+                    value = tmp;
+                }
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, qreal& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                qreal tmp;
+                bool ok = false;
+                tmp = xml.namedItem(tag).toElement().text().toDouble(&ok);
+                if(ok)
+                {
+                    value = tmp;
+                }
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, QString& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                value = xml.namedItem(tag).toElement().text();
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, QDateTime& value)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                QString time = xml.namedItem(tag).toElement().text();
+                IUnit::parseTimestamp(time, value);
+
+            }
+        }
+
+        static inline void readXml(const QDomNode& xml, const QString& tag, QList<link_t>& l)
+        {
+            if(xml.namedItem(tag).isElement())
+            {
+                const QDomNodeList& links = xml.toElement().elementsByTagName(tag);
+                int N = links.count();
+                for(int n = 0; n < N; ++n)
+                {
+                    const QDomNode& link = links.item(n);
+
+                    link_t tmp;
+                    tmp.uri.setUrl(link.attributes().namedItem("href").nodeValue());
+                    readXml(link, "text", tmp.text);
+                    readXml(link, "type", tmp.type);
+
+                    l << tmp;
+                }
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, qint32 val)
+        {
+            if(val != NOINT)
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(QString::number(val));
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, quint32 val)
+        {
+            if(val != NOINT)
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(QString::number(val));
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, quint64 val)
+        {
+            if(val != 0)
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(QString::number(val));
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, const QString& val)
+        {
+            if(!val.isEmpty())
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(val);
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, qreal val)
+        {
+            if(val != NOFLOAT)
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(QString("%1").arg(val,0,'f',8));
+                elem.appendChild(text);
+            }
+        }
+
+        static inline void writeXmlHtml(QDomNode& xml, const QString& tag, const QString& val)
+        {
+            if(!val.isEmpty())
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createCDATASection(val);
+                elem.appendChild(text);
+                elem.setAttribute("html","True");
+
+            }
+        }
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, const QDateTime& time)
+        {
+            if(time.isValid())
+            {
+                QDomElement elem = xml.ownerDocument().createElement(tag);
+                xml.appendChild(elem);
+                QDomText text = xml.ownerDocument().createTextNode(time.toString("yyyy-MM-dd'T'hh:mm:ss'Z'"));
+                elem.appendChild(text);
+            }
+        }
+
+
+        static inline void writeXml(QDomNode& xml, const QString& tag, const QList<link_t>& links)
+        {
+            if(!links.isEmpty())
+            {
+                foreach(const link_t& link, links)
+                {
+                    QDomElement elem = xml.ownerDocument().createElement(tag);
+                    xml.appendChild(elem);
+
+                    elem.setAttribute("href", link.uri.toString());
+                    writeXml(elem, "text", link.text);
+                    writeXml(elem, "type", link.type);
+                }
+            }
+        }
+
+        static inline bool isBlocked(const QRectF& rect, const QList<QRectF> &blockedAreas)
+        {
+            foreach(const QRectF& r, blockedAreas)
+            {
+                if(rect.intersects(r))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+
+};
+
+#endif //IGISITEM_H
+
diff --git a/.hg/Trashcan/IGisItem_yfQJAp.cpp.bak b/.hg/Trashcan/IGisItem_yfQJAp.cpp.bak
new file mode 100644
index 0000000..67461dc
--- /dev/null
+++ b/.hg/Trashcan/IGisItem_yfQJAp.cpp.bak
@@ -0,0 +1,286 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/IGisItem.h"
+#include "units/IUnit.h"
+#include "canvas/CCanvas.h"
+#include "GeoMath.h"
+
+#include <QtXml>
+#include <QtWidgets>
+
+QMutex IGisItem::mutexItems(QMutex::Recursive);
+
+const IGisItem::color_t IGisItem::colorMap[] =
+{
+     {"Black",       QColor(Qt::black)}
+    ,{"DarkRed",     QColor(Qt::darkRed)}
+    ,{"DarkGreen",   QColor(Qt::darkGreen)}
+    ,{"DarkYellow",  QColor(Qt::darkYellow)}
+    ,{"DarkBlue",    QColor(Qt::darkBlue)}
+    ,{"DarkMagenta", QColor(Qt::darkMagenta)}
+    ,{"DarkCyan",    QColor(Qt::darkCyan)}
+    ,{"LightGray",   QColor(Qt::gray)}
+    ,{"DarkGray",    QColor(Qt::darkGray)}
+    ,{"Red",         QColor(Qt::red)}
+    ,{"Green",       QColor(Qt::green)}
+    ,{"Yellow",      QColor(Qt::yellow)}
+    ,{"Blue",        QColor(Qt::blue)}
+    ,{"Magenta",     QColor(Qt::magenta)}
+    ,{"Cyan",        QColor(Qt::cyan)}
+    ,{"White",       QColor(Qt::white)}
+    ,{"Transparent", QColor(Qt::transparent)}
+    ,{0, QColor()}
+
+};
+
+IGisItem::IGisItem(QTreeWidgetItem *parent)
+    : QTreeWidgetItem(parent)
+{
+
+}
+
+IGisItem::~IGisItem()
+{
+
+}
+
+void IGisItem::readWpt(const QDomNode& xml, wpt_t& wpt)
+{
+    const QDomNamedNodeMap& attr = xml.attributes();    
+    wpt.lat = attr.namedItem("lat").nodeValue().toDouble();
+    wpt.lon = attr.namedItem("lon").nodeValue().toDouble();
+
+    readXml(xml, "ele", wpt.ele);
+    readXml(xml, "time", wpt.time);
+    readXml(xml, "magvar", wpt.magvar);
+    readXml(xml, "geoidheight", wpt.geoidheight);
+    readXml(xml, "name", wpt.name);
+    readXml(xml, "cmt", wpt.cmt);
+    readXml(xml, "desc", wpt.desc);
+    readXml(xml, "src", wpt.src);
+    readXml(xml, "link", wpt.links);
+    readXml(xml, "sym", wpt.sym);
+    readXml(xml, "type", wpt.type);
+    readXml(xml, "fix", wpt.fix);
+    readXml(xml, "sat", wpt.sat);
+    readXml(xml, "hdop", wpt.hdop);
+    readXml(xml, "vdop", wpt.vdop);
+    readXml(xml, "pdop", wpt.pdop);
+    readXml(xml, "ageofdgpsdata", wpt.ageofdgpsdata);
+    readXml(xml, "dgpsid", wpt.dgpsid);
+
+    // some GPX 1.0 backward compatibility
+    QString url;
+    readXml(xml, "url", url);
+    if(!url.isEmpty())
+    {
+        link_t link;
+        link.uri.setUrl(url);
+        readXml(xml, "urlname", link.text);
+
+        wpt.links << link;
+    }
+
+}
+
+
+void IGisItem::writeWpt(QDomElement& xml, const wpt_t& wpt)
+{
+    QString str;
+
+    str.sprintf("%1.8f", wpt.lat);
+    xml.setAttribute("lat",str);
+    str.sprintf("%1.8f", wpt.lon);
+    xml.setAttribute("lon",str);
+
+    writeXml(xml, "ele", wpt.ele);
+    writeXml(xml, "time", wpt.time);
+    writeXml(xml, "magvar", wpt.magvar);
+    writeXml(xml, "geoidheight", wpt.geoidheight);
+    writeXml(xml, "name", wpt.name);
+    writeXml(xml, "cmt", wpt.cmt);
+    writeXml(xml, "desc", wpt.desc);
+    writeXml(xml, "src", wpt.src);
+    writeXml(xml, "link", wpt.links);
+    writeXml(xml, "sym", wpt.sym);
+    writeXml(xml, "type", wpt.type);
+    writeXml(xml, "fix", wpt.fix);
+    writeXml(xml, "sat", wpt.sat);
+    writeXml(xml, "hdop", wpt.hdop);
+    writeXml(xml, "vdop", wpt.vdop);
+    writeXml(xml, "pdop", wpt.pdop);
+    writeXml(xml, "ageofdgpsdata", wpt.ageofdgpsdata);
+    writeXml(xml, "dgpsid", wpt.dgpsid);
+
+}
+
+const QString& IGisItem::getKey()
+{
+    if(key.isEmpty())
+    {
+        genKey();
+    }
+    return key;
+}
+
+QColor IGisItem::str2color(const QString& name)
+{
+    const color_t * p = colorMap;
+    while(p->name)
+    {
+        if(p->name == name)
+        {
+            return p->color;
+        }
+        p++;
+    }
+
+    return QColor();
+}
+
+QString IGisItem::color2str(const QColor& color)
+{
+    const color_t * p = colorMap;
+    while(p->name)
+    {
+        if(p->color == color)
+        {
+            return p->name;
+        }
+        p++;
+    }
+
+    return "";
+}
+
+void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines)
+{
+    int i;
+    QPointF pt, ptt, pt1;
+    QPolygonF subline;
+    const int size = line.size();
+
+    pt = line[0];
+    subline << pt;
+
+    for(i = 1; i < size; i++)
+    {
+        pt1 = line[i];
+
+        if(!GPS_Math_LineCrossesRect(pt, pt1, extViewport))
+        {
+            pt = pt1;
+            if(subline.size() > 1)
+            {
+                lines << subline;
+            }
+            subline.clear();
+            subline << pt;
+            continue;
+        }
+
+        ptt = pt1 - pt;
+        if(ptt.manhattanLength() < 5)
+        {
+            continue;
+        }
+
+        subline << pt1;
+        pt = pt1;
+    }
+
+    if(subline.size() > 1)
+    {
+        lines << subline;
+    }
+
+}
+
+void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPainter& p)
+{
+    QPointF arrow[4] =
+    {
+        QPointF( 20.0, 7.0),     //front
+        QPointF( 0.0, 0.0),      //upper tail
+        QPointF( 5.0, 7.0),      //mid tail
+        QPointF( 0.0, 15.0)      //lower tail
+    };
+
+    QPointF  pt, pt1, ptt;
+
+    // draw direction arrows
+    bool    start = true;
+    double  heading;
+
+    //generate arrow pic on-the-fly
+    QImage arrow_pic(21,16, QImage::Format_ARGB32);
+    arrow_pic.fill( qRgba(0,0,0,0));
+    QPainter t_paint(&arrow_pic);
+    USE_ANTI_ALIASING(t_paint, true);
+    t_paint.setPen(QPen(Qt::white, 2));
+    t_paint.setBrush(p.brush());
+    t_paint.drawPolygon(arrow, 4);
+    t_paint.end();
+
+    foreach(pt,line)
+    {
+        if(start)                // no arrow on  the first loop
+        {
+            start = false;
+        }
+        else
+        {
+            if(!extViewport.contains(pt))
+            {
+                pt1 = pt;
+                continue;
+            }
+            if((qAbs(pt.x() - pt1.x()) + qAbs(pt.y() - pt1.y())) < 7)
+            {
+                pt1 = pt;
+                continue;
+            }
+            // keep distance
+            if((qAbs(pt.x() - ptt.x()) + qAbs(pt.y() - ptt.y())) > 100)
+            {
+                if(0 != pt.x() - pt1.x() && (pt.y() - pt1.y()))
+                {
+                    heading = ( atan2((double)(pt.y() - pt1.y()), (double)(pt.x() - pt1.x())) * 180.) / M_PI;
+
+                    p.save();
+                    // draw arrow between bullets
+                    p.translate((pt.x() + pt1.x())/2,(pt.y() + pt1.y())/2);
+                    p.rotate(heading);
+                    p.drawImage(-11, -7, arrow_pic);
+                    p.restore();
+                    //remember last point
+                    ptt = pt;
+                }
+            }
+        }
+        pt1 = pt;
+    }
+}
+
+QString IGisItem::removeHtml(const QString &str)
+{
+    QTextDocument html;
+    html.setHtml(str);
+    return html.toPlainText();
+}
diff --git a/src/gis/prj/IGisProject.cpp b/.hg/Trashcan/IGisProject_117WVD.cpp.bak
similarity index 86%
copy from src/gis/prj/IGisProject.cpp
copy to .hg/Trashcan/IGisProject_117WVD.cpp.bak
index 5727313..80eee79 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/.hg/Trashcan/IGisProject_117WVD.cpp.bak
@@ -16,18 +16,18 @@
 
 **********************************************************************************************/
 
-#include "CMainWindow.h"
-#include "device/IDevice.h"
-#include "gis/CGisDraw.h"
-#include "gis/CGisListWks.h"
-#include "gis/IGisItem.h"
-#include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/prj/CDetailsPrj.h"
 #include "gis/prj/IGisProject.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/trk/CGisItemTrk.h"
+#include "gis/prj/CDetailsPrj.h"
+#include "gis/IGisItem.h"
 #include "gis/wpt/CGisItemWpt.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/CGisListWks.h"
+#include "gis/CGisDraw.h"
 #include "helpers/CSelectCopyAction.h"
+#include "CMainWindow.h"
+
 
 #include <QtWidgets>
 
@@ -38,14 +38,7 @@ IGisProject::IGisProject(type_e type, const QString &filename, CGisListWks *pare
     , filename(filename)
     , valid(false)
 {
-}
 
-IGisProject::IGisProject(type_e type, const QString &filename, IDevice *parent)
-    : QTreeWidgetItem(parent)
-    , type(type)
-    , filename(filename)
-    , valid(false)
-{
 }
 
 IGisProject::~IGisProject()
@@ -71,27 +64,6 @@ void IGisProject::genKey()
     }
 }
 
-QString IGisProject::getDeviceKey() const
-{
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    if(device)
-    {
-        return device->getKey();
-    }
-
-    return "";
-}
-
-QPixmap IGisProject::getIcon() const
-{
-    return icon(CGisListWks::eColumnName).pixmap(22,22);
-}
-
-bool IGisProject::isOnDevice() const
-{
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    return (device != 0);
-}
 
 void IGisProject::edit()
 {
@@ -146,6 +118,7 @@ void IGisProject::setupName(const QString &defaultName)
     {
         setText(CGisListWks::eColumnName,metadata.name);
     }
+
 }
 
 void IGisProject::markAsSaved()
@@ -153,6 +126,7 @@ void IGisProject::markAsSaved()
     setText(CGisListWks::eColumnDecoration,"");
     for(int i = 0; i < childCount(); i++)
     {
+
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -162,19 +136,7 @@ void IGisProject::markAsSaved()
     }
 }
 
-QString IGisProject::getName() const
-{
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    if(device == 0)
-    {
-        return metadata.name;
-    }
-
-    return metadata.name + " @ " + device->getName();
-}
-
-
-QString IGisProject::getInfo() const
+QString IGisProject::getInfo()
 {
     QString str = metadata.name.isEmpty() ? text(CGisListWks::eColumnName) : metadata.name;
     str = "<div style='font-weight: bold;'>" + str + "</div>";
@@ -242,6 +204,7 @@ IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
 {
     for(int i = 0; i < childCount(); i++)
     {
+
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -260,6 +223,7 @@ void IGisProject::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
 {
     for(int i = 0; i < childCount(); i++)
     {
+
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -301,7 +265,7 @@ bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::Standard
             /*
                 Database projects are a bit different. Deleteing an item does not really
                 mean the project is changed as the item is still stored in the database.
-             */
+            */
             if(type != eTypeDb)
             {
                 changed();
@@ -337,11 +301,11 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     bool clone = false;
     IGisItem::key_t key = item->getKey();
     key.project = getKey();
-    key.device  = getDeviceKey();
 
     IGisItem * item2 = getItemByKey(key);
     if(item2 != 0)
     {
+
         int result = lastResult;
         if(lastResult == CSelectCopyAction::eResultNone)
         {
@@ -392,7 +356,6 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
-
     case IGisItem::eTypeWpt:
     {
         CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
@@ -402,7 +365,6 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
-
     case IGisItem::eTypeRte:
     {
         CGisItemRte * rte = dynamic_cast<CGisItemRte*>(item);
@@ -412,7 +374,6 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
-
     case IGisItem::eTypeOvl:
     {
         CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(item);
@@ -425,7 +386,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     }
 }
 
-void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis)
+void IGisProject::drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis)
 {
     for(int i = 0; i < childCount(); i++)
     {
@@ -440,14 +401,22 @@ void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
             continue;
         }
 
+//        if(seenKeys.contains(item->getKey()))
+//        {
+//            continue;
+//        }
+//        seenKeys << item->getKey();
+
         item->drawItem(p, viewport, blockedAreas, gis);
     }
+
 }
 
 void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 {
     for(int i = 0; i < childCount(); i++)
     {
+
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -457,10 +426,12 @@ void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
         item->drawItem(p, viewport, gis);
     }
+
 }
 
-void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis)
+void IGisProject::drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis)
 {
+
     for(int i = 0; i < childCount(); i++)
     {
         if(gis->needsRedraw())
@@ -474,40 +445,14 @@ void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
             continue;
         }
 
+//        if(seenKeys.contains(item->getKey()))
+//        {
+//            continue;
+//        }
+//        seenKeys << item->getKey();
+
         item->drawLabel(p, viewport, blockedAreas, fm, gis);
     }
-}
 
-void IGisProject::mount()
-{
-    if(!isOnDevice())
-    {
-        return;
-    }
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    if(device)
-    {
-        device->mount();
-    }
 }
 
-void IGisProject::umount()
-{
-    if(!isOnDevice())
-    {
-        return;
-    }
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    if(device)
-    {
-        device->umount();
-    }
-}
-
-bool IGisProject::remove()
-{
-    mount();
-    QFile::remove(filename);
-    umount();
-    return true;
-}
diff --git a/src/gis/prj/IGisProject.cpp b/.hg/Trashcan/IGisProject_AqlgcN.cpp.bak
similarity index 86%
copy from src/gis/prj/IGisProject.cpp
copy to .hg/Trashcan/IGisProject_AqlgcN.cpp.bak
index 5727313..fa9624e 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/.hg/Trashcan/IGisProject_AqlgcN.cpp.bak
@@ -16,18 +16,18 @@
 
 **********************************************************************************************/
 
-#include "CMainWindow.h"
-#include "device/IDevice.h"
-#include "gis/CGisDraw.h"
-#include "gis/CGisListWks.h"
-#include "gis/IGisItem.h"
-#include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/prj/CDetailsPrj.h"
 #include "gis/prj/IGisProject.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/trk/CGisItemTrk.h"
+#include "gis/prj/CDetailsPrj.h"
+#include "gis/IGisItem.h"
 #include "gis/wpt/CGisItemWpt.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/CGisListWks.h"
+#include "gis/CGisDraw.h"
 #include "helpers/CSelectCopyAction.h"
+#include "CMainWindow.h"
+
 
 #include <QtWidgets>
 
@@ -38,14 +38,7 @@ IGisProject::IGisProject(type_e type, const QString &filename, CGisListWks *pare
     , filename(filename)
     , valid(false)
 {
-}
 
-IGisProject::IGisProject(type_e type, const QString &filename, IDevice *parent)
-    : QTreeWidgetItem(parent)
-    , type(type)
-    , filename(filename)
-    , valid(false)
-{
 }
 
 IGisProject::~IGisProject()
@@ -71,27 +64,6 @@ void IGisProject::genKey()
     }
 }
 
-QString IGisProject::getDeviceKey() const
-{
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    if(device)
-    {
-        return device->getKey();
-    }
-
-    return "";
-}
-
-QPixmap IGisProject::getIcon() const
-{
-    return icon(CGisListWks::eColumnName).pixmap(22,22);
-}
-
-bool IGisProject::isOnDevice() const
-{
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    return (device != 0);
-}
 
 void IGisProject::edit()
 {
@@ -146,6 +118,7 @@ void IGisProject::setupName(const QString &defaultName)
     {
         setText(CGisListWks::eColumnName,metadata.name);
     }
+
 }
 
 void IGisProject::markAsSaved()
@@ -153,6 +126,7 @@ void IGisProject::markAsSaved()
     setText(CGisListWks::eColumnDecoration,"");
     for(int i = 0; i < childCount(); i++)
     {
+
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -162,18 +136,6 @@ void IGisProject::markAsSaved()
     }
 }
 
-QString IGisProject::getName() const
-{
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    if(device == 0)
-    {
-        return metadata.name;
-    }
-
-    return metadata.name + " @ " + device->getName();
-}
-
-
 QString IGisProject::getInfo() const
 {
     QString str = metadata.name.isEmpty() ? text(CGisListWks::eColumnName) : metadata.name;
@@ -242,6 +204,7 @@ IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
 {
     for(int i = 0; i < childCount(); i++)
     {
+
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -260,6 +223,7 @@ void IGisProject::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
 {
     for(int i = 0; i < childCount(); i++)
     {
+
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -301,7 +265,7 @@ bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::Standard
             /*
                 Database projects are a bit different. Deleteing an item does not really
                 mean the project is changed as the item is still stored in the database.
-             */
+            */
             if(type != eTypeDb)
             {
                 changed();
@@ -337,11 +301,11 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     bool clone = false;
     IGisItem::key_t key = item->getKey();
     key.project = getKey();
-    key.device  = getDeviceKey();
 
     IGisItem * item2 = getItemByKey(key);
     if(item2 != 0)
     {
+
         int result = lastResult;
         if(lastResult == CSelectCopyAction::eResultNone)
         {
@@ -392,7 +356,6 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
-
     case IGisItem::eTypeWpt:
     {
         CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
@@ -402,7 +365,6 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
-
     case IGisItem::eTypeRte:
     {
         CGisItemRte * rte = dynamic_cast<CGisItemRte*>(item);
@@ -412,7 +374,6 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
-
     case IGisItem::eTypeOvl:
     {
         CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(item);
@@ -425,7 +386,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     }
 }
 
-void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis)
+void IGisProject::drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis)
 {
     for(int i = 0; i < childCount(); i++)
     {
@@ -440,14 +401,22 @@ void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
             continue;
         }
 
+//        if(seenKeys.contains(item->getKey()))
+//        {
+//            continue;
+//        }
+//        seenKeys << item->getKey();
+
         item->drawItem(p, viewport, blockedAreas, gis);
     }
+
 }
 
 void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 {
     for(int i = 0; i < childCount(); i++)
     {
+
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -457,10 +426,12 @@ void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
         item->drawItem(p, viewport, gis);
     }
+
 }
 
-void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis)
+void IGisProject::drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis)
 {
+
     for(int i = 0; i < childCount(); i++)
     {
         if(gis->needsRedraw())
@@ -474,40 +445,14 @@ void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
             continue;
         }
 
+//        if(seenKeys.contains(item->getKey()))
+//        {
+//            continue;
+//        }
+//        seenKeys << item->getKey();
+
         item->drawLabel(p, viewport, blockedAreas, fm, gis);
     }
-}
 
-void IGisProject::mount()
-{
-    if(!isOnDevice())
-    {
-        return;
-    }
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    if(device)
-    {
-        device->mount();
-    }
 }
 
-void IGisProject::umount()
-{
-    if(!isOnDevice())
-    {
-        return;
-    }
-    IDevice * device = dynamic_cast<IDevice*>(parent());
-    if(device)
-    {
-        device->umount();
-    }
-}
-
-bool IGisProject::remove()
-{
-    mount();
-    QFile::remove(filename);
-    umount();
-    return true;
-}
diff --git a/.hg/Trashcan/IGisProject_duaZSF.h.bak b/.hg/Trashcan/IGisProject_duaZSF.h.bak
new file mode 100644
index 0000000..1168042
--- /dev/null
+++ b/.hg/Trashcan/IGisProject_duaZSF.h.bak
@@ -0,0 +1,212 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef IGISPROJECT_H
+#define IGISPROJECT_H
+
+#include "gis/IGisItem.h"
+#include <QTreeWidgetItem>
+#include <QPointer>
+#include <QMessageBox>
+
+class CGisListWks;
+class IGisItem;
+class CGisDraw;
+class QDataStream;
+class CDetailsPrj;
+
+class IGisProject : public QTreeWidgetItem
+{
+    public:
+        enum type_e
+        {
+              eTypeGoogle
+            , eTypeQms
+            , eTypeGpx
+            , eTypeDb
+        };
+
+        struct person_t
+        {
+            QString name;
+            QString id;
+            QString domain;
+            IGisItem::link_t link;
+        };
+
+        struct copyright_t
+        {
+            QString author;
+            QString year;
+            QString license;
+        };
+
+        struct metadata_t
+        {
+            metadata_t() : time(QDateTime::currentDateTimeUtc()){}
+            QString name;
+            QString desc;
+            person_t author;
+            copyright_t copyright;
+            QList<IGisItem::link_t> links;
+            QDateTime time;
+            QString keywords;
+            QRectF bounds;
+            // -- all gpx tags - stop
+            QMap<QString, QVariant> extensions;
+
+        };
+
+        IGisProject(type_e type, const QString& filename, CGisListWks * parent);
+        virtual ~IGisProject();
+
+        void edit();
+
+        virtual void save() = 0;
+        virtual void saveAs() = 0;
+
+        virtual void setFilename(const QString& fn){filename = fn;}
+        virtual QString getFilename(){return filename;}
+
+        type_e getType(){return type;}
+
+        /**
+           @brief Get unique project key.
+           @return A MD5 hash string
+         */
+        const QString& getKey(){genKey(); return key;}
+        const QString& getName(){return metadata.name;}
+        const QDateTime& getTime(){return metadata.time;}
+        const QString& getKeywords(){return metadata.keywords;}
+        const QString& getDescription(){return metadata.desc;}
+        const QList<IGisItem::link_t>& getLinks(){return metadata.links;}
+
+
+        void setName(const QString& str);
+        void setKeywords(const QString& str);
+        void setDescription(const QString& str);
+        void setLinks(const QList<IGisItem::link_t>& links);
+
+        /**
+           @brief Get a short metadata summary
+           @return Informational string.
+         */
+        virtual QString getInfo();
+        /**
+           @brief Get a temporary pointer to the item with matching key
+           @param key
+           @return If no item is found 0 is returned.
+        */
+        IGisItem * getItemByKey(const IGisItem::key_t &key);
+
+        /**
+           @brief Get a list of items that are close to a given pixel coordinate of the screen
+
+           @note: The returned pointers are just for temporary use. Best you use them to get the item's key.
+
+           @param pos       the coordinate on the screen in pixel
+           @param items     a list the item's pointer is stored to.
+        */
+        void getItemByPos(const QPointF& pos, QList<IGisItem*>& items);
+
+        /**
+           @brief Delete items with matching key
+           @param key
+        */
+        bool delItemByKey(const IGisItem::key_t &key, QMessageBox::StandardButtons &last);
+
+        /**
+           @brief Call IGisItem::edit() method for items with given key
+
+           @param key   a MD5 hash key
+         */
+        void editItemByKey(const IGisItem::key_t &key);
+
+        void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+
+        /**
+           @brief Check if the project was initialized correctly.
+
+           For example a if a GPX file does not load correctly the project is invalid.
+
+           @return True if project is valid
+         */
+        bool  isValid(){return valid;}
+
+        void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+        void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
+        void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
+
+        /**
+           @brief Serialize object out of a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        virtual QDataStream& operator<<(QDataStream& stream);
+
+        /**
+           @brief Serialize object into a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        virtual QDataStream& operator>>(QDataStream& stream);
+
+        /**
+           @brief writeMetadata
+           @param doc
+           @return
+         */
+        QDomNode writeMetadata(QDomDocument& doc);
+
+    protected:
+        void genKey();
+        void setupName(const QString& defaultName);
+        void markAsSaved();
+        void readMetadata(const QDomNode& xml, metadata_t& metadata);
+        void changed();
+
+        // Those are the URIs of the GPX extensions we support
+        static const QString gpxx_ns;
+        static const QString gpxtpx_ns;
+        static const QString wptx1_ns;
+        static const QString rmc_ns;
+        static const QString ql_ns;
+        static const QString gs_ns;
+        // Those are standard GPX/XML namespaces
+        static const QString gpx_ns;
+        static const QString xsi_ns;
+
+        type_e type;
+        QString key;
+        QString filename;
+        bool valid;
+
+        metadata_t metadata;
+
+        QPointer<CDetailsPrj> dlgDetails;
+
+};
+
+#endif //IGISPROJECT_H
+
diff --git a/.hg/Trashcan/IGisProject_hRc9Iq.h.bak b/.hg/Trashcan/IGisProject_hRc9Iq.h.bak
new file mode 100644
index 0000000..11f2d54
--- /dev/null
+++ b/.hg/Trashcan/IGisProject_hRc9Iq.h.bak
@@ -0,0 +1,230 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef IGISPROJECT_H
+#define IGISPROJECT_H
+
+#include "gis/IGisItem.h"
+#include <QTreeWidgetItem>
+#include <QPointer>
+#include <QMessageBox>
+
+class CGisListWks;
+class IGisItem;
+class CGisDraw;
+class QDataStream;
+class CDetailsPrj;
+
+class IGisProject : public QTreeWidgetItem
+{
+    public:
+        enum type_e
+        {
+              eTypeGoogle
+            , eTypeQms
+            , eTypeGpx
+            , eTypeDb
+        };
+
+        struct person_t
+        {
+            QString name;
+            QString id;
+            QString domain;
+            IGisItem::link_t link;
+        };
+
+        struct copyright_t
+        {
+            QString author;
+            QString year;
+            QString license;
+        };
+
+        struct metadata_t
+        {
+            metadata_t() : time(QDateTime::currentDateTimeUtc()){}
+            QString name;
+            QString desc;
+            person_t author;
+            copyright_t copyright;
+            QList<IGisItem::link_t> links;
+            QDateTime time;
+            QString keywords;
+            QRectF bounds;
+            // -- all gpx tags - stop
+            QMap<QString, QVariant> extensions;
+
+        };
+
+        IGisProject(type_e type, const QString& filename, CGisListWks * parent);
+        virtual ~IGisProject();
+
+        void edit();
+
+        /**
+           @brief Save the project using it's native format.
+         */
+        virtual void save() = 0;
+        /**
+           @brief Save the project selecting one of the available formats.
+        */
+        virtual void saveAs() = 0;
+
+        virtual void setFilename(const QString& fn){filename = fn;}
+        virtual QString getFilename() const {return filename;}
+
+        type_e getType() const {return type;}
+
+        /**
+           @brief Get unique project key.
+           @return A MD5 hash string
+         */
+        const QString& getKey(){genKey(); return key;}
+        const QString& getName() const {return metadata.name;}
+        const QDateTime& getTime() const {return metadata.time;}
+        const QString& getKeywords() const {return metadata.keywords;}
+        const QString& getDescription() const {return metadata.desc;}
+        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
+
+
+        void setName(const QString& str);
+        void setKeywords(const QString& str);
+        void setDescription(const QString& str);
+        void setLinks(const QList<IGisItem::link_t>& links);
+
+        /**
+           @brief Get a short metadata summary
+           @return Informational string.
+         */
+        virtual QString getInfo() const;
+        /**
+           @brief Get a temporary pointer to the item with matching key
+           @param key
+           @return If no item is found 0 is returned.
+        */
+        IGisItem * getItemByKey(const IGisItem::key_t &key);
+
+        /**
+           @brief Get a list of items that are close to a given pixel coordinate of the screen
+
+           @note: The returned pointers are just for temporary use. Best you use them to get the item's key.
+
+           @param pos       the coordinate on the screen in pixel
+           @param items     a list the item's pointer is stored to.
+        */
+        void getItemByPos(const QPointF& pos, QList<IGisItem*>& items);
+
+        /**
+           @brief Delete items with matching key
+           @param key
+        */
+        bool delItemByKey(const IGisItem::key_t &key, QMessageBox::StandardButtons &last);
+
+        /**
+           @brief Call IGisItem::edit() method for items with given key
+
+           @param key   a MD5 hash key
+         */
+        void editItemByKey(const IGisItem::key_t &key);
+
+        /**
+           @brief Add a copy if the gven item to the project
+
+           Befor the item is inserted the method will use it's key to find a duplicat item.
+           If there is an item with the same item key a copy option dialog is shown. Depending
+           the result the action is performed or aborted. The result will be copied into
+           lastResult to repeat the same decision on subsequent items.
+
+           @param item          pointer to item
+           @param off           the offset into the tree widget, -1 for none
+           @param lastResult    a reference to hold the last result of the copy option dialog
+        */
+        void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+
+        /**
+           @brief Check if the project was initialized correctly.
+
+           For example a if a GPX file does not load correctly the project is invalid.
+
+           @return True if project is valid
+         */
+        bool  isValid() const {return valid;}
+
+        void drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis);
+        void drawLabel(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, const QFontMetricsF& fm, CGisDraw * gis);
+        void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
+
+        /**
+           @brief Serialize object out of a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        virtual QDataStream& operator<<(QDataStream& stream);
+
+        /**
+           @brief Serialize object into a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        virtual QDataStream& operator>>(QDataStream& stream);
+
+        /**
+           @brief writeMetadata
+           @param doc
+           @return
+         */
+        QDomNode writeMetadata(QDomDocument& doc);
+
+    protected:
+        void genKey();
+        void setupName(const QString& defaultName);
+        void markAsSaved();
+        void readMetadata(const QDomNode& xml, metadata_t& metadata);
+        void changed();
+
+        // Those are the URIs of the GPX extensions we support
+        static const QString gpxx_ns;
+        static const QString gpxtpx_ns;
+        static const QString wptx1_ns;
+        static const QString rmc_ns;
+        static const QString ql_ns;
+        static const QString gs_ns;
+        // Those are standard GPX/XML namespaces
+        static const QString gpx_ns;
+        static const QString xsi_ns;
+
+        type_e type;
+        QString key;
+        QString filename;
+        bool valid;
+
+        metadata_t metadata;
+
+        QPointer<CDetailsPrj> dlgDetails;
+
+};
+
+#endif //IGISPROJECT_H
+
diff --git a/.hg/Trashcan/IGisWidget_GlUnqs.ui.bak b/.hg/Trashcan/IGisWidget_GlUnqs.ui.bak
new file mode 100644
index 0000000..95668ec
--- /dev/null
+++ b/.hg/Trashcan/IGisWidget_GlUnqs.ui.bak
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IGisWidget</class>
+ <widget class="QWidget" name="IGisWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>436</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="CGisListWks" name="treeWks">
+     <property name="contextMenuPolicy">
+      <enum>Qt::CustomContextMenu</enum>
+     </property>
+     <property name="selectionMode">
+      <enum>QAbstractItemView::ExtendedSelection</enum>
+     </property>
+     <property name="iconSize">
+      <size>
+       <width>22</width>
+       <height>22</height>
+      </size>
+     </property>
+     <column>
+      <property name="text">
+       <string notr="true">Name</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>State</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <widget class="CGisListDB" name="treeDB">
+     <property name="contextMenuPolicy">
+      <enum>Qt::CustomContextMenu</enum>
+     </property>
+     <property name="iconSize">
+      <size>
+       <width>22</width>
+       <height>22</height>
+      </size>
+     </property>
+     <attribute name="headerVisible">
+      <bool>false</bool>
+     </attribute>
+     <column>
+      <property name="text">
+       <string notr="true">1</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>CGisListWks</class>
+   <extends>QTreeWidget</extends>
+   <header>gis/CGisListWks.h</header>
+  </customwidget>
+  <customwidget>
+   <class>CGisListDB</class>
+   <extends>QTreeWidget</extends>
+   <header>gis/CGisListDB.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/.hg/Trashcan/IGisWidget_f8_was.ui.bak b/.hg/Trashcan/IGisWidget_f8_was.ui.bak
new file mode 100644
index 0000000..dfc03ec
--- /dev/null
+++ b/.hg/Trashcan/IGisWidget_f8_was.ui.bak
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IGisWidget</class>
+ <widget class="QWidget" name="IGisWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>436</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="CGisListWks" name="treeWks">
+     <property name="contextMenuPolicy">
+      <enum>Qt::CustomContextMenu</enum>
+     </property>
+     <property name="selectionMode">
+      <enum>QAbstractItemView::ExtendedSelection</enum>
+     </property>
+     <property name="iconSize">
+      <size>
+       <width>22</width>
+       <height>22</height>
+      </size>
+     </property>
+     <attribute name="headerVisible">
+      <bool>false</bool>
+     </attribute>
+     <column>
+      <property name="text">
+       <string notr="true">1</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>2</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <widget class="CGisListDB" name="treeDB">
+     <property name="contextMenuPolicy">
+      <enum>Qt::CustomContextMenu</enum>
+     </property>
+     <property name="iconSize">
+      <size>
+       <width>22</width>
+       <height>22</height>
+      </size>
+     </property>
+     <attribute name="headerVisible">
+      <bool>false</bool>
+     </attribute>
+     <column>
+      <property name="text">
+       <string notr="true">1</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>CGisListWks</class>
+   <extends>QTreeWidget</extends>
+   <header>gis/CGisListWks.h</header>
+  </customwidget>
+  <customwidget>
+   <class>CGisListDB</class>
+   <extends>QTreeWidget</extends>
+   <header>gis/CGisListDB.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/.hg/Trashcan/IScrOptWpt_EtgN4L.ui.bak b/.hg/Trashcan/IScrOptWpt_EtgN4L.ui.bak
new file mode 100644
index 0000000..d3a7aba
--- /dev/null
+++ b/.hg/Trashcan/IScrOptWpt_EtgN4L.ui.bak
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IScrOptWpt</class>
+ <widget class="QWidget" name="IScrOptWpt">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>300</width>
+    <height>72</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <property name="leftMargin">
+    <number>3</number>
+   </property>
+   <property name="topMargin">
+    <number>3</number>
+   </property>
+   <property name="rightMargin">
+    <number>3</number>
+   </property>
+   <property name="bottomMargin">
+    <number>3</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>3</number>
+     </property>
+     <item>
+      <widget class="QToolButton" name="toolEdit">
+       <property name="enabled">
+        <bool>true</bool>
+       </property>
+       <property name="toolTip">
+        <string><html><head/><body><p>View details &amp; Edit</p></body></html></string>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../resources.qrc">
+         <normaloff>:/icons/32x32/EditDetails.png</normaloff>:/icons/32x32/EditDetails.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolDelete">
+       <property name="toolTip">
+        <string><html><head/><body><p>Delete</p></body></html></string>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../resources.qrc">
+         <normaloff>:/icons/32x32/DeleteOne.png</normaloff>:/icons/32x32/DeleteOne.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="maximumSize">
+      <size>
+       <width>400</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>TextLabel</string>
+     </property>
+     <property name="textFormat">
+      <enum>Qt::AutoText</enum>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/.hg/Trashcan/IScrOptWpt_j6Rx9x.ui.bak b/.hg/Trashcan/IScrOptWpt_j6Rx9x.ui.bak
new file mode 100644
index 0000000..96bf754
--- /dev/null
+++ b/.hg/Trashcan/IScrOptWpt_j6Rx9x.ui.bak
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IScrOptWpt</class>
+ <widget class="QWidget" name="IScrOptWpt">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>300</width>
+    <height>72</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <property name="leftMargin">
+    <number>3</number>
+   </property>
+   <property name="topMargin">
+    <number>3</number>
+   </property>
+   <property name="rightMargin">
+    <number>3</number>
+   </property>
+   <property name="bottomMargin">
+    <number>3</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>3</number>
+     </property>
+     <item>
+      <widget class="QToolButton" name="toolEdit">
+       <property name="enabled">
+        <bool>true</bool>
+       </property>
+       <property name="toolTip">
+        <string><html><head/><body><p>View details &amp; Edit</p></body></html></string>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../resources.qrc">
+         <normaloff>:/icons/32x32/EditDetails.png</normaloff>:/icons/32x32/EditDetails.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolDelete">
+       <property name="toolTip">
+        <string><html><head/><body><p>Delete</p></body></html></string>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../resources.qrc">
+         <normaloff>:/icons/32x32/DeleteOne.png</normaloff>:/icons/32x32/DeleteOne.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>TextLabel</string>
+     </property>
+     <property name="textFormat">
+      <enum>Qt::AutoText</enum>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/.hg/Trashcan/IWptIconDialog_7JMhQt.ui.bak b/.hg/Trashcan/IWptIconDialog_7JMhQt.ui.bak
new file mode 100644
index 0000000..fdbe0fe
--- /dev/null
+++ b/.hg/Trashcan/IWptIconDialog_7JMhQt.ui.bak
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IWptIconDialog</class>
+ <widget class="QDialog" name="IWptIconDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Icons...</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QListWidget" name="listWidget">
+     <property name="iconSize">
+      <size>
+       <width>22</width>
+       <height>22</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/.hg/Trashcan/IWptIconDialog_c__AmQ.ui.bak b/.hg/Trashcan/IWptIconDialog_c__AmQ.ui.bak
new file mode 100644
index 0000000..b24f170
--- /dev/null
+++ b/.hg/Trashcan/IWptIconDialog_c__AmQ.ui.bak
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IWptIconDialog</class>
+ <widget class="QDialog" name="IWptIconDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Icons...</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QListWidget" name="listWidget">
+     <property name="iconSize">
+      <size>
+       <width>22</width>
+       <height>22</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>IWptIconDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>IWptIconDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/changelog.txt b/.hg/Trashcan/changelog_CYEUr4.txt.bak
similarity index 85%
copy from changelog.txt
copy to .hg/Trashcan/changelog_CYEUr4.txt.bak
index fcde124..9ce9073 100644
--- a/changelog.txt
+++ b/.hg/Trashcan/changelog_CYEUr4.txt.bak
@@ -1,3 +1,19 @@
+V 1.0.0
+* Update Czech, French, German and Spanish translation
+* Fix dialogs hiding behind main window
+* Fix various application crashes
+* Fix tile cache growing too large
+* Fix cliff polylines in Garmin maps
+* Add device support on Windows
+* Various little GUI optimizations
+
+V 1.0.beta1
+* Add support for TwoNav units
+* Load/Restore images attached to waypoints on devices
+* Add spoiler download to geocaches.
+* Add group update for projects on devices.
+* GUI cleanup and little fixes
+
 V 0.12.0
 * Fix: Workspace is not saved on Windows.
 * Fix: Bad track color names
diff --git a/changelog.txt b/.hg/Trashcan/changelog_z3flxg.txt.bak
similarity index 93%
copy from changelog.txt
copy to .hg/Trashcan/changelog_z3flxg.txt.bak
index fcde124..b826186 100644
--- a/changelog.txt
+++ b/.hg/Trashcan/changelog_z3flxg.txt.bak
@@ -1,3 +1,10 @@
+V 1.0.beta1
+* Add support for TwoNav units
+* Load/Restore images attached to waypoints on devices
+* Add spoiler download to geocaches.
+* Add group update for projects on devices.
+* GUI cleanup and little fixes
+
 V 0.12.0
 * Fix: Workspace is not saved on Windows.
 * Fix: Bad track color names
diff --git a/src/resources.qrc b/.hg/Trashcan/resources_NOfdMH.qrc.bak
similarity index 65%
copy from src/resources.qrc
copy to .hg/Trashcan/resources_NOfdMH.qrc.bak
index a92a2a6..983073f 100644
--- a/src/resources.qrc
+++ b/.hg/Trashcan/resources_NOfdMH.qrc.bak
@@ -18,6 +18,68 @@
         <file>icons/8x8/bullet_red.png</file>
         <file>icons/8x8/bullet_white.png</file>
         <file>icons/8x8/bullet_yellow.png</file>
+        <file>icons/16x16/2DFix.png</file>
+        <file>icons/16x16/3DFix.png</file>
+        <file>icons/16x16/Add.png</file>
+        <file>icons/16x16/AddMapWorkspace.png</file>
+        <file>icons/16x16/Cancel.png</file>
+        <file>icons/16x16/Check.png</file>
+        <file>icons/16x16/DeleteMultiple.png</file>
+        <file>icons/16x16/DeleteOne.png</file>
+        <file>icons/16x16/Down.png</file>
+        <file>icons/16x16/FolderMap.png</file>
+        <file>icons/16x16/FolderDEM.png</file>
+        <file>icons/16x16/Font.png</file>
+        <file>icons/16x16/FromMap.png</file>
+        <file>icons/16x16/Grid.png</file>
+        <file>icons/16x16/GridSetup.png</file>
+        <file>icons/16x16/GridWizzard.png</file>
+        <file>icons/16x16/Help.png</file>
+        <file>icons/16x16/Info.png</file>
+        <file>icons/16x16/Map.png</file>
+        <file>icons/16x16/QMapShack.png</file>
+        <file>icons/16x16/MimeIMG.png</file>
+        <file>icons/16x16/MimeJNX.png</file>
+        <file>icons/16x16/MimeMAP.png</file>
+        <file>icons/16x16/MimeRMAP.png</file>
+        <file>icons/16x16/MimeVRT.png</file>
+        <file>icons/16x16/MimeDemVRT.png</file>
+        <file>icons/16x16/MouseWheel.png</file>
+        <file>icons/16x16/NightDay.png</file>
+        <file>icons/16x16/NoFix.png</file>
+        <file>icons/16x16/Off.png</file>
+        <file>icons/16x16/POIText.png</file>
+        <file>icons/16x16/Reset.png</file>
+        <file>icons/16x16/Right.png</file>
+        <file>icons/16x16/Scale.png</file>
+        <file>icons/16x16/SelectColor.png</file>
+        <file>icons/16x16/ToBottom.png</file>
+        <file>icons/16x16/ToTop.png</file>
+        <file>icons/16x16/ToolTip.png</file>
+        <file>icons/16x16/Up.png</file>
+        <file>icons/16x16/SetupMapWorkspace.png</file>
+        <file>icons/16x16/SaveGIS.png</file>
+        <file>icons/16x16/SaveAllGIS.png</file>
+        <file>icons/16x16/LoadGIS.png</file>
+        <file>icons/16x16/GisProject.png</file>
+        <file>icons/16x16/Route.png</file>
+        <file>icons/16x16/Close.png</file>
+        <file>icons/16x16/Track.png</file>
+        <file>icons/16x16/EditDetails.png</file>
+        <file>icons/16x16/EditText.png</file>
+        <file>icons/16x16/TimeZoneSetup.png</file>
+        <file>icons/16x16/Undo.png</file>
+        <file>icons/16x16/Redo.png</file>
+        <file>icons/16x16/Cut.png</file>
+        <file>icons/16x16/Copy.png</file>
+        <file>icons/16x16/Paste.png</file>
+        <file>icons/16x16/TextLeft.png</file>
+        <file>icons/16x16/TextRight.png</file>
+        <file>icons/16x16/TextCenter.png</file>
+        <file>icons/16x16/TextJustified.png</file>
+        <file>icons/16x16/TextBold.png</file>
+        <file>icons/16x16/TextUnderlined.png</file>
+        <file>icons/16x16/TextItalic.png</file>
 
         <file>icons/32x32/2DFix.png</file>
         <file>icons/32x32/3DFix.png</file>
@@ -37,7 +99,6 @@
         <file>icons/32x32/GridWizzard.png</file>
         <file>icons/32x32/Help.png</file>
         <file>icons/32x32/Info.png</file>
-        <file>icons/32x32/Error.png</file>
         <file>icons/32x32/Map.png</file>
         <file>icons/32x32/QMapShack.png</file>
         <file>icons/32x32/MimeIMG.png</file>
@@ -45,8 +106,6 @@
         <file>icons/32x32/MimeMAP.png</file>
         <file>icons/32x32/MimeRMAP.png</file>
         <file>icons/32x32/MimeVRT.png</file>
-        <file>icons/32x32/MimeWMTS.png</file>
-        <file>icons/32x32/MimeTMS.png</file>
         <file>icons/32x32/MimeDemVRT.png</file>
         <file>icons/32x32/MouseWheel.png</file>
         <file>icons/32x32/NightDay.png</file>
@@ -55,7 +114,6 @@
         <file>icons/32x32/POIText.png</file>
         <file>icons/32x32/Reset.png</file>
         <file>icons/32x32/Right.png</file>
-        <file>icons/32x32/Left.png</file>
         <file>icons/32x32/Scale.png</file>
         <file>icons/32x32/SelectColor.png</file>
         <file>icons/32x32/ToBottom.png</file>
@@ -64,25 +122,19 @@
         <file>icons/32x32/Up.png</file>
         <file>icons/32x32/SetupMapWorkspace.png</file>
         <file>icons/32x32/SaveGIS.png</file>
-        <file>icons/32x32/SaveGISAs.png</file>
         <file>icons/32x32/SaveAllGIS.png</file>
         <file>icons/32x32/LoadGIS.png</file>
-        <file>icons/32x32/GpxProject.png</file>
-        <file>icons/32x32/QmsProject.png</file>
-        <file>icons/32x32/DBProject.png</file>
+        <file>icons/32x32/GisProject.png</file>
         <file>icons/32x32/Route.png</file>
         <file>icons/32x32/Close.png</file>
         <file>icons/32x32/Track.png</file>
         <file>icons/32x32/EditDetails.png</file>
         <file>icons/32x32/EditText.png</file>
         <file>icons/32x32/TimeZoneSetup.png</file>
-        <file>icons/32x32/UnitSetup.png</file>
         <file>icons/32x32/Undo.png</file>
         <file>icons/32x32/Redo.png</file>
         <file>icons/32x32/Cut.png</file>
-        <file>icons/32x32/CutHistory.png</file>
         <file>icons/32x32/Copy.png</file>
-        <file>icons/32x32/Move.png</file>
         <file>icons/32x32/Paste.png</file>
         <file>icons/32x32/TextLeft.png</file>
         <file>icons/32x32/TextRight.png</file>
@@ -91,47 +143,8 @@
         <file>icons/32x32/TextBold.png</file>
         <file>icons/32x32/TextUnderlined.png</file>
         <file>icons/32x32/TextItalic.png</file>
-        <file>icons/32x32/Lock.png</file>
-        <file>icons/32x32/UnLock.png</file>
-        <file>icons/32x32/WptMove.png</file>
-        <file>icons/32x32/WptProj.png</file>
-        <file>icons/32x32/WptProx.png</file>
-        <file>icons/32x32/TrkCut.png</file>
-        <file>icons/32x32/TrkProfile.png</file>
-        <file>icons/32x32/Tainted.png</file>
-        <file>icons/32x32/AddWpt.png</file>
-        <file>icons/32x32/AddTrk.png</file>
-        <file>icons/32x32/AddArea.png</file>
-        <file>icons/32x32/AddProject.png</file>
-        <file>icons/32x32/LineMove.png</file>
-        <file>icons/32x32/PointMove.png</file>
-        <file>icons/32x32/PointHide.png</file>
-        <file>icons/32x32/PointShow.png</file>
-        <file>icons/32x32/AreaMove.png</file>
-        <file>icons/32x32/SelectRange.png</file>
-        <file>icons/32x32/Area.png</file>
-        <file>icons/32x32/Reverse.png</file>
-        <file>icons/32x32/Combine.png</file>
-        <file>icons/32x32/SearchGoogle.png</file>
-        <file>icons/32x32/Start.png</file>
-        <file>icons/32x32/SetEle.png</file>
-        <file>icons/32x32/Pattern.png</file>
-        <file>icons/32x32/Opacity.png</file>
-        <file>icons/32x32/DatabaseSetup.png</file>
-        <file>icons/32x32/DatabaseConvert.png</file>
-        <file>icons/32x32/PathBlue.png</file>
-        <file>icons/32x32/PathOrange.png</file>
-        <file>icons/32x32/PathGreen.png</file>
-        <file>icons/32x32/Link.png</file>
-        <file>icons/32x32/Database.png</file>
-        <file>icons/32x32/Empty.png</file>
-        <file>icons/32x32/Apply.png</file>
-        <file>icons/32x32/Time.png</file>
-        <file>icons/32x32/Print.png</file>
-        <file>icons/32x32/AddImage.png</file>
-        <file>icons/32x32/DelImage.png</file>
-        <file>icons/32x32/Image.png</file>
-        <file>icons/32x32/Device.png</file>
+
+
 
         <file>icons/48x48/2DFix.png</file>
         <file>icons/48x48/3DFix.png</file>
@@ -151,7 +164,6 @@
         <file>icons/48x48/GridWizzard.png</file>
         <file>icons/48x48/Help.png</file>
         <file>icons/48x48/Info.png</file>
-        <file>icons/48x48/Error.png</file>
         <file>icons/48x48/Map.png</file>
         <file>icons/48x48/QMapShack.png</file>
         <file>icons/48x48/MimeIMG.png</file>
@@ -159,8 +171,6 @@
         <file>icons/48x48/MimeMAP.png</file>
         <file>icons/48x48/MimeRMAP.png</file>
         <file>icons/48x48/MimeVRT.png</file>
-        <file>icons/48x48/MimeWMTS.png</file>
-        <file>icons/48x48/MimeTMS.png</file>
         <file>icons/48x48/MimeDemVRT.png</file>
         <file>icons/48x48/MouseWheel.png</file>
         <file>icons/48x48/NightDay.png</file>
@@ -169,7 +179,6 @@
         <file>icons/48x48/POIText.png</file>
         <file>icons/48x48/Reset.png</file>
         <file>icons/48x48/Right.png</file>
-        <file>icons/48x48/Left.png</file>
         <file>icons/48x48/Scale.png</file>
         <file>icons/48x48/SelectColor.png</file>
         <file>icons/48x48/ToBottom.png</file>
@@ -178,25 +187,19 @@
         <file>icons/48x48/Up.png</file>
         <file>icons/48x48/SetupMapWorkspace.png</file>
         <file>icons/48x48/SaveGIS.png</file>
-        <file>icons/48x48/SaveGISAs.png</file>
         <file>icons/48x48/SaveAllGIS.png</file>
         <file>icons/48x48/LoadGIS.png</file>
-        <file>icons/48x48/GpxProject.png</file>
-        <file>icons/48x48/QmsProject.png</file>
-        <file>icons/48x48/DBProject.png</file>
+        <file>icons/48x48/GisProject.png</file>
         <file>icons/48x48/Route.png</file>
         <file>icons/48x48/Close.png</file>
         <file>icons/48x48/Track.png</file>
         <file>icons/48x48/EditDetails.png</file>
         <file>icons/48x48/EditText.png</file>
         <file>icons/48x48/TimeZoneSetup.png</file>
-        <file>icons/48x48/UnitSetup.png</file>
         <file>icons/48x48/Undo.png</file>
         <file>icons/48x48/Redo.png</file>
         <file>icons/48x48/Cut.png</file>
-        <file>icons/48x48/CutHistory.png</file>
         <file>icons/48x48/Copy.png</file>
-        <file>icons/48x48/Move.png</file>
         <file>icons/48x48/Paste.png</file>
         <file>icons/48x48/TextLeft.png</file>
         <file>icons/48x48/TextRight.png</file>
@@ -205,47 +208,8 @@
         <file>icons/48x48/TextBold.png</file>
         <file>icons/48x48/TextUnderlined.png</file>
         <file>icons/48x48/TextItalic.png</file>
-        <file>icons/48x48/Lock.png</file>
-        <file>icons/48x48/UnLock.png</file>
-        <file>icons/48x48/WptMove.png</file>
-        <file>icons/48x48/WptProj.png</file>
-        <file>icons/48x48/WptProx.png</file>
-        <file>icons/48x48/TrkCut.png</file>
-        <file>icons/48x48/TrkProfile.png</file>
-        <file>icons/48x48/Tainted.png</file>
-        <file>icons/48x48/AddWpt.png</file>
-        <file>icons/48x48/AddTrk.png</file>
-        <file>icons/48x48/AddArea.png</file>
-        <file>icons/48x48/AddProject.png</file>
-        <file>icons/48x48/LineMove.png</file>
-        <file>icons/48x48/PointMove.png</file>
-        <file>icons/48x48/PointHide.png</file>
-        <file>icons/48x48/PointShow.png</file>
-        <file>icons/48x48/AreaMove.png</file>
-        <file>icons/48x48/SelectRange.png</file>
-        <file>icons/48x48/Area.png</file>
-        <file>icons/48x48/Reverse.png</file>
-        <file>icons/48x48/Combine.png</file>
-        <file>icons/48x48/SearchGoogle.png</file>
-        <file>icons/48x48/Start.png</file>
-        <file>icons/48x48/SetEle.png</file>
-        <file>icons/48x48/Pattern.png</file>
-        <file>icons/48x48/Opacity.png</file>
-        <file>icons/48x48/DatabaseSetup.png</file>
-        <file>icons/48x48/DatabaseConvert.png</file>
-        <file>icons/48x48/PathBlue.png</file>
-        <file>icons/48x48/PathOrange.png</file>
-        <file>icons/48x48/PathGreen.png</file>
-        <file>icons/48x48/Link.png</file>
-        <file>icons/48x48/Database.png</file>
-        <file>icons/48x48/Empty.png</file>
-        <file>icons/48x48/Apply.png</file>
-        <file>icons/48x48/Time.png</file>
-        <file>icons/48x48/Print.png</file>
-        <file>icons/48x48/AddImage.png</file>
-        <file>icons/48x48/DelImage.png</file>
-        <file>icons/48x48/Image.png</file>
-        <file>icons/48x48/Device.png</file>
+
+
 
         <file>icons/cache/32x32/bluepin.png</file>
         <file>icons/cache/32x32/cito.png</file>
@@ -299,23 +263,13 @@
         <file>icons/waypoints/32x32/DiamondGreen.png</file>
         <file>icons/waypoints/32x32/DiamondBlue.png</file>
         <file>icons/waypoints/32x32/Residence.png</file>
-        <file>icons/waypoints/32x32/Waypoint.png</file>
         <file>cursors/cursorArrow.png</file>
         <file>cursors/cursorMove.png</file>
         <file>cursors/cursorMoveMap.png</file>
-        <file>cursors/cursorMoveWpt.png</file>
-        <file>cursors/cursorMoveLine.png</file>
-        <file>cursors/cursorMoveArea.png</file>
-        <file>cursors/cursorSelectRange.png</file>
-        <file>cursors/cursorAdd.png</file>
         <file>cursors/wptHighlight.png</file>
         <file>animation/loader.gif</file>
         <file>animation/loader2.gif</file>
         <file>pics/timezones.png</file>
         <file>pics/splash.png</file>
-        <file>pics/compass.png</file>
-        <file>pics/about.png</file>
-        <file>pics/noMap256x256.png</file>
-
     </qresource>
 </RCC>
diff --git a/src/resources.qrc b/.hg/Trashcan/resources_VTtTG0.qrc.bak
similarity index 57%
copy from src/resources.qrc
copy to .hg/Trashcan/resources_VTtTG0.qrc.bak
index a92a2a6..13636e9 100644
--- a/src/resources.qrc
+++ b/.hg/Trashcan/resources_VTtTG0.qrc.bak
@@ -18,7 +18,56 @@
         <file>icons/8x8/bullet_red.png</file>
         <file>icons/8x8/bullet_white.png</file>
         <file>icons/8x8/bullet_yellow.png</file>
-
+        <file>icons/16x16/2DFix.png</file>
+        <file>icons/16x16/3DFix.png</file>
+        <file>icons/16x16/Add.png</file>
+        <file>icons/16x16/AddMapWorkspace.png</file>
+        <file>icons/16x16/Cancel.png</file>
+        <file>icons/16x16/Check.png</file>
+        <file>icons/16x16/DeleteMultiple.png</file>
+        <file>icons/16x16/DeleteOne.png</file>
+        <file>icons/16x16/Down.png</file>
+        <file>icons/16x16/FolderMap.png</file>
+        <file>icons/16x16/FolderDEM.png</file>
+        <file>icons/16x16/Font.png</file>
+        <file>icons/16x16/FromMap.png</file>
+        <file>icons/16x16/Grid.png</file>
+        <file>icons/16x16/GridSetup.png</file>
+        <file>icons/16x16/GridWizzard.png</file>
+        <file>icons/16x16/Help.png</file>
+        <file>icons/16x16/Info.png</file>
+        <file>icons/16x16/Map.png</file>
+        <file>icons/16x16/QMapShack.png</file>
+        <file>icons/16x16/MimeIMG.png</file>
+        <file>icons/16x16/MimeJNX.png</file>
+        <file>icons/16x16/MimeMAP.png</file>
+        <file>icons/16x16/MimeRMAP.png</file>
+        <file>icons/16x16/MimeVRT.png</file>
+        <file>icons/16x16/MimeDemVRT.png</file>
+        <file>icons/16x16/MouseWheel.png</file>
+        <file>icons/16x16/NightDay.png</file>
+        <file>icons/16x16/NoFix.png</file>
+        <file>icons/16x16/Off.png</file>
+        <file>icons/16x16/POIText.png</file>
+        <file>icons/16x16/Reset.png</file>
+        <file>icons/16x16/Right.png</file>
+        <file>icons/16x16/Scale.png</file>
+        <file>icons/16x16/SelectColor.png</file>
+        <file>icons/16x16/ToBottom.png</file>
+        <file>icons/16x16/ToTop.png</file>
+        <file>icons/16x16/ToolTip.png</file>
+        <file>icons/16x16/Up.png</file>
+        <file>icons/16x16/SetupMapWorkspace.png</file>
+        <file>icons/16x16/SaveGIS.png</file>
+        <file>icons/16x16/SaveAllGIS.png</file>
+        <file>icons/16x16/LoadGIS.png</file>
+        <file>icons/16x16/GisProject.png</file>
+        <file>icons/16x16/Route.png</file>
+        <file>icons/16x16/Close.png</file>
+        <file>icons/16x16/Track.png</file>
+        <file>icons/16x16/EditDetails.png</file>
+        <file>icons/16x16/EditText.png</file>
+        <file>icons/16x16/TimeZoneSetup.png</file>
         <file>icons/32x32/2DFix.png</file>
         <file>icons/32x32/3DFix.png</file>
         <file>icons/32x32/Add.png</file>
@@ -37,7 +86,6 @@
         <file>icons/32x32/GridWizzard.png</file>
         <file>icons/32x32/Help.png</file>
         <file>icons/32x32/Info.png</file>
-        <file>icons/32x32/Error.png</file>
         <file>icons/32x32/Map.png</file>
         <file>icons/32x32/QMapShack.png</file>
         <file>icons/32x32/MimeIMG.png</file>
@@ -45,8 +93,6 @@
         <file>icons/32x32/MimeMAP.png</file>
         <file>icons/32x32/MimeRMAP.png</file>
         <file>icons/32x32/MimeVRT.png</file>
-        <file>icons/32x32/MimeWMTS.png</file>
-        <file>icons/32x32/MimeTMS.png</file>
         <file>icons/32x32/MimeDemVRT.png</file>
         <file>icons/32x32/MouseWheel.png</file>
         <file>icons/32x32/NightDay.png</file>
@@ -55,7 +101,6 @@
         <file>icons/32x32/POIText.png</file>
         <file>icons/32x32/Reset.png</file>
         <file>icons/32x32/Right.png</file>
-        <file>icons/32x32/Left.png</file>
         <file>icons/32x32/Scale.png</file>
         <file>icons/32x32/SelectColor.png</file>
         <file>icons/32x32/ToBottom.png</file>
@@ -64,75 +109,15 @@
         <file>icons/32x32/Up.png</file>
         <file>icons/32x32/SetupMapWorkspace.png</file>
         <file>icons/32x32/SaveGIS.png</file>
-        <file>icons/32x32/SaveGISAs.png</file>
         <file>icons/32x32/SaveAllGIS.png</file>
         <file>icons/32x32/LoadGIS.png</file>
-        <file>icons/32x32/GpxProject.png</file>
-        <file>icons/32x32/QmsProject.png</file>
-        <file>icons/32x32/DBProject.png</file>
+        <file>icons/32x32/GisProject.png</file>
         <file>icons/32x32/Route.png</file>
         <file>icons/32x32/Close.png</file>
         <file>icons/32x32/Track.png</file>
         <file>icons/32x32/EditDetails.png</file>
         <file>icons/32x32/EditText.png</file>
         <file>icons/32x32/TimeZoneSetup.png</file>
-        <file>icons/32x32/UnitSetup.png</file>
-        <file>icons/32x32/Undo.png</file>
-        <file>icons/32x32/Redo.png</file>
-        <file>icons/32x32/Cut.png</file>
-        <file>icons/32x32/CutHistory.png</file>
-        <file>icons/32x32/Copy.png</file>
-        <file>icons/32x32/Move.png</file>
-        <file>icons/32x32/Paste.png</file>
-        <file>icons/32x32/TextLeft.png</file>
-        <file>icons/32x32/TextRight.png</file>
-        <file>icons/32x32/TextCenter.png</file>
-        <file>icons/32x32/TextJustified.png</file>
-        <file>icons/32x32/TextBold.png</file>
-        <file>icons/32x32/TextUnderlined.png</file>
-        <file>icons/32x32/TextItalic.png</file>
-        <file>icons/32x32/Lock.png</file>
-        <file>icons/32x32/UnLock.png</file>
-        <file>icons/32x32/WptMove.png</file>
-        <file>icons/32x32/WptProj.png</file>
-        <file>icons/32x32/WptProx.png</file>
-        <file>icons/32x32/TrkCut.png</file>
-        <file>icons/32x32/TrkProfile.png</file>
-        <file>icons/32x32/Tainted.png</file>
-        <file>icons/32x32/AddWpt.png</file>
-        <file>icons/32x32/AddTrk.png</file>
-        <file>icons/32x32/AddArea.png</file>
-        <file>icons/32x32/AddProject.png</file>
-        <file>icons/32x32/LineMove.png</file>
-        <file>icons/32x32/PointMove.png</file>
-        <file>icons/32x32/PointHide.png</file>
-        <file>icons/32x32/PointShow.png</file>
-        <file>icons/32x32/AreaMove.png</file>
-        <file>icons/32x32/SelectRange.png</file>
-        <file>icons/32x32/Area.png</file>
-        <file>icons/32x32/Reverse.png</file>
-        <file>icons/32x32/Combine.png</file>
-        <file>icons/32x32/SearchGoogle.png</file>
-        <file>icons/32x32/Start.png</file>
-        <file>icons/32x32/SetEle.png</file>
-        <file>icons/32x32/Pattern.png</file>
-        <file>icons/32x32/Opacity.png</file>
-        <file>icons/32x32/DatabaseSetup.png</file>
-        <file>icons/32x32/DatabaseConvert.png</file>
-        <file>icons/32x32/PathBlue.png</file>
-        <file>icons/32x32/PathOrange.png</file>
-        <file>icons/32x32/PathGreen.png</file>
-        <file>icons/32x32/Link.png</file>
-        <file>icons/32x32/Database.png</file>
-        <file>icons/32x32/Empty.png</file>
-        <file>icons/32x32/Apply.png</file>
-        <file>icons/32x32/Time.png</file>
-        <file>icons/32x32/Print.png</file>
-        <file>icons/32x32/AddImage.png</file>
-        <file>icons/32x32/DelImage.png</file>
-        <file>icons/32x32/Image.png</file>
-        <file>icons/32x32/Device.png</file>
-
         <file>icons/48x48/2DFix.png</file>
         <file>icons/48x48/3DFix.png</file>
         <file>icons/48x48/Add.png</file>
@@ -151,7 +136,6 @@
         <file>icons/48x48/GridWizzard.png</file>
         <file>icons/48x48/Help.png</file>
         <file>icons/48x48/Info.png</file>
-        <file>icons/48x48/Error.png</file>
         <file>icons/48x48/Map.png</file>
         <file>icons/48x48/QMapShack.png</file>
         <file>icons/48x48/MimeIMG.png</file>
@@ -159,8 +143,6 @@
         <file>icons/48x48/MimeMAP.png</file>
         <file>icons/48x48/MimeRMAP.png</file>
         <file>icons/48x48/MimeVRT.png</file>
-        <file>icons/48x48/MimeWMTS.png</file>
-        <file>icons/48x48/MimeTMS.png</file>
         <file>icons/48x48/MimeDemVRT.png</file>
         <file>icons/48x48/MouseWheel.png</file>
         <file>icons/48x48/NightDay.png</file>
@@ -169,7 +151,6 @@
         <file>icons/48x48/POIText.png</file>
         <file>icons/48x48/Reset.png</file>
         <file>icons/48x48/Right.png</file>
-        <file>icons/48x48/Left.png</file>
         <file>icons/48x48/Scale.png</file>
         <file>icons/48x48/SelectColor.png</file>
         <file>icons/48x48/ToBottom.png</file>
@@ -178,75 +159,15 @@
         <file>icons/48x48/Up.png</file>
         <file>icons/48x48/SetupMapWorkspace.png</file>
         <file>icons/48x48/SaveGIS.png</file>
-        <file>icons/48x48/SaveGISAs.png</file>
         <file>icons/48x48/SaveAllGIS.png</file>
         <file>icons/48x48/LoadGIS.png</file>
-        <file>icons/48x48/GpxProject.png</file>
-        <file>icons/48x48/QmsProject.png</file>
-        <file>icons/48x48/DBProject.png</file>
+        <file>icons/48x48/GisProject.png</file>
         <file>icons/48x48/Route.png</file>
         <file>icons/48x48/Close.png</file>
         <file>icons/48x48/Track.png</file>
         <file>icons/48x48/EditDetails.png</file>
         <file>icons/48x48/EditText.png</file>
         <file>icons/48x48/TimeZoneSetup.png</file>
-        <file>icons/48x48/UnitSetup.png</file>
-        <file>icons/48x48/Undo.png</file>
-        <file>icons/48x48/Redo.png</file>
-        <file>icons/48x48/Cut.png</file>
-        <file>icons/48x48/CutHistory.png</file>
-        <file>icons/48x48/Copy.png</file>
-        <file>icons/48x48/Move.png</file>
-        <file>icons/48x48/Paste.png</file>
-        <file>icons/48x48/TextLeft.png</file>
-        <file>icons/48x48/TextRight.png</file>
-        <file>icons/48x48/TextCenter.png</file>
-        <file>icons/48x48/TextJustified.png</file>
-        <file>icons/48x48/TextBold.png</file>
-        <file>icons/48x48/TextUnderlined.png</file>
-        <file>icons/48x48/TextItalic.png</file>
-        <file>icons/48x48/Lock.png</file>
-        <file>icons/48x48/UnLock.png</file>
-        <file>icons/48x48/WptMove.png</file>
-        <file>icons/48x48/WptProj.png</file>
-        <file>icons/48x48/WptProx.png</file>
-        <file>icons/48x48/TrkCut.png</file>
-        <file>icons/48x48/TrkProfile.png</file>
-        <file>icons/48x48/Tainted.png</file>
-        <file>icons/48x48/AddWpt.png</file>
-        <file>icons/48x48/AddTrk.png</file>
-        <file>icons/48x48/AddArea.png</file>
-        <file>icons/48x48/AddProject.png</file>
-        <file>icons/48x48/LineMove.png</file>
-        <file>icons/48x48/PointMove.png</file>
-        <file>icons/48x48/PointHide.png</file>
-        <file>icons/48x48/PointShow.png</file>
-        <file>icons/48x48/AreaMove.png</file>
-        <file>icons/48x48/SelectRange.png</file>
-        <file>icons/48x48/Area.png</file>
-        <file>icons/48x48/Reverse.png</file>
-        <file>icons/48x48/Combine.png</file>
-        <file>icons/48x48/SearchGoogle.png</file>
-        <file>icons/48x48/Start.png</file>
-        <file>icons/48x48/SetEle.png</file>
-        <file>icons/48x48/Pattern.png</file>
-        <file>icons/48x48/Opacity.png</file>
-        <file>icons/48x48/DatabaseSetup.png</file>
-        <file>icons/48x48/DatabaseConvert.png</file>
-        <file>icons/48x48/PathBlue.png</file>
-        <file>icons/48x48/PathOrange.png</file>
-        <file>icons/48x48/PathGreen.png</file>
-        <file>icons/48x48/Link.png</file>
-        <file>icons/48x48/Database.png</file>
-        <file>icons/48x48/Empty.png</file>
-        <file>icons/48x48/Apply.png</file>
-        <file>icons/48x48/Time.png</file>
-        <file>icons/48x48/Print.png</file>
-        <file>icons/48x48/AddImage.png</file>
-        <file>icons/48x48/DelImage.png</file>
-        <file>icons/48x48/Image.png</file>
-        <file>icons/48x48/Device.png</file>
-
         <file>icons/cache/32x32/bluepin.png</file>
         <file>icons/cache/32x32/cito.png</file>
         <file>icons/cache/32x32/corrected.png</file>
@@ -299,23 +220,13 @@
         <file>icons/waypoints/32x32/DiamondGreen.png</file>
         <file>icons/waypoints/32x32/DiamondBlue.png</file>
         <file>icons/waypoints/32x32/Residence.png</file>
-        <file>icons/waypoints/32x32/Waypoint.png</file>
         <file>cursors/cursorArrow.png</file>
         <file>cursors/cursorMove.png</file>
         <file>cursors/cursorMoveMap.png</file>
-        <file>cursors/cursorMoveWpt.png</file>
-        <file>cursors/cursorMoveLine.png</file>
-        <file>cursors/cursorMoveArea.png</file>
-        <file>cursors/cursorSelectRange.png</file>
-        <file>cursors/cursorAdd.png</file>
         <file>cursors/wptHighlight.png</file>
         <file>animation/loader.gif</file>
         <file>animation/loader2.gif</file>
         <file>pics/timezones.png</file>
         <file>pics/splash.png</file>
-        <file>pics/compass.png</file>
-        <file>pics/about.png</file>
-        <file>pics/noMap256x256.png</file>
-
     </qresource>
 </RCC>
diff --git a/.hg/bookmarks b/.hg/bookmarks
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/branch b/.hg/branch
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/.hg/branch
@@ -0,0 +1 @@
+default
diff --git a/.hg/cache/branch2-base b/.hg/cache/branch2-base
new file mode 100644
index 0000000..58729ea
--- /dev/null
+++ b/.hg/cache/branch2-base
@@ -0,0 +1,5 @@
+b8ec877803db59f4fead5aa7335c04e6a548ed9d 747
+b8ec877803db59f4fead5aa7335c04e6a548ed9d o V1.x
+0433ed2f60a3f678cbc72718c60f215680c9fa83 o database
+18a67bde8d96355fe6eb57e236ce997f926a33ca o default
+209054e1b55f1e6009182ca384ff41e500bc6d4d o default
diff --git a/.hg/cache/branch2-served b/.hg/cache/branch2-served
new file mode 100644
index 0000000..7b687fa
--- /dev/null
+++ b/.hg/cache/branch2-served
@@ -0,0 +1,5 @@
+81cc8df832b3e25b79cff18a12b8ff4d447553ca 797
+5230c7cf05b9ceb46b0de9002e9aa4acb39171e0 o V1.x
+0433ed2f60a3f678cbc72718c60f215680c9fa83 o database
+18a67bde8d96355fe6eb57e236ce997f926a33ca o default
+81cc8df832b3e25b79cff18a12b8ff4d447553ca o default
diff --git a/.hg/cache/rbc-names-v1 b/.hg/cache/rbc-names-v1
new file mode 100644
index 0000000..98a58c3
Binary files /dev/null and b/.hg/cache/rbc-names-v1 differ
diff --git a/.hg/cache/rbc-revs-v1 b/.hg/cache/rbc-revs-v1
new file mode 100644
index 0000000..61d519d
Binary files /dev/null and b/.hg/cache/rbc-revs-v1 differ
diff --git a/.hg/cur-message.txt b/.hg/cur-message.txt
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/dirstate b/.hg/dirstate
new file mode 100644
index 0000000..812d128
Binary files /dev/null and b/.hg/dirstate differ
diff --git a/.hg/hgrc b/.hg/hgrc
new file mode 100644
index 0000000..95e2160
--- /dev/null
+++ b/.hg/hgrc
@@ -0,0 +1,6 @@
+[paths]
+default = https://kiozen@bitbucket.org/maproom/qmapshack
+
+
+[ui]
+merge = kdiff3
diff --git a/.hg/last-message.txt b/.hg/last-message.txt
new file mode 100644
index 0000000..252d2ac
--- /dev/null
+++ b/.hg/last-message.txt
@@ -0,0 +1 @@
+Added tag V 1.0.0 for changeset 6fb4d49d01a6
\ No newline at end of file
diff --git a/.hg/requires b/.hg/requires
new file mode 100644
index 0000000..f634f66
--- /dev/null
+++ b/.hg/requires
@@ -0,0 +1,4 @@
+dotencode
+fncache
+revlogv1
+store
diff --git a/.hg/shelves/2014-08-10_14-17-09_parent_rev_212 b/.hg/shelves/2014-08-10_14-17-09_parent_rev_212
new file mode 100644
index 0000000..4a55457
--- /dev/null
+++ b/.hg/shelves/2014-08-10_14-17-09_parent_rev_212
@@ -0,0 +1,107 @@
+diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
+--- a/src/gis/trk/CGisItemTrk.cpp
++++ b/src/gis/trk/CGisItemTrk.cpp
+@@ -563,6 +563,7 @@
+ }
+ 
+ 
++#define WINDOW 25
+ 
+ void CGisItemTrk::deriveSecondaryData()
+ {
+@@ -723,9 +724,9 @@
+             while(n>0)
+             {
+                 trkpt_t & trkpt2 = seg.pts[n];
+-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT))
++                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT) || (!trkpt2.time.isValid()))
+                 {
+                     n--;
+                     continue;
+                 }
+ 
+@@ -727,9 +728,9 @@
+                 {
+                     n--;
+                     continue;
+                 }
+ 
+-                if(trkpt.distance - trkpt2.distance >= 25)
++                if(trkpt.distance - trkpt2.distance >= WINDOW)
+                 {
+                     d1 = trkpt2.distance;
+                     e1 = trkpt2.ele;
+@@ -752,7 +753,7 @@
+                     continue;
+                 }
+ 
+-                if(trkpt2.distance - trkpt.distance >= 25)
++                if(trkpt2.distance - trkpt.distance >= WINDOW)
+                 {
+                     d2 = trkpt2.distance;
+                     e2 = trkpt2.ele;
+@@ -768,7 +769,8 @@
+ 
+             if((t2 - t1) > 0)
+             {
+-                trkpt.speed    = (d2 - d1) / (t2 - t1);
++                trkpt.speed         = (d2 - d1) / (t2 - t1);
++                trkpt.rateAscent    = (e2 - e1) / (t2 - t1);
+             }
+             else
+             {
+@@ -772,7 +774,8 @@
+             }
+             else
+             {
+-                trkpt.speed = NOFLOAT;
++                trkpt.speed         = NOFLOAT;
++                trkpt.rateAscent    = NOFLOAT;
+             }
+         }
+     }
+diff --git a/src/gis/trk/CGisItemTrk.h b/src/gis/trk/CGisItemTrk.h
+--- a/src/gis/trk/CGisItemTrk.h
++++ b/src/gis/trk/CGisItemTrk.h
+@@ -482,6 +482,8 @@
+             slope1          = NOFLOAT;
+             slope2          = NOFLOAT;
+             speed           = NOFLOAT;
++            rateAscent      = NOFLOAT;
++            rateDescent     = NOFLOAT;
+         }
+ 
+         enum flag_e
+@@ -513,6 +515,10 @@
+         qreal elapsedSeconds;
+         /// the seconds since the start of the track with moving speed
+         qreal elapsedSecondsMoving;
++
++        qreal rateAscent;
++
++        qreal rateDescent;
+     };
+ 
+     struct trkseg_t
+diff --git a/src/plot/CPlotSpeed.cpp b/src/plot/CPlotSpeed.cpp
+--- a/src/plot/CPlotSpeed.cpp
++++ b/src/plot/CPlotSpeed.cpp
+@@ -20,7 +20,8 @@
+ #include "plot/CPlotSpeed.h"
+ 
+ CPlotSpeed::CPlotSpeed(QWidget *parent)
+-    : IPlot(0, CPlotData::eAxisLinear, eModeNormal, parent)
++//    : IPlot(0, CPlotData::eAxisLinear, eModeNormal, parent)
++    : IPlot(0, CPlotData::eAxisTime, eModeNormal, parent)
+ {
+ }
+ 
+@@ -79,7 +80,7 @@
+ 
+             if(trkpt.speed != NOFLOAT)
+             {
+-                lineSpeed << QPointF(type == CPlotData::eAxisLinear ? trkpt.distance : (qreal)trkpt.time.toTime_t(), trkpt.speed * speedfactor);
++                lineSpeed << QPointF(type == CPlotData::eAxisLinear ? trkpt.distance : (qreal)trkpt.time.toTime_t(), trkpt.rateAscent * 3600/*trkpt.speed * speedfactor*/);
+             }
+         }
+     }
diff --git a/.hg/shelves/2015-02-22_12-03-51_parent_rev_750 b/.hg/shelves/2015-02-22_12-03-51_parent_rev_750
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/store/00changelog.d b/.hg/store/00changelog.d
new file mode 100644
index 0000000..c063362
Binary files /dev/null and b/.hg/store/00changelog.d differ
diff --git a/.hg/store/00changelog.i b/.hg/store/00changelog.i
new file mode 100644
index 0000000..ea93e47
Binary files /dev/null and b/.hg/store/00changelog.i differ
diff --git a/.hg/store/00manifest.d b/.hg/store/00manifest.d
new file mode 100644
index 0000000..6787ab0
Binary files /dev/null and b/.hg/store/00manifest.d differ
diff --git a/.hg/store/00manifest.i b/.hg/store/00manifest.i
new file mode 100644
index 0000000..cfd3bda
Binary files /dev/null and b/.hg/store/00manifest.i differ
diff --git a/.hg/store/data/3rdparty/_c_get_opt/_c_get_opt.cpp.i b/.hg/store/data/3rdparty/_c_get_opt/_c_get_opt.cpp.i
new file mode 100644
index 0000000..bcb9f21
Binary files /dev/null and b/.hg/store/data/3rdparty/_c_get_opt/_c_get_opt.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_c_get_opt/_c_get_opt.h.i b/.hg/store/data/3rdparty/_c_get_opt/_c_get_opt.h.i
new file mode 100644
index 0000000..68330f8
Binary files /dev/null and b/.hg/store/data/3rdparty/_c_get_opt/_c_get_opt.h.i differ
diff --git a/.hg/store/data/3rdparty/_c_get_opt/_c_make_lists.txt.i b/.hg/store/data/3rdparty/_c_get_opt/_c_make_lists.txt.i
new file mode 100644
index 0000000..2373e1b
Binary files /dev/null and b/.hg/store/data/3rdparty/_c_get_opt/_c_make_lists.txt.i differ
diff --git a/.hg/store/data/3rdparty/_c_get_opt/class_get_opt.html.i b/.hg/store/data/3rdparty/_c_get_opt/class_get_opt.html.i
new file mode 100644
index 0000000..fad685c
Binary files /dev/null and b/.hg/store/data/3rdparty/_c_get_opt/class_get_opt.html.i differ
diff --git a/.hg/store/data/3rdparty/_c_get_opt/getopt.pro.i b/.hg/store/data/3rdparty/_c_get_opt/getopt.pro.i
new file mode 100644
index 0000000..0466d04
Binary files /dev/null and b/.hg/store/data/3rdparty/_c_get_opt/getopt.pro.i differ
diff --git a/.hg/store/data/3rdparty/_c_get_opt/main.cpp.i b/.hg/store/data/3rdparty/_c_get_opt/main.cpp.i
new file mode 100644
index 0000000..aad6d9c
Binary files /dev/null and b/.hg/store/data/3rdparty/_c_get_opt/main.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/_c_main_window.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/_c_main_window.cpp.i
new file mode 100644
index 0000000..3e073f5
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/_c_main_window.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/_c_main_window.h.i b/.hg/store/data/3rdparty/_d_b_converter/_c_main_window.h.i
new file mode 100644
index 0000000..6f50f7b
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/_c_main_window.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/_c_make_lists.txt.i b/.hg/store/data/3rdparty/_d_b_converter/_c_make_lists.txt.i
new file mode 100644
index 0000000..787b6a0
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/_c_make_lists.txt.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/_c_qlgt_db.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/_c_qlgt_db.cpp.i
new file mode 100644
index 0000000..6b816f7
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/_c_qlgt_db.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/_c_qlgt_db.h.i b/.hg/store/data/3rdparty/_d_b_converter/_c_qlgt_db.h.i
new file mode 100644
index 0000000..d9f07f9
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/_c_qlgt_db.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/_c_qms_db.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/_c_qms_db.cpp.i
new file mode 100644
index 0000000..f45b70b
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/_c_qms_db.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/_c_qms_db.h.i b/.hg/store/data/3rdparty/_d_b_converter/_c_qms_db.h.i
new file mode 100644
index 0000000..1d7a944
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/_c_qms_db.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/_i_main_window.ui.i b/.hg/store/data/3rdparty/_d_b_converter/_i_main_window.ui.i
new file mode 100644
index 0000000..5a0196a
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/_i_main_window.ui.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/converter.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/converter.cpp.i
new file mode 100644
index 0000000..215dc69
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/converter.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/main.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/main.cpp.i
new file mode 100644
index 0000000..14e6f16
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/main.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlb.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlb.cpp.i
new file mode 100644
index 0000000..f28a95b
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlb.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlb.h.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlb.h.i
new file mode 100644
index 0000000..4efee01
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlb.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.cpp.i
new file mode 100644
index 0000000..fcbca91
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.h.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.h.i
new file mode 100644
index 0000000..f968b06
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_route.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_route.cpp.i
new file mode 100644
index 0000000..db4a54f
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_route.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_route.h.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_route.h.i
new file mode 100644
index 0000000..839aab0
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_route.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_track.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_track.cpp.i
new file mode 100644
index 0000000..b7ca089
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_track.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_track.h.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_track.h.i
new file mode 100644
index 0000000..12f8a2a
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_track.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.cpp.i
new file mode 100644
index 0000000..45b6666
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.h.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.h.i
new file mode 100644
index 0000000..0b9d261
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_item.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_item.cpp.i
new file mode 100644
index 0000000..7de9697
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_item.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_item.h.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_item.h.i
new file mode 100644
index 0000000..267d6f0
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_item.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_qlgt_overlay.cpp.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_qlgt_overlay.cpp.i
new file mode 100644
index 0000000..5fa5915
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_qlgt_overlay.cpp.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_qlgt_overlay.h.i b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_qlgt_overlay.h.i
new file mode 100644
index 0000000..8825813
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_qlgt_overlay.h.i differ
diff --git a/.hg/store/data/3rdparty/_d_b_converter/resources.qrc.i b/.hg/store/data/3rdparty/_d_b_converter/resources.qrc.i
new file mode 100644
index 0000000..dafd895
Binary files /dev/null and b/.hg/store/data/3rdparty/_d_b_converter/resources.qrc.i differ
diff --git a/.hg/store/data/_c_make_lists.txt.i b/.hg/store/data/_c_make_lists.txt.i
new file mode 100644
index 0000000..c225ad5
Binary files /dev/null and b/.hg/store/data/_c_make_lists.txt.i differ
diff --git a/.hg/store/data/_c_pack_config.cmake.i b/.hg/store/data/_c_pack_config.cmake.i
new file mode 100644
index 0000000..adeace2
Binary files /dev/null and b/.hg/store/data/_c_pack_config.cmake.i differ
diff --git a/.hg/store/data/_configure_checks.cmake.i b/.hg/store/data/_configure_checks.cmake.i
new file mode 100644
index 0000000..52e2288
Binary files /dev/null and b/.hg/store/data/_configure_checks.cmake.i differ
diff --git a/.hg/store/data/_doxyfile.i b/.hg/store/data/_doxyfile.i
new file mode 100644
index 0000000..efb7567
Binary files /dev/null and b/.hg/store/data/_doxyfile.i differ
diff --git a/.hg/store/data/_gpx_examples/_c_o_p_y_r_i_g_h_t.i b/.hg/store/data/_gpx_examples/_c_o_p_y_r_i_g_h_t.i
new file mode 100644
index 0000000..f423e9d
Binary files /dev/null and b/.hg/store/data/_gpx_examples/_c_o_p_y_r_i_g_h_t.i differ
diff --git a/.hg/store/data/_gpx_examples/basecamp.gpx.i b/.hg/store/data/_gpx_examples/basecamp.gpx.i
new file mode 100644
index 0000000..6cbae4b
Binary files /dev/null and b/.hg/store/data/_gpx_examples/basecamp.gpx.i differ
diff --git a/.hg/store/data/_gpx_examples/qlandkarte.gpx.i b/.hg/store/data/_gpx_examples/qlandkarte.gpx.i
new file mode 100644
index 0000000..e1105ac
Binary files /dev/null and b/.hg/store/data/_gpx_examples/qlandkarte.gpx.i differ
diff --git a/.hg/store/data/_l_i_c_e_n_s_e.i b/.hg/store/data/_l_i_c_e_n_s_e.i
new file mode 100644
index 0000000..b2dd24e
Binary files /dev/null and b/.hg/store/data/_l_i_c_e_n_s_e.i differ
diff --git a/.hg/store/data/_r_e_a_d_m_e.md.i b/.hg/store/data/_r_e_a_d_m_e.md.i
new file mode 100644
index 0000000..fa49cef
Binary files /dev/null and b/.hg/store/data/_r_e_a_d_m_e.md.i differ
diff --git a/.hg/store/data/call___uncrustify.cfg.i b/.hg/store/data/call___uncrustify.cfg.i
new file mode 100644
index 0000000..4f2e2e3
Binary files /dev/null and b/.hg/store/data/call___uncrustify.cfg.i differ
diff --git a/.hg/store/data/call___uncrustify.sh.i b/.hg/store/data/call___uncrustify.sh.i
new file mode 100644
index 0000000..b3a129c
Binary files /dev/null and b/.hg/store/data/call___uncrustify.sh.i differ
diff --git a/.hg/store/data/changelog.txt.i b/.hg/store/data/changelog.txt.i
new file mode 100644
index 0000000..04f8185
Binary files /dev/null and b/.hg/store/data/changelog.txt.i differ
diff --git a/.hg/store/data/cmake/_c_make_lists.txt.i b/.hg/store/data/cmake/_c_make_lists.txt.i
new file mode 100644
index 0000000..750bcca
Binary files /dev/null and b/.hg/store/data/cmake/_c_make_lists.txt.i differ
diff --git a/.hg/store/data/cmake/_modules/_c_make_lists.txt.i b/.hg/store/data/cmake/_modules/_c_make_lists.txt.i
new file mode 100644
index 0000000..64b3a96
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_c_make_lists.txt.i differ
diff --git a/.hg/store/data/cmake/_modules/_c_o_p_y_i_n_g-_c_m_a_k_e-_s_c_r_i_p_t_s.i b/.hg/store/data/cmake/_modules/_c_o_p_y_i_n_g-_c_m_a_k_e-_s_c_r_i_p_t_s.i
new file mode 100644
index 0000000..45ce5c0
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_c_o_p_y_i_n_g-_c_m_a_k_e-_s_c_r_i_p_t_s.i differ
diff --git a/.hg/store/data/cmake/_modules/_define_c_make_defaults.cmake.i b/.hg/store/data/cmake/_modules/_define_c_make_defaults.cmake.i
new file mode 100644
index 0000000..9253298
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_define_c_make_defaults.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_define_compiler_flags.cmake.i b/.hg/store/data/cmake/_modules/_define_compiler_flags.cmake.i
new file mode 100644
index 0000000..f374e44
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_define_compiler_flags.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_define_installation_paths.cmake.i b/.hg/store/data/cmake/_modules/_define_installation_paths.cmake.i
new file mode 100644
index 0000000..69a9c89
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_define_installation_paths.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_d_m_t_x.cmake.i b/.hg/store/data/cmake/_modules/_find_d_m_t_x.cmake.i
new file mode 100644
index 0000000..ee64018
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_d_m_t_x.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_e_x_i_f.cmake.i b/.hg/store/data/cmake/_modules/_find_e_x_i_f.cmake.i
new file mode 100644
index 0000000..c3ef56b
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_e_x_i_f.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_g_d_a_l.cmake.i b/.hg/store/data/cmake/_modules/_find_g_d_a_l.cmake.i
new file mode 100644
index 0000000..7f2ad0b
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_g_d_a_l.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_g_p_s_d.cmake.i b/.hg/store/data/cmake/_modules/_find_g_p_s_d.cmake.i
new file mode 100644
index 0000000..dd497d4
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_g_p_s_d.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_j_p_e_g.cmake.i b/.hg/store/data/cmake/_modules/_find_j_p_e_g.cmake.i
new file mode 100644
index 0000000..c8a913b
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_j_p_e_g.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_p_r_o_j.cmake.i b/.hg/store/data/cmake/_modules/_find_p_r_o_j.cmake.i
new file mode 100644
index 0000000..5f7ee5e
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_p_r_o_j.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_qext_serial_port.cmake.i b/.hg/store/data/cmake/_modules/_find_qext_serial_port.cmake.i
new file mode 100644
index 0000000..983f941
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_qext_serial_port.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_qt_soap.cmake.i b/.hg/store/data/cmake/_modules/_find_qt_soap.cmake.i
new file mode 100644
index 0000000..1243e8f
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_qt_soap.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_find_xerces_c.cmake.i b/.hg/store/data/cmake/_modules/_find_xerces_c.cmake.i
new file mode 100644
index 0000000..578a3db
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_find_xerces_c.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_macro_copy_file.cmake.i b/.hg/store/data/cmake/_modules/_macro_copy_file.cmake.i
new file mode 100644
index 0000000..52cc04f
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_macro_copy_file.cmake.i differ
diff --git a/.hg/store/data/cmake/_modules/_macro_ensure_out_of_source_build.cmake.i b/.hg/store/data/cmake/_modules/_macro_ensure_out_of_source_build.cmake.i
new file mode 100644
index 0000000..e59be5c
Binary files /dev/null and b/.hg/store/data/cmake/_modules/_macro_ensure_out_of_source_build.cmake.i differ
diff --git a/.hg/store/data/cmake__uninstall.cmake.in.i b/.hg/store/data/cmake__uninstall.cmake.in.i
new file mode 100644
index 0000000..157ced9
Binary files /dev/null and b/.hg/store/data/cmake__uninstall.cmake.in.i differ
diff --git a/.hg/store/data/config.h.cmake.i b/.hg/store/data/config.h.cmake.i
new file mode 100644
index 0000000..2cdb2f3
Binary files /dev/null and b/.hg/store/data/config.h.cmake.i differ
diff --git a/.hg/store/data/features.txt.i b/.hg/store/data/features.txt.i
new file mode 100644
index 0000000..37c1356
Binary files /dev/null and b/.hg/store/data/features.txt.i differ
diff --git a/.hg/store/data/maproom.1.i b/.hg/store/data/maproom.1.i
new file mode 100644
index 0000000..d57fb6d
Binary files /dev/null and b/.hg/store/data/maproom.1.i differ
diff --git a/.hg/store/data/maproom.desktop.i b/.hg/store/data/maproom.desktop.i
new file mode 100644
index 0000000..81d8846
Binary files /dev/null and b/.hg/store/data/maproom.desktop.i differ
diff --git a/.hg/store/data/mkfile.i b/.hg/store/data/mkfile.i
new file mode 100644
index 0000000..73cae7b
Binary files /dev/null and b/.hg/store/data/mkfile.i differ
diff --git a/.hg/store/data/nsi/3rdparty.txt.i b/.hg/store/data/nsi/3rdparty.txt.i
new file mode 100644
index 0000000..f73d690
Binary files /dev/null and b/.hg/store/data/nsi/3rdparty.txt.i differ
diff --git a/.hg/store/data/nsi/_help.ico.i b/.hg/store/data/nsi/_help.ico.i
new file mode 100644
index 0000000..5aeac8f
Binary files /dev/null and b/.hg/store/data/nsi/_help.ico.i differ
diff --git a/.hg/store/data/nsi/_m_u_i___h_e_a_d_e_r_i_m_a_g_e.bmp.i b/.hg/store/data/nsi/_m_u_i___h_e_a_d_e_r_i_m_a_g_e.bmp.i
new file mode 100644
index 0000000..8bf2d32
Binary files /dev/null and b/.hg/store/data/nsi/_m_u_i___h_e_a_d_e_r_i_m_a_g_e.bmp.i differ
diff --git a/.hg/store/data/nsi/_m_u_i___w_e_l_c_o_m_e_f_i_n_i_s_h_p_a_g_e.bmp.i b/.hg/store/data/nsi/_m_u_i___w_e_l_c_o_m_e_f_i_n_i_s_h_p_a_g_e.bmp.i
new file mode 100644
index 0000000..c73bf00
Binary files /dev/null and b/.hg/store/data/nsi/_m_u_i___w_e_l_c_o_m_e_f_i_n_i_s_h_p_a_g_e.bmp.i differ
diff --git a/.hg/store/data/nsi/_q_map_shack.ico.i b/.hg/store/data/nsi/_q_map_shack.ico.i
new file mode 100644
index 0000000..9c2330a
Binary files /dev/null and b/.hg/store/data/nsi/_q_map_shack.ico.i differ
diff --git a/.hg/store/data/nsi/_q_map_shack___installer.nsi.i b/.hg/store/data/nsi/_q_map_shack___installer.nsi.i
new file mode 100644
index 0000000..1fdff6d
Binary files /dev/null and b/.hg/store/data/nsi/_q_map_shack___installer.nsi.i differ
diff --git a/.hg/store/data/nsi/_q_map_shack___installer32.nsi.i b/.hg/store/data/nsi/_q_map_shack___installer32.nsi.i
new file mode 100644
index 0000000..f92645e
Binary files /dev/null and b/.hg/store/data/nsi/_q_map_shack___installer32.nsi.i differ
diff --git a/.hg/store/data/nsi/copyfiles.bat.i b/.hg/store/data/nsi/copyfiles.bat.i
new file mode 100644
index 0000000..c859273
Binary files /dev/null and b/.hg/store/data/nsi/copyfiles.bat.i differ
diff --git a/.hg/store/data/nsi/copyfiles32.bat.i b/.hg/store/data/nsi/copyfiles32.bat.i
new file mode 100644
index 0000000..cb2b404
Binary files /dev/null and b/.hg/store/data/nsi/copyfiles32.bat.i differ
diff --git a/.hg/store/data/nsi/gdalicon.ico.i b/.hg/store/data/nsi/gdalicon.ico.i
new file mode 100644
index 0000000..40e0f22
Binary files /dev/null and b/.hg/store/data/nsi/gdalicon.ico.i differ
diff --git a/.hg/store/data/nsi/kfm__home.ico.i b/.hg/store/data/nsi/kfm__home.ico.i
new file mode 100644
index 0000000..dc06abf
Binary files /dev/null and b/.hg/store/data/nsi/kfm__home.ico.i differ
diff --git a/.hg/store/data/nsi/konsole.ico.i b/.hg/store/data/nsi/konsole.ico.i
new file mode 100644
index 0000000..573fa8c
Binary files /dev/null and b/.hg/store/data/nsi/konsole.ico.i differ
diff --git a/.hg/store/data/qmapshack.1.i b/.hg/store/data/qmapshack.1.i
new file mode 100644
index 0000000..f719909
Binary files /dev/null and b/.hg/store/data/qmapshack.1.i differ
diff --git a/.hg/store/data/qmapshack.desktop.i b/.hg/store/data/qmapshack.desktop.i
new file mode 100644
index 0000000..c24bb2e
Binary files /dev/null and b/.hg/store/data/qmapshack.desktop.i differ
diff --git a/.hg/store/data/src/_c_about.cpp.i b/.hg/store/data/src/_c_about.cpp.i
new file mode 100644
index 0000000..7182cc7
Binary files /dev/null and b/.hg/store/data/src/_c_about.cpp.i differ
diff --git a/.hg/store/data/src/_c_about.h.i b/.hg/store/data/src/_c_about.h.i
new file mode 100644
index 0000000..43602a2
Binary files /dev/null and b/.hg/store/data/src/_c_about.h.i differ
diff --git a/.hg/store/data/src/_c_app_opts.h.i b/.hg/store/data/src/_c_app_opts.h.i
new file mode 100644
index 0000000..b2f7542
Binary files /dev/null and b/.hg/store/data/src/_c_app_opts.h.i differ
diff --git a/.hg/store/data/src/_c_canvas.cpp.i b/.hg/store/data/src/_c_canvas.cpp.i
new file mode 100644
index 0000000..588b714
Binary files /dev/null and b/.hg/store/data/src/_c_canvas.cpp.i differ
diff --git a/.hg/store/data/src/_c_canvas.h.i b/.hg/store/data/src/_c_canvas.h.i
new file mode 100644
index 0000000..c7fdf02
Binary files /dev/null and b/.hg/store/data/src/_c_canvas.h.i differ
diff --git a/.hg/store/data/src/_c_file_ext.h.i b/.hg/store/data/src/_c_file_ext.h.i
new file mode 100644
index 0000000..1e93c8d
Binary files /dev/null and b/.hg/store/data/src/_c_file_ext.h.i differ
diff --git a/.hg/store/data/src/_c_main_window.cpp.i b/.hg/store/data/src/_c_main_window.cpp.i
new file mode 100644
index 0000000..a8ea5dd
Binary files /dev/null and b/.hg/store/data/src/_c_main_window.cpp.i differ
diff --git a/.hg/store/data/src/_c_main_window.h.i b/.hg/store/data/src/_c_main_window.h.i
new file mode 100644
index 0000000..7f949ad
Binary files /dev/null and b/.hg/store/data/src/_c_main_window.h.i differ
diff --git a/.hg/store/data/src/_c_make_lists.txt.i b/.hg/store/data/src/_c_make_lists.txt.i
new file mode 100644
index 0000000..84a5513
Binary files /dev/null and b/.hg/store/data/src/_c_make_lists.txt.i differ
diff --git a/.hg/store/data/src/_c_map_d_b.cpp.i b/.hg/store/data/src/_c_map_d_b.cpp.i
new file mode 100644
index 0000000..56a1593
Binary files /dev/null and b/.hg/store/data/src/_c_map_d_b.cpp.i differ
diff --git a/.hg/store/data/src/_c_map_d_b.h.i b/.hg/store/data/src/_c_map_d_b.h.i
new file mode 100644
index 0000000..b4e79a0
Binary files /dev/null and b/.hg/store/data/src/_c_map_d_b.h.i differ
diff --git a/.hg/store/data/src/_c_settings.h.i b/.hg/store/data/src/_c_settings.h.i
new file mode 100644
index 0000000..7a974f0
Binary files /dev/null and b/.hg/store/data/src/_c_settings.h.i differ
diff --git a/.hg/store/data/src/_geo_math.cpp.i b/.hg/store/data/src/_geo_math.cpp.i
new file mode 100644
index 0000000..d51b3c6
Binary files /dev/null and b/.hg/store/data/src/_geo_math.cpp.i differ
diff --git a/.hg/store/data/src/_geo_math.h.i b/.hg/store/data/src/_geo_math.h.i
new file mode 100644
index 0000000..b5b9552
Binary files /dev/null and b/.hg/store/data/src/_geo_math.h.i differ
diff --git a/.hg/store/data/src/_i_about.ui.i b/.hg/store/data/src/_i_about.ui.i
new file mode 100644
index 0000000..4070802
Binary files /dev/null and b/.hg/store/data/src/_i_about.ui.i differ
diff --git a/.hg/store/data/src/_i_d_b.cpp.i b/.hg/store/data/src/_i_d_b.cpp.i
new file mode 100644
index 0000000..5f78b96
Binary files /dev/null and b/.hg/store/data/src/_i_d_b.cpp.i differ
diff --git a/.hg/store/data/src/_i_d_b.h.i b/.hg/store/data/src/_i_d_b.h.i
new file mode 100644
index 0000000..d60e172
Binary files /dev/null and b/.hg/store/data/src/_i_d_b.h.i differ
diff --git a/.hg/store/data/src/_i_draw_context.cpp.i b/.hg/store/data/src/_i_draw_context.cpp.i
new file mode 100644
index 0000000..a48e8f1
Binary files /dev/null and b/.hg/store/data/src/_i_draw_context.cpp.i differ
diff --git a/.hg/store/data/src/_i_draw_context.h.i b/.hg/store/data/src/_i_draw_context.h.i
new file mode 100644
index 0000000..a6f5bd1
Binary files /dev/null and b/.hg/store/data/src/_i_draw_context.h.i differ
diff --git a/.hg/store/data/src/_i_draw_object.cpp.i b/.hg/store/data/src/_i_draw_object.cpp.i
new file mode 100644
index 0000000..d0a79c0
Binary files /dev/null and b/.hg/store/data/src/_i_draw_object.cpp.i differ
diff --git a/.hg/store/data/src/_i_draw_object.h.i b/.hg/store/data/src/_i_draw_object.h.i
new file mode 100644
index 0000000..7323d25
Binary files /dev/null and b/.hg/store/data/src/_i_draw_object.h.i differ
diff --git a/.hg/store/data/src/_i_main_window.ui.i b/.hg/store/data/src/_i_main_window.ui.i
new file mode 100644
index 0000000..e3df59a
Binary files /dev/null and b/.hg/store/data/src/_i_main_window.ui.i differ
diff --git a/.hg/store/data/src/_platform.h.i b/.hg/store/data/src/_platform.h.i
new file mode 100644
index 0000000..d207483
Binary files /dev/null and b/.hg/store/data/src/_platform.h.i differ
diff --git a/.hg/store/data/src/animation/_c_o_p_y_r_i_g_h_t.i b/.hg/store/data/src/animation/_c_o_p_y_r_i_g_h_t.i
new file mode 100644
index 0000000..0a31899
Binary files /dev/null and b/.hg/store/data/src/animation/_c_o_p_y_r_i_g_h_t.i differ
diff --git a/.hg/store/data/src/animation/_r_e_a_d_m_e.i b/.hg/store/data/src/animation/_r_e_a_d_m_e.i
new file mode 100644
index 0000000..58f4308
Binary files /dev/null and b/.hg/store/data/src/animation/_r_e_a_d_m_e.i differ
diff --git a/.hg/store/data/src/animation/_w_t_f_p_l-2.i b/.hg/store/data/src/animation/_w_t_f_p_l-2.i
new file mode 100644
index 0000000..391c000
Binary files /dev/null and b/.hg/store/data/src/animation/_w_t_f_p_l-2.i differ
diff --git a/.hg/store/data/src/animation/loader.gif.i b/.hg/store/data/src/animation/loader.gif.i
new file mode 100644
index 0000000..6f31db7
Binary files /dev/null and b/.hg/store/data/src/animation/loader.gif.i differ
diff --git a/.hg/store/data/src/animation/loader2.gif.i b/.hg/store/data/src/animation/loader2.gif.i
new file mode 100644
index 0000000..87a5677
Binary files /dev/null and b/.hg/store/data/src/animation/loader2.gif.i differ
diff --git a/.hg/store/data/src/canvas/_c_canvas.cpp.i b/.hg/store/data/src/canvas/_c_canvas.cpp.i
new file mode 100644
index 0000000..2ac6509
Binary files /dev/null and b/.hg/store/data/src/canvas/_c_canvas.cpp.i differ
diff --git a/.hg/store/data/src/canvas/_c_canvas.h.i b/.hg/store/data/src/canvas/_c_canvas.h.i
new file mode 100644
index 0000000..9916b12
Binary files /dev/null and b/.hg/store/data/src/canvas/_c_canvas.h.i differ
diff --git a/.hg/store/data/src/canvas/_c_canvas_setup.cpp.i b/.hg/store/data/src/canvas/_c_canvas_setup.cpp.i
new file mode 100644
index 0000000..631877c
Binary files /dev/null and b/.hg/store/data/src/canvas/_c_canvas_setup.cpp.i differ
diff --git a/.hg/store/data/src/canvas/_c_canvas_setup.h.i b/.hg/store/data/src/canvas/_c_canvas_setup.h.i
new file mode 100644
index 0000000..17f9afb
Binary files /dev/null and b/.hg/store/data/src/canvas/_c_canvas_setup.h.i differ
diff --git a/.hg/store/data/src/canvas/_i_canvas_setup.ui.i b/.hg/store/data/src/canvas/_i_canvas_setup.ui.i
new file mode 100644
index 0000000..9fb418f
Binary files /dev/null and b/.hg/store/data/src/canvas/_i_canvas_setup.ui.i differ
diff --git a/.hg/store/data/src/canvas/_i_draw_context.cpp.i b/.hg/store/data/src/canvas/_i_draw_context.cpp.i
new file mode 100644
index 0000000..17452c6
Binary files /dev/null and b/.hg/store/data/src/canvas/_i_draw_context.cpp.i differ
diff --git a/.hg/store/data/src/canvas/_i_draw_context.h.i b/.hg/store/data/src/canvas/_i_draw_context.h.i
new file mode 100644
index 0000000..6974842
Binary files /dev/null and b/.hg/store/data/src/canvas/_i_draw_context.h.i differ
diff --git a/.hg/store/data/src/canvas/_i_draw_object.cpp.i b/.hg/store/data/src/canvas/_i_draw_object.cpp.i
new file mode 100644
index 0000000..8783c7c
Binary files /dev/null and b/.hg/store/data/src/canvas/_i_draw_object.cpp.i differ
diff --git a/.hg/store/data/src/canvas/_i_draw_object.h.i b/.hg/store/data/src/canvas/_i_draw_object.h.i
new file mode 100644
index 0000000..c606d91
Binary files /dev/null and b/.hg/store/data/src/canvas/_i_draw_object.h.i differ
diff --git a/.hg/store/data/src/cursors/_c_o_p_y_r_i_g_h_t.i b/.hg/store/data/src/cursors/_c_o_p_y_r_i_g_h_t.i
new file mode 100644
index 0000000..0229610
Binary files /dev/null and b/.hg/store/data/src/cursors/_c_o_p_y_r_i_g_h_t.i differ
diff --git a/.hg/store/data/src/cursors/cursor_add.png.i b/.hg/store/data/src/cursors/cursor_add.png.i
new file mode 100644
index 0000000..7817f22
Binary files /dev/null and b/.hg/store/data/src/cursors/cursor_add.png.i differ
diff --git a/.hg/store/data/src/cursors/cursor_arrow.png.i b/.hg/store/data/src/cursors/cursor_arrow.png.i
new file mode 100644
index 0000000..f36ab72
Binary files /dev/null and b/.hg/store/data/src/cursors/cursor_arrow.png.i differ
diff --git a/.hg/store/data/src/cursors/cursor_move.png.i b/.hg/store/data/src/cursors/cursor_move.png.i
new file mode 100644
index 0000000..cd60d12
Binary files /dev/null and b/.hg/store/data/src/cursors/cursor_move.png.i differ
diff --git a/.hg/store/data/src/cursors/cursor_move_area.png.i b/.hg/store/data/src/cursors/cursor_move_area.png.i
new file mode 100644
index 0000000..5853e59
Binary files /dev/null and b/.hg/store/data/src/cursors/cursor_move_area.png.i differ
diff --git a/.hg/store/data/src/cursors/cursor_move_line.png.i b/.hg/store/data/src/cursors/cursor_move_line.png.i
new file mode 100644
index 0000000..95585e7
Binary files /dev/null and b/.hg/store/data/src/cursors/cursor_move_line.png.i differ
diff --git a/.hg/store/data/src/cursors/cursor_move_map.png.i b/.hg/store/data/src/cursors/cursor_move_map.png.i
new file mode 100644
index 0000000..eb114fe
Binary files /dev/null and b/.hg/store/data/src/cursors/cursor_move_map.png.i differ
diff --git a/.hg/store/data/src/cursors/cursor_move_wpt.png.i b/.hg/store/data/src/cursors/cursor_move_wpt.png.i
new file mode 100644
index 0000000..ddedb7f
Binary files /dev/null and b/.hg/store/data/src/cursors/cursor_move_wpt.png.i differ
diff --git a/.hg/store/data/src/cursors/cursor_select_range.png.i b/.hg/store/data/src/cursors/cursor_select_range.png.i
new file mode 100644
index 0000000..72f5056
Binary files /dev/null and b/.hg/store/data/src/cursors/cursor_select_range.png.i differ
diff --git a/.hg/store/data/src/cursors/wpt_highlight.png.i b/.hg/store/data/src/cursors/wpt_highlight.png.i
new file mode 100644
index 0000000..d06a53c
Binary files /dev/null and b/.hg/store/data/src/cursors/wpt_highlight.png.i differ
diff --git a/.hg/store/data/src/cursors/wpt_highlight.svg.i b/.hg/store/data/src/cursors/wpt_highlight.svg.i
new file mode 100644
index 0000000..df950f4
Binary files /dev/null and b/.hg/store/data/src/cursors/wpt_highlight.svg.i differ
diff --git a/.hg/store/data/src/dem/_c_dem.cpp.i b/.hg/store/data/src/dem/_c_dem.cpp.i
new file mode 100644
index 0000000..50a391a
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem.cpp.i differ
diff --git a/.hg/store/data/src/dem/_c_dem.h.i b/.hg/store/data/src/dem/_c_dem.h.i
new file mode 100644
index 0000000..fe9569f
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem.h.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_draw.cpp.i b/.hg/store/data/src/dem/_c_dem_draw.cpp.i
new file mode 100644
index 0000000..f0966b7
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_draw.cpp.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_draw.h.i b/.hg/store/data/src/dem/_c_dem_draw.h.i
new file mode 100644
index 0000000..5425692
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_draw.h.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_item.cpp.i b/.hg/store/data/src/dem/_c_dem_item.cpp.i
new file mode 100644
index 0000000..6f23a75
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_item.cpp.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_item.h.i b/.hg/store/data/src/dem/_c_dem_item.h.i
new file mode 100644
index 0000000..c267641
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_item.h.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_list.cpp.i b/.hg/store/data/src/dem/_c_dem_list.cpp.i
new file mode 100644
index 0000000..bfa96d5
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_list.cpp.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_list.h.i b/.hg/store/data/src/dem/_c_dem_list.h.i
new file mode 100644
index 0000000..a6419bd
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_list.h.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_path_setup.cpp.i b/.hg/store/data/src/dem/_c_dem_path_setup.cpp.i
new file mode 100644
index 0000000..4a7e170
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_path_setup.cpp.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_path_setup.h.i b/.hg/store/data/src/dem/_c_dem_path_setup.h.i
new file mode 100644
index 0000000..ceee914
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_path_setup.h.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_prop_setup.cpp.i b/.hg/store/data/src/dem/_c_dem_prop_setup.cpp.i
new file mode 100644
index 0000000..0cb52b0
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_prop_setup.cpp.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_prop_setup.h.i b/.hg/store/data/src/dem/_c_dem_prop_setup.h.i
new file mode 100644
index 0000000..96df144
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_prop_setup.h.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_v_r_t.cpp.i b/.hg/store/data/src/dem/_c_dem_v_r_t.cpp.i
new file mode 100644
index 0000000..3b38f06
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_v_r_t.cpp.i differ
diff --git a/.hg/store/data/src/dem/_c_dem_v_r_t.h.i b/.hg/store/data/src/dem/_c_dem_v_r_t.h.i
new file mode 100644
index 0000000..c715a25
Binary files /dev/null and b/.hg/store/data/src/dem/_c_dem_v_r_t.h.i differ
diff --git a/.hg/store/data/src/dem/_i_dem.cpp.i b/.hg/store/data/src/dem/_i_dem.cpp.i
new file mode 100644
index 0000000..078a3a2
Binary files /dev/null and b/.hg/store/data/src/dem/_i_dem.cpp.i differ
diff --git a/.hg/store/data/src/dem/_i_dem.h.i b/.hg/store/data/src/dem/_i_dem.h.i
new file mode 100644
index 0000000..10212c0
Binary files /dev/null and b/.hg/store/data/src/dem/_i_dem.h.i differ
diff --git a/.hg/store/data/src/dem/_i_dem_list.ui.i b/.hg/store/data/src/dem/_i_dem_list.ui.i
new file mode 100644
index 0000000..857ff93
Binary files /dev/null and b/.hg/store/data/src/dem/_i_dem_list.ui.i differ
diff --git a/.hg/store/data/src/dem/_i_dem_path_setup.ui.i b/.hg/store/data/src/dem/_i_dem_path_setup.ui.i
new file mode 100644
index 0000000..750c4e0
Binary files /dev/null and b/.hg/store/data/src/dem/_i_dem_path_setup.ui.i differ
diff --git a/.hg/store/data/src/dem/_i_dem_prop.cpp.i b/.hg/store/data/src/dem/_i_dem_prop.cpp.i
new file mode 100644
index 0000000..fe6b56c
Binary files /dev/null and b/.hg/store/data/src/dem/_i_dem_prop.cpp.i differ
diff --git a/.hg/store/data/src/dem/_i_dem_prop.h.i b/.hg/store/data/src/dem/_i_dem_prop.h.i
new file mode 100644
index 0000000..bd7b31e
Binary files /dev/null and b/.hg/store/data/src/dem/_i_dem_prop.h.i differ
diff --git a/.hg/store/data/src/dem/_i_dem_prop_setup.ui.i b/.hg/store/data/src/dem/_i_dem_prop_setup.ui.i
new file mode 100644
index 0000000..eb1b992
Binary files /dev/null and b/.hg/store/data/src/dem/_i_dem_prop_setup.ui.i differ
diff --git a/.hg/store/data/src/device/_c_device_garmin.cpp.i b/.hg/store/data/src/device/_c_device_garmin.cpp.i
new file mode 100644
index 0000000..6e75966
Binary files /dev/null and b/.hg/store/data/src/device/_c_device_garmin.cpp.i differ
diff --git a/.hg/store/data/src/device/_c_device_garmin.h.i b/.hg/store/data/src/device/_c_device_garmin.h.i
new file mode 100644
index 0000000..d2a163b
Binary files /dev/null and b/.hg/store/data/src/device/_c_device_garmin.h.i differ
diff --git a/.hg/store/data/src/device/_c_device_two_nav.cpp.i b/.hg/store/data/src/device/_c_device_two_nav.cpp.i
new file mode 100644
index 0000000..f785b2e
Binary files /dev/null and b/.hg/store/data/src/device/_c_device_two_nav.cpp.i differ
diff --git a/.hg/store/data/src/device/_c_device_two_nav.h.i b/.hg/store/data/src/device/_c_device_two_nav.h.i
new file mode 100644
index 0000000..38a873f
Binary files /dev/null and b/.hg/store/data/src/device/_c_device_two_nav.h.i differ
diff --git a/.hg/store/data/src/device/_c_device_watcher_linux.cpp.i b/.hg/store/data/src/device/_c_device_watcher_linux.cpp.i
new file mode 100644
index 0000000..007ef9e
Binary files /dev/null and b/.hg/store/data/src/device/_c_device_watcher_linux.cpp.i differ
diff --git a/.hg/store/data/src/device/_c_device_watcher_linux.h.i b/.hg/store/data/src/device/_c_device_watcher_linux.h.i
new file mode 100644
index 0000000..f780c7e
Binary files /dev/null and b/.hg/store/data/src/device/_c_device_watcher_linux.h.i differ
diff --git a/.hg/store/data/src/device/_c_device_watcher_windows.cpp.i b/.hg/store/data/src/device/_c_device_watcher_windows.cpp.i
new file mode 100644
index 0000000..c84211f
Binary files /dev/null and b/.hg/store/data/src/device/_c_device_watcher_windows.cpp.i differ
diff --git a/.hg/store/data/src/device/_c_device_watcher_windows.h.i b/.hg/store/data/src/device/_c_device_watcher_windows.h.i
new file mode 100644
index 0000000..524182b
Binary files /dev/null and b/.hg/store/data/src/device/_c_device_watcher_windows.h.i differ
diff --git a/.hg/store/data/src/device/_i_device.cpp.i b/.hg/store/data/src/device/_i_device.cpp.i
new file mode 100644
index 0000000..91aa34c
Binary files /dev/null and b/.hg/store/data/src/device/_i_device.cpp.i differ
diff --git a/.hg/store/data/src/device/_i_device.h.i b/.hg/store/data/src/device/_i_device.h.i
new file mode 100644
index 0000000..bb49fbb
Binary files /dev/null and b/.hg/store/data/src/device/_i_device.h.i differ
diff --git a/.hg/store/data/src/device/_i_device_watcher.cpp.i b/.hg/store/data/src/device/_i_device_watcher.cpp.i
new file mode 100644
index 0000000..b1f1c88
Binary files /dev/null and b/.hg/store/data/src/device/_i_device_watcher.cpp.i differ
diff --git a/.hg/store/data/src/device/_i_device_watcher.h.i b/.hg/store/data/src/device/_i_device_watcher.h.i
new file mode 100644
index 0000000..fe52601
Binary files /dev/null and b/.hg/store/data/src/device/_i_device_watcher.h.i differ
diff --git a/.hg/store/data/src/gis-search/_c_gis_search_widget.cpp.i b/.hg/store/data/src/gis-search/_c_gis_search_widget.cpp.i
new file mode 100644
index 0000000..b576a02
Binary files /dev/null and b/.hg/store/data/src/gis-search/_c_gis_search_widget.cpp.i differ
diff --git a/.hg/store/data/src/gis-search/_c_gis_search_widget.h.i b/.hg/store/data/src/gis-search/_c_gis_search_widget.h.i
new file mode 100644
index 0000000..83dbf68
Binary files /dev/null and b/.hg/store/data/src/gis-search/_c_gis_search_widget.h.i differ
diff --git a/.hg/store/data/src/gis-search/_c_search_google.cpp.i b/.hg/store/data/src/gis-search/_c_search_google.cpp.i
new file mode 100644
index 0000000..ac6b35f
Binary files /dev/null and b/.hg/store/data/src/gis-search/_c_search_google.cpp.i differ
diff --git a/.hg/store/data/src/gis-search/_c_search_google.h.i b/.hg/store/data/src/gis-search/_c_search_google.h.i
new file mode 100644
index 0000000..d55ae36
Binary files /dev/null and b/.hg/store/data/src/gis-search/_c_search_google.h.i differ
diff --git a/.hg/store/data/src/gis-search/_i_gis_search.cpp.i b/.hg/store/data/src/gis-search/_i_gis_search.cpp.i
new file mode 100644
index 0000000..7acc551
Binary files /dev/null and b/.hg/store/data/src/gis-search/_i_gis_search.cpp.i differ
diff --git a/.hg/store/data/src/gis-search/_i_gis_search.h.i b/.hg/store/data/src/gis-search/_i_gis_search.h.i
new file mode 100644
index 0000000..41d1510
Binary files /dev/null and b/.hg/store/data/src/gis-search/_i_gis_search.h.i differ
diff --git a/.hg/store/data/src/gis-search/_i_gis_search_widget.ui.i b/.hg/store/data/src/gis-search/_i_gis_search_widget.ui.i
new file mode 100644
index 0000000..5232268
Binary files /dev/null and b/.hg/store/data/src/gis-search/_i_gis_search_widget.ui.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_draw.cpp.i b/.hg/store/data/src/gis/_c_gis_draw.cpp.i
new file mode 100644
index 0000000..5215a43
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_draw.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_draw.h.i b/.hg/store/data/src/gis/_c_gis_draw.h.i
new file mode 100644
index 0000000..19d9fab
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_draw.h.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_item_rte.cpp.i b/.hg/store/data/src/gis/_c_gis_item_rte.cpp.i
new file mode 100644
index 0000000..7e36d14
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_item_rte.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_item_rte.h.i b/.hg/store/data/src/gis/_c_gis_item_rte.h.i
new file mode 100644
index 0000000..cfc2e13
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_item_rte.h.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_item_trk.cpp.i b/.hg/store/data/src/gis/_c_gis_item_trk.cpp.i
new file mode 100644
index 0000000..95a1930
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_item_trk.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_item_trk.h.i b/.hg/store/data/src/gis/_c_gis_item_trk.h.i
new file mode 100644
index 0000000..3fb5788
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_item_trk.h.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_item_wpt.cpp.i b/.hg/store/data/src/gis/_c_gis_item_wpt.cpp.i
new file mode 100644
index 0000000..a0ed06b
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_item_wpt.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_item_wpt.h.i b/.hg/store/data/src/gis/_c_gis_item_wpt.h.i
new file mode 100644
index 0000000..7d64559
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_item_wpt.h.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_list_d_b.cpp.i b/.hg/store/data/src/gis/_c_gis_list_d_b.cpp.i
new file mode 100644
index 0000000..734b993
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_list_d_b.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_list_d_b.h.i b/.hg/store/data/src/gis/_c_gis_list_d_b.h.i
new file mode 100644
index 0000000..c3e8685
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_list_d_b.h.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_list_wks.cpp.i b/.hg/store/data/src/gis/_c_gis_list_wks.cpp.i
new file mode 100644
index 0000000..ae09b1e
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_list_wks.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_list_wks.h.i b/.hg/store/data/src/gis/_c_gis_list_wks.h.i
new file mode 100644
index 0000000..087e0f4
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_list_wks.h.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_project.cpp.i b/.hg/store/data/src/gis/_c_gis_project.cpp.i
new file mode 100644
index 0000000..62c2963
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_project.h.i b/.hg/store/data/src/gis/_c_gis_project.h.i
new file mode 100644
index 0000000..7bfa18f
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_project.h.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_serialization.cpp.i b/.hg/store/data/src/gis/_c_gis_serialization.cpp.i
new file mode 100644
index 0000000..c90717e
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_serialization.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_serialization.h.i b/.hg/store/data/src/gis/_c_gis_serialization.h.i
new file mode 100644
index 0000000..3e70f76
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_serialization.h.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_widget.cpp.i b/.hg/store/data/src/gis/_c_gis_widget.cpp.i
new file mode 100644
index 0000000..9f0f1e9
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_widget.cpp.i differ
diff --git a/.hg/store/data/src/gis/_c_gis_widget.h.i b/.hg/store/data/src/gis/_c_gis_widget.h.i
new file mode 100644
index 0000000..6a7b102
Binary files /dev/null and b/.hg/store/data/src/gis/_c_gis_widget.h.i differ
diff --git a/.hg/store/data/src/gis/_i_gis_item.cpp.i b/.hg/store/data/src/gis/_i_gis_item.cpp.i
new file mode 100644
index 0000000..ec50197
Binary files /dev/null and b/.hg/store/data/src/gis/_i_gis_item.cpp.i differ
diff --git a/.hg/store/data/src/gis/_i_gis_item.h.i b/.hg/store/data/src/gis/_i_gis_item.h.i
new file mode 100644
index 0000000..97ae607
Binary files /dev/null and b/.hg/store/data/src/gis/_i_gis_item.h.i differ
diff --git a/.hg/store/data/src/gis/_i_gis_line.cpp.i b/.hg/store/data/src/gis/_i_gis_line.cpp.i
new file mode 100644
index 0000000..5a927b3
Binary files /dev/null and b/.hg/store/data/src/gis/_i_gis_line.cpp.i differ
diff --git a/.hg/store/data/src/gis/_i_gis_line.h.i b/.hg/store/data/src/gis/_i_gis_line.h.i
new file mode 100644
index 0000000..931bb80
Binary files /dev/null and b/.hg/store/data/src/gis/_i_gis_line.h.i differ
diff --git a/.hg/store/data/src/gis/_i_gis_project.cpp.i b/.hg/store/data/src/gis/_i_gis_project.cpp.i
new file mode 100644
index 0000000..fb6d252
Binary files /dev/null and b/.hg/store/data/src/gis/_i_gis_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/_i_gis_project.h.i b/.hg/store/data/src/gis/_i_gis_project.h.i
new file mode 100644
index 0000000..0c80c51
Binary files /dev/null and b/.hg/store/data/src/gis/_i_gis_project.h.i differ
diff --git a/.hg/store/data/src/gis/_i_gis_widget.ui.i b/.hg/store/data/src/gis/_i_gis_widget.ui.i
new file mode 100644
index 0000000..ab9a2b3
Binary files /dev/null and b/.hg/store/data/src/gis/_i_gis_widget.ui.i differ
diff --git a/.hg/store/data/src/gis/_wpt_icons.cpp.i b/.hg/store/data/src/gis/_wpt_icons.cpp.i
new file mode 100644
index 0000000..9c21c7f
Binary files /dev/null and b/.hg/store/data/src/gis/_wpt_icons.cpp.i differ
diff --git a/.hg/store/data/src/gis/_wpt_icons.h.i b/.hg/store/data/src/gis/_wpt_icons.h.i
new file mode 100644
index 0000000..b3b17a7
Binary files /dev/null and b/.hg/store/data/src/gis/_wpt_icons.h.i differ
diff --git a/.hg/store/data/src/gis/bin/_c_bin_project.cpp.i b/.hg/store/data/src/gis/bin/_c_bin_project.cpp.i
new file mode 100644
index 0000000..97352e2
Binary files /dev/null and b/.hg/store/data/src/gis/bin/_c_bin_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/bin/_c_bin_project.h.i b/.hg/store/data/src/gis/bin/_c_bin_project.h.i
new file mode 100644
index 0000000..f756316
Binary files /dev/null and b/.hg/store/data/src/gis/bin/_c_bin_project.h.i differ
diff --git a/.hg/store/data/src/gis/bin/_c_gis_serialization.cpp.i b/.hg/store/data/src/gis/bin/_c_gis_serialization.cpp.i
new file mode 100644
index 0000000..93f2273
Binary files /dev/null and b/.hg/store/data/src/gis/bin/_c_gis_serialization.cpp.i differ
diff --git a/.hg/store/data/src/gis/bin/_c_gis_serialization.h.i b/.hg/store/data/src/gis/bin/_c_gis_serialization.h.i
new file mode 100644
index 0000000..36673d6
Binary files /dev/null and b/.hg/store/data/src/gis/bin/_c_gis_serialization.h.i differ
diff --git a/.hg/store/data/src/gis/bin/serialization.cpp.i b/.hg/store/data/src/gis/bin/serialization.cpp.i
new file mode 100644
index 0000000..1552bf4
Binary files /dev/null and b/.hg/store/data/src/gis/bin/serialization.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_database.cpp.i b/.hg/store/data/src/gis/db/_c_d_b_folder_database.cpp.i
new file mode 100644
index 0000000..577afa9
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_database.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_database.h.i b/.hg/store/data/src/gis/db/_c_d_b_folder_database.h.i
new file mode 100644
index 0000000..4551469
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_database.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_group.cpp.i b/.hg/store/data/src/gis/db/_c_d_b_folder_group.cpp.i
new file mode 100644
index 0000000..259f722
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_group.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_group.h.i b/.hg/store/data/src/gis/db/_c_d_b_folder_group.h.i
new file mode 100644
index 0000000..1344600
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_group.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_lost_found.cpp.i b/.hg/store/data/src/gis/db/_c_d_b_folder_lost_found.cpp.i
new file mode 100644
index 0000000..174729e
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_lost_found.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_lost_found.h.i b/.hg/store/data/src/gis/db/_c_d_b_folder_lost_found.h.i
new file mode 100644
index 0000000..d2204a8
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_lost_found.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_other.cpp.i b/.hg/store/data/src/gis/db/_c_d_b_folder_other.cpp.i
new file mode 100644
index 0000000..32912ac
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_other.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_other.h.i b/.hg/store/data/src/gis/db/_c_d_b_folder_other.h.i
new file mode 100644
index 0000000..154998f
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_other.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_project.cpp.i b/.hg/store/data/src/gis/db/_c_d_b_folder_project.cpp.i
new file mode 100644
index 0000000..8e3e920
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_folder_project.h.i b/.hg/store/data/src/gis/db/_c_d_b_folder_project.h.i
new file mode 100644
index 0000000..6740d75
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_folder_project.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_item.cpp.i b/.hg/store/data/src/gis/db/_c_d_b_item.cpp.i
new file mode 100644
index 0000000..3ba3d8c
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_item.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_item.h.i b/.hg/store/data/src/gis/db/_c_d_b_item.h.i
new file mode 100644
index 0000000..d4d8602
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_item.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_project.cpp.i b/.hg/store/data/src/gis/db/_c_d_b_project.cpp.i
new file mode 100644
index 0000000..df641ba
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_d_b_project.h.i b/.hg/store/data/src/gis/db/_c_d_b_project.h.i
new file mode 100644
index 0000000..8942635
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_d_b_project.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_lost_found_project.cpp.i b/.hg/store/data/src/gis/db/_c_lost_found_project.cpp.i
new file mode 100644
index 0000000..80f8ccf
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_lost_found_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_lost_found_project.h.i b/.hg/store/data/src/gis/db/_c_lost_found_project.h.i
new file mode 100644
index 0000000..fc52dde
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_lost_found_project.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_setup_d_b.cpp.i b/.hg/store/data/src/gis/db/_c_setup_d_b.cpp.i
new file mode 100644
index 0000000..936ef55
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_setup_d_b.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_setup_d_b.h.i b/.hg/store/data/src/gis/db/_c_setup_d_b.h.i
new file mode 100644
index 0000000..3101c77
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_setup_d_b.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_setup_database.cpp.i b/.hg/store/data/src/gis/db/_c_setup_database.cpp.i
new file mode 100644
index 0000000..0ca53ee
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_setup_database.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_setup_database.h.i b/.hg/store/data/src/gis/db/_c_setup_database.h.i
new file mode 100644
index 0000000..74e5a6e
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_setup_database.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_setup_folder.cpp.i b/.hg/store/data/src/gis/db/_c_setup_folder.cpp.i
new file mode 100644
index 0000000..2f87895
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_setup_folder.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_setup_folder.h.i b/.hg/store/data/src/gis/db/_c_setup_folder.h.i
new file mode 100644
index 0000000..3f7f244
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_setup_folder.h.i differ
diff --git a/.hg/store/data/src/gis/db/_c_setup_workspace.cpp.i b/.hg/store/data/src/gis/db/_c_setup_workspace.cpp.i
new file mode 100644
index 0000000..63c9474
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_setup_workspace.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_c_setup_workspace.h.i b/.hg/store/data/src/gis/db/_c_setup_workspace.h.i
new file mode 100644
index 0000000..82e1743
Binary files /dev/null and b/.hg/store/data/src/gis/db/_c_setup_workspace.h.i differ
diff --git a/.hg/store/data/src/gis/db/_i_d_b.cpp.i b/.hg/store/data/src/gis/db/_i_d_b.cpp.i
new file mode 100644
index 0000000..355a183
Binary files /dev/null and b/.hg/store/data/src/gis/db/_i_d_b.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_i_d_b.h.i b/.hg/store/data/src/gis/db/_i_d_b.h.i
new file mode 100644
index 0000000..7ad34a5
Binary files /dev/null and b/.hg/store/data/src/gis/db/_i_d_b.h.i differ
diff --git a/.hg/store/data/src/gis/db/_i_d_b_folder.cpp.i b/.hg/store/data/src/gis/db/_i_d_b_folder.cpp.i
new file mode 100644
index 0000000..e0d0882
Binary files /dev/null and b/.hg/store/data/src/gis/db/_i_d_b_folder.cpp.i differ
diff --git a/.hg/store/data/src/gis/db/_i_d_b_folder.h.i b/.hg/store/data/src/gis/db/_i_d_b_folder.h.i
new file mode 100644
index 0000000..a9ebe22
Binary files /dev/null and b/.hg/store/data/src/gis/db/_i_d_b_folder.h.i differ
diff --git a/.hg/store/data/src/gis/db/_i_setup_d_b.ui.i b/.hg/store/data/src/gis/db/_i_setup_d_b.ui.i
new file mode 100644
index 0000000..bc069c5
Binary files /dev/null and b/.hg/store/data/src/gis/db/_i_setup_d_b.ui.i differ
diff --git a/.hg/store/data/src/gis/db/_i_setup_database.ui.i b/.hg/store/data/src/gis/db/_i_setup_database.ui.i
new file mode 100644
index 0000000..ec16445
Binary files /dev/null and b/.hg/store/data/src/gis/db/_i_setup_database.ui.i differ
diff --git a/.hg/store/data/src/gis/db/_i_setup_folder.ui.i b/.hg/store/data/src/gis/db/_i_setup_folder.ui.i
new file mode 100644
index 0000000..ad03a3f
Binary files /dev/null and b/.hg/store/data/src/gis/db/_i_setup_folder.ui.i differ
diff --git a/.hg/store/data/src/gis/db/_i_setup_workspace.ui.i b/.hg/store/data/src/gis/db/_i_setup_workspace.ui.i
new file mode 100644
index 0000000..f5baf18
Binary files /dev/null and b/.hg/store/data/src/gis/db/_i_setup_workspace.ui.i differ
diff --git a/.hg/store/data/src/gis/db/macros.h.i b/.hg/store/data/src/gis/db/macros.h.i
new file mode 100644
index 0000000..0ece6a4
Binary files /dev/null and b/.hg/store/data/src/gis/db/macros.h.i differ
diff --git a/.hg/store/data/src/gis/gpx/_c_gis_project.cpp.i b/.hg/store/data/src/gis/gpx/_c_gis_project.cpp.i
new file mode 100644
index 0000000..fce63e7
Binary files /dev/null and b/.hg/store/data/src/gis/gpx/_c_gis_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/gpx/_c_gis_project.h.i b/.hg/store/data/src/gis/gpx/_c_gis_project.h.i
new file mode 100644
index 0000000..338629c
Binary files /dev/null and b/.hg/store/data/src/gis/gpx/_c_gis_project.h.i differ
diff --git a/.hg/store/data/src/gis/gpx/_c_gpx_project.cpp.i b/.hg/store/data/src/gis/gpx/_c_gpx_project.cpp.i
new file mode 100644
index 0000000..25e465a
Binary files /dev/null and b/.hg/store/data/src/gis/gpx/_c_gpx_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/gpx/_c_gpx_project.h.i b/.hg/store/data/src/gis/gpx/_c_gpx_project.h.i
new file mode 100644
index 0000000..bf22911
Binary files /dev/null and b/.hg/store/data/src/gis/gpx/_c_gpx_project.h.i differ
diff --git a/.hg/store/data/src/gis/gpx/serialization.cpp.i b/.hg/store/data/src/gis/gpx/serialization.cpp.i
new file mode 100644
index 0000000..4aabb68
Binary files /dev/null and b/.hg/store/data/src/gis/gpx/serialization.cpp.i differ
diff --git a/.hg/store/data/src/gis/ovl/_c_details_ovl_area.cpp.i b/.hg/store/data/src/gis/ovl/_c_details_ovl_area.cpp.i
new file mode 100644
index 0000000..a82d12e
Binary files /dev/null and b/.hg/store/data/src/gis/ovl/_c_details_ovl_area.cpp.i differ
diff --git a/.hg/store/data/src/gis/ovl/_c_details_ovl_area.h.i b/.hg/store/data/src/gis/ovl/_c_details_ovl_area.h.i
new file mode 100644
index 0000000..220c42e
Binary files /dev/null and b/.hg/store/data/src/gis/ovl/_c_details_ovl_area.h.i differ
diff --git a/.hg/store/data/src/gis/ovl/_c_gis_item_ovl_area.cpp.i b/.hg/store/data/src/gis/ovl/_c_gis_item_ovl_area.cpp.i
new file mode 100644
index 0000000..730be19
Binary files /dev/null and b/.hg/store/data/src/gis/ovl/_c_gis_item_ovl_area.cpp.i differ
diff --git a/.hg/store/data/src/gis/ovl/_c_gis_item_ovl_area.h.i b/.hg/store/data/src/gis/ovl/_c_gis_item_ovl_area.h.i
new file mode 100644
index 0000000..1ed8519
Binary files /dev/null and b/.hg/store/data/src/gis/ovl/_c_gis_item_ovl_area.h.i differ
diff --git a/.hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.cpp.i b/.hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.cpp.i
new file mode 100644
index 0000000..8d76a20
Binary files /dev/null and b/.hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.cpp.i differ
diff --git a/.hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.h.i b/.hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.h.i
new file mode 100644
index 0000000..ccfb859
Binary files /dev/null and b/.hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.h.i differ
diff --git a/.hg/store/data/src/gis/ovl/_i_details_ovl_area.ui.i b/.hg/store/data/src/gis/ovl/_i_details_ovl_area.ui.i
new file mode 100644
index 0000000..9cf38ff
Binary files /dev/null and b/.hg/store/data/src/gis/ovl/_i_details_ovl_area.ui.i differ
diff --git a/.hg/store/data/src/gis/ovl/_i_scr_opt_ovl_area.ui.i b/.hg/store/data/src/gis/ovl/_i_scr_opt_ovl_area.ui.i
new file mode 100644
index 0000000..c050908
Binary files /dev/null and b/.hg/store/data/src/gis/ovl/_i_scr_opt_ovl_area.ui.i differ
diff --git a/.hg/store/data/src/gis/prj/_c_details_prj.cpp.i b/.hg/store/data/src/gis/prj/_c_details_prj.cpp.i
new file mode 100644
index 0000000..8e198ca
Binary files /dev/null and b/.hg/store/data/src/gis/prj/_c_details_prj.cpp.i differ
diff --git a/.hg/store/data/src/gis/prj/_c_details_prj.h.i b/.hg/store/data/src/gis/prj/_c_details_prj.h.i
new file mode 100644
index 0000000..1b4243b
Binary files /dev/null and b/.hg/store/data/src/gis/prj/_c_details_prj.h.i differ
diff --git a/.hg/store/data/src/gis/prj/_i_details_prj.ui.i b/.hg/store/data/src/gis/prj/_i_details_prj.ui.i
new file mode 100644
index 0000000..e9a92c8
Binary files /dev/null and b/.hg/store/data/src/gis/prj/_i_details_prj.ui.i differ
diff --git a/.hg/store/data/src/gis/prj/_i_gis_project.cpp.i b/.hg/store/data/src/gis/prj/_i_gis_project.cpp.i
new file mode 100644
index 0000000..f8b0460
Binary files /dev/null and b/.hg/store/data/src/gis/prj/_i_gis_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/prj/_i_gis_project.h.i b/.hg/store/data/src/gis/prj/_i_gis_project.h.i
new file mode 100644
index 0000000..cfe277c
Binary files /dev/null and b/.hg/store/data/src/gis/prj/_i_gis_project.h.i differ
diff --git a/.hg/store/data/src/gis/qms/_c_qms_project.cpp.i b/.hg/store/data/src/gis/qms/_c_qms_project.cpp.i
new file mode 100644
index 0000000..49d05c5
Binary files /dev/null and b/.hg/store/data/src/gis/qms/_c_qms_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/qms/_c_qms_project.h.i b/.hg/store/data/src/gis/qms/_c_qms_project.h.i
new file mode 100644
index 0000000..183b4ff
Binary files /dev/null and b/.hg/store/data/src/gis/qms/_c_qms_project.h.i differ
diff --git a/.hg/store/data/src/gis/qms/serialization.cpp.i b/.hg/store/data/src/gis/qms/serialization.cpp.i
new file mode 100644
index 0000000..261d671
Binary files /dev/null and b/.hg/store/data/src/gis/qms/serialization.cpp.i differ
diff --git a/.hg/store/data/src/gis/rte/_c_gis_item_rte.cpp.i b/.hg/store/data/src/gis/rte/_c_gis_item_rte.cpp.i
new file mode 100644
index 0000000..0797535
Binary files /dev/null and b/.hg/store/data/src/gis/rte/_c_gis_item_rte.cpp.i differ
diff --git a/.hg/store/data/src/gis/rte/_c_gis_item_rte.h.i b/.hg/store/data/src/gis/rte/_c_gis_item_rte.h.i
new file mode 100644
index 0000000..bd23953
Binary files /dev/null and b/.hg/store/data/src/gis/rte/_c_gis_item_rte.h.i differ
diff --git a/.hg/store/data/src/gis/rte/_c_scr_opt_rte.cpp.i b/.hg/store/data/src/gis/rte/_c_scr_opt_rte.cpp.i
new file mode 100644
index 0000000..0d1d16d
Binary files /dev/null and b/.hg/store/data/src/gis/rte/_c_scr_opt_rte.cpp.i differ
diff --git a/.hg/store/data/src/gis/rte/_c_scr_opt_rte.h.i b/.hg/store/data/src/gis/rte/_c_scr_opt_rte.h.i
new file mode 100644
index 0000000..770dbdd
Binary files /dev/null and b/.hg/store/data/src/gis/rte/_c_scr_opt_rte.h.i differ
diff --git a/.hg/store/data/src/gis/rte/_i_scr_opt_rte.ui.i b/.hg/store/data/src/gis/rte/_i_scr_opt_rte.ui.i
new file mode 100644
index 0000000..a23b644
Binary files /dev/null and b/.hg/store/data/src/gis/rte/_i_scr_opt_rte.ui.i differ
diff --git a/.hg/store/data/src/gis/search/_c_search_google.cpp.i b/.hg/store/data/src/gis/search/_c_search_google.cpp.i
new file mode 100644
index 0000000..30aed4f
Binary files /dev/null and b/.hg/store/data/src/gis/search/_c_search_google.cpp.i differ
diff --git a/.hg/store/data/src/gis/search/_c_search_google.h.i b/.hg/store/data/src/gis/search/_c_search_google.h.i
new file mode 100644
index 0000000..4fa2d97
Binary files /dev/null and b/.hg/store/data/src/gis/search/_c_search_google.h.i differ
diff --git a/.hg/store/data/src/gis/tnv/_c_two_nav_project.cpp.i b/.hg/store/data/src/gis/tnv/_c_two_nav_project.cpp.i
new file mode 100644
index 0000000..5acc3c4
Binary files /dev/null and b/.hg/store/data/src/gis/tnv/_c_two_nav_project.cpp.i differ
diff --git a/.hg/store/data/src/gis/tnv/_c_two_nav_project.h.i b/.hg/store/data/src/gis/tnv/_c_two_nav_project.h.i
new file mode 100644
index 0000000..4f79d36
Binary files /dev/null and b/.hg/store/data/src/gis/tnv/_c_two_nav_project.h.i differ
diff --git a/.hg/store/data/src/gis/tnv/serialization.cpp.i b/.hg/store/data/src/gis/tnv/serialization.cpp.i
new file mode 100644
index 0000000..ef1677b
Binary files /dev/null and b/.hg/store/data/src/gis/tnv/serialization.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/_c_combine_trk.cpp.i b/.hg/store/data/src/gis/trk/_c_combine_trk.cpp.i
new file mode 100644
index 0000000..62bb11f
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_c_combine_trk.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/_c_combine_trk.h.i b/.hg/store/data/src/gis/trk/_c_combine_trk.h.i
new file mode 100644
index 0000000..f28943e
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_c_combine_trk.h.i differ
diff --git a/.hg/store/data/src/gis/trk/_c_details_trk.cpp.i b/.hg/store/data/src/gis/trk/_c_details_trk.cpp.i
new file mode 100644
index 0000000..caae94b
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_c_details_trk.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/_c_details_trk.h.i b/.hg/store/data/src/gis/trk/_c_details_trk.h.i
new file mode 100644
index 0000000..46b1744
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_c_details_trk.h.i differ
diff --git a/.hg/store/data/src/gis/trk/_c_gis_item_trk.cpp.i b/.hg/store/data/src/gis/trk/_c_gis_item_trk.cpp.i
new file mode 100644
index 0000000..578d040
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_c_gis_item_trk.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/_c_gis_item_trk.h.i b/.hg/store/data/src/gis/trk/_c_gis_item_trk.h.i
new file mode 100644
index 0000000..92764a5
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_c_gis_item_trk.h.i differ
diff --git a/.hg/store/data/src/gis/trk/_c_scr_opt_trk.cpp.i b/.hg/store/data/src/gis/trk/_c_scr_opt_trk.cpp.i
new file mode 100644
index 0000000..3e64ed8
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_c_scr_opt_trk.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/_c_scr_opt_trk.h.i b/.hg/store/data/src/gis/trk/_c_scr_opt_trk.h.i
new file mode 100644
index 0000000..e74093d
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_c_scr_opt_trk.h.i differ
diff --git a/.hg/store/data/src/gis/trk/_i_combine_trk.ui.i b/.hg/store/data/src/gis/trk/_i_combine_trk.ui.i
new file mode 100644
index 0000000..208c0ce
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_i_combine_trk.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/_i_details_trk.ui.i b/.hg/store/data/src/gis/trk/_i_details_trk.ui.i
new file mode 100644
index 0000000..6ed1977
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_i_details_trk.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/_i_scr_opt_trk.ui.i b/.hg/store/data/src/gis/trk/_i_scr_opt_trk.ui.i
new file mode 100644
index 0000000..5701e5b
Binary files /dev/null and b/.hg/store/data/src/gis/trk/_i_scr_opt_trk.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_delete.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_delete.cpp.i
new file mode 100644
index 0000000..cf482af
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_delete.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_delete.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_delete.h.i
new file mode 100644
index 0000000..fc0c18c
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_delete.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_douglas_peuker.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_douglas_peuker.cpp.i
new file mode 100644
index 0000000..e0e4dfb
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_douglas_peuker.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_douglas_peuker.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_douglas_peuker.h.i
new file mode 100644
index 0000000..fa1f27f
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_douglas_peuker.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_median.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_median.cpp.i
new file mode 100644
index 0000000..3856a3c
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_median.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_median.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_median.h.i
new file mode 100644
index 0000000..b06841d
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_median.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_new_date.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_new_date.cpp.i
new file mode 100644
index 0000000..e68a064
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_new_date.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_new_date.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_new_date.h.i
new file mode 100644
index 0000000..df77f6b
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_new_date.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_obscure_date.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_obscure_date.cpp.i
new file mode 100644
index 0000000..86e6b0b
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_obscure_date.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_obscure_date.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_obscure_date.h.i
new file mode 100644
index 0000000..28cace1
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_obscure_date.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_offset_elevation.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_offset_elevation.cpp.i
new file mode 100644
index 0000000..74ccb22
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_offset_elevation.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_offset_elevation.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_offset_elevation.h.i
new file mode 100644
index 0000000..94e7e2f
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_offset_elevation.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_replace_elevation.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_replace_elevation.cpp.i
new file mode 100644
index 0000000..8ddcd0e
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_replace_elevation.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_replace_elevation.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_replace_elevation.h.i
new file mode 100644
index 0000000..43f2c53
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_replace_elevation.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_reset.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_reset.cpp.i
new file mode 100644
index 0000000..4aac38a
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_reset.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_reset.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_reset.h.i
new file mode 100644
index 0000000..c885c94
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_reset.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_speed.cpp.i b/.hg/store/data/src/gis/trk/filter/_c_filter_speed.cpp.i
new file mode 100644
index 0000000..d9dfa50
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_speed.cpp.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_c_filter_speed.h.i b/.hg/store/data/src/gis/trk/filter/_c_filter_speed.h.i
new file mode 100644
index 0000000..5a0580a
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_c_filter_speed.h.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_delete.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_delete.ui.i
new file mode 100644
index 0000000..8e45317
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_delete.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_douglas_peuker.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_douglas_peuker.ui.i
new file mode 100644
index 0000000..060c693
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_douglas_peuker.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_median.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_median.ui.i
new file mode 100644
index 0000000..e83a0ff
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_median.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_new_date.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_new_date.ui.i
new file mode 100644
index 0000000..e0097d1
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_new_date.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_obscure_date.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_obscure_date.ui.i
new file mode 100644
index 0000000..870e5aa
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_obscure_date.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_offset_elevation.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_offset_elevation.ui.i
new file mode 100644
index 0000000..c7925c3
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_offset_elevation.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_replace_elevation.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_replace_elevation.ui.i
new file mode 100644
index 0000000..e57eca1
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_replace_elevation.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_reset.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_reset.ui.i
new file mode 100644
index 0000000..7c01121
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_reset.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/_i_filter_speed.ui.i b/.hg/store/data/src/gis/trk/filter/_i_filter_speed.ui.i
new file mode 100644
index 0000000..e7f055b
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/_i_filter_speed.ui.i differ
diff --git a/.hg/store/data/src/gis/trk/filter/filter.cpp.i b/.hg/store/data/src/gis/trk/filter/filter.cpp.i
new file mode 100644
index 0000000..a3fae8a
Binary files /dev/null and b/.hg/store/data/src/gis/trk/filter/filter.cpp.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_details_geo_cache.cpp.i b/.hg/store/data/src/gis/wpt/_c_details_geo_cache.cpp.i
new file mode 100644
index 0000000..2d1e4ca
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_details_geo_cache.cpp.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_details_geo_cache.h.i b/.hg/store/data/src/gis/wpt/_c_details_geo_cache.h.i
new file mode 100644
index 0000000..e31ddb7
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_details_geo_cache.h.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_details_wpt.cpp.i b/.hg/store/data/src/gis/wpt/_c_details_wpt.cpp.i
new file mode 100644
index 0000000..3fdadee
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_details_wpt.cpp.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_details_wpt.h.i b/.hg/store/data/src/gis/wpt/_c_details_wpt.h.i
new file mode 100644
index 0000000..d8c2ee8
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_details_wpt.h.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_gis_item_wpt.cpp.i b/.hg/store/data/src/gis/wpt/_c_gis_item_wpt.cpp.i
new file mode 100644
index 0000000..8b54015
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_gis_item_wpt.cpp.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_gis_item_wpt.h.i b/.hg/store/data/src/gis/wpt/_c_gis_item_wpt.h.i
new file mode 100644
index 0000000..3660783
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_gis_item_wpt.h.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_proj_wpt.cpp.i b/.hg/store/data/src/gis/wpt/_c_proj_wpt.cpp.i
new file mode 100644
index 0000000..4700969
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_proj_wpt.cpp.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_proj_wpt.h.i b/.hg/store/data/src/gis/wpt/_c_proj_wpt.h.i
new file mode 100644
index 0000000..fa95c41
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_proj_wpt.h.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_scr_opt_wpt.cpp.i b/.hg/store/data/src/gis/wpt/_c_scr_opt_wpt.cpp.i
new file mode 100644
index 0000000..532a7a9
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_scr_opt_wpt.cpp.i differ
diff --git a/.hg/store/data/src/gis/wpt/_c_scr_opt_wpt.h.i b/.hg/store/data/src/gis/wpt/_c_scr_opt_wpt.h.i
new file mode 100644
index 0000000..391ce74
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_c_scr_opt_wpt.h.i differ
diff --git a/.hg/store/data/src/gis/wpt/_i_details_geo_cache.ui.i b/.hg/store/data/src/gis/wpt/_i_details_geo_cache.ui.i
new file mode 100644
index 0000000..9fb79b4
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_i_details_geo_cache.ui.i differ
diff --git a/.hg/store/data/src/gis/wpt/_i_details_wpt.ui.i b/.hg/store/data/src/gis/wpt/_i_details_wpt.ui.i
new file mode 100644
index 0000000..72d11dd
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_i_details_wpt.ui.i differ
diff --git a/.hg/store/data/src/gis/wpt/_i_proj_wpt.ui.i b/.hg/store/data/src/gis/wpt/_i_proj_wpt.ui.i
new file mode 100644
index 0000000..a4ee0ab
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_i_proj_wpt.ui.i differ
diff --git a/.hg/store/data/src/gis/wpt/_i_scr_opt_wpt.ui.i b/.hg/store/data/src/gis/wpt/_i_scr_opt_wpt.ui.i
new file mode 100644
index 0000000..5396999
Binary files /dev/null and b/.hg/store/data/src/gis/wpt/_i_scr_opt_wpt.ui.i differ
diff --git a/.hg/store/data/src/grid/_c_grid.cpp.i b/.hg/store/data/src/grid/_c_grid.cpp.i
new file mode 100644
index 0000000..4c76a36
Binary files /dev/null and b/.hg/store/data/src/grid/_c_grid.cpp.i differ
diff --git a/.hg/store/data/src/grid/_c_grid.h.i b/.hg/store/data/src/grid/_c_grid.h.i
new file mode 100644
index 0000000..63546e3
Binary files /dev/null and b/.hg/store/data/src/grid/_c_grid.h.i differ
diff --git a/.hg/store/data/src/grid/_c_grid_setup.cpp.i b/.hg/store/data/src/grid/_c_grid_setup.cpp.i
new file mode 100644
index 0000000..422a6f0
Binary files /dev/null and b/.hg/store/data/src/grid/_c_grid_setup.cpp.i differ
diff --git a/.hg/store/data/src/grid/_c_grid_setup.h.i b/.hg/store/data/src/grid/_c_grid_setup.h.i
new file mode 100644
index 0000000..d344e09
Binary files /dev/null and b/.hg/store/data/src/grid/_c_grid_setup.h.i differ
diff --git a/.hg/store/data/src/grid/_c_proj_wizard.cpp.i b/.hg/store/data/src/grid/_c_proj_wizard.cpp.i
new file mode 100644
index 0000000..b9b00a3
Binary files /dev/null and b/.hg/store/data/src/grid/_c_proj_wizard.cpp.i differ
diff --git a/.hg/store/data/src/grid/_c_proj_wizard.h.i b/.hg/store/data/src/grid/_c_proj_wizard.h.i
new file mode 100644
index 0000000..96ae2c1
Binary files /dev/null and b/.hg/store/data/src/grid/_c_proj_wizard.h.i differ
diff --git a/.hg/store/data/src/grid/_i_grid_setup.ui.i b/.hg/store/data/src/grid/_i_grid_setup.ui.i
new file mode 100644
index 0000000..6c842e4
Binary files /dev/null and b/.hg/store/data/src/grid/_i_grid_setup.ui.i differ
diff --git a/.hg/store/data/src/grid/_i_proj_wizard.ui.i b/.hg/store/data/src/grid/_i_proj_wizard.ui.i
new file mode 100644
index 0000000..e514dd0
Binary files /dev/null and b/.hg/store/data/src/grid/_i_proj_wizard.ui.i differ
diff --git a/.hg/store/data/src/grid/mitab.cpp.i b/.hg/store/data/src/grid/mitab.cpp.i
new file mode 100644
index 0000000..214695f
Binary files /dev/null and b/.hg/store/data/src/grid/mitab.cpp.i differ
diff --git a/.hg/store/data/src/grid/mitab.h.i b/.hg/store/data/src/grid/mitab.h.i
new file mode 100644
index 0000000..5485439
Binary files /dev/null and b/.hg/store/data/src/grid/mitab.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_app_opts.h.i b/.hg/store/data/src/helpers/_c_app_opts.h.i
new file mode 100644
index 0000000..b0ad8df
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_app_opts.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_elevation_dialog.cpp.i b/.hg/store/data/src/helpers/_c_elevation_dialog.cpp.i
new file mode 100644
index 0000000..336cdf0
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_elevation_dialog.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_elevation_dialog.h.i b/.hg/store/data/src/helpers/_c_elevation_dialog.h.i
new file mode 100644
index 0000000..5c36b79
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_elevation_dialog.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_file_ext.h.i b/.hg/store/data/src/helpers/_c_file_ext.h.i
new file mode 100644
index 0000000..5ee9f6c
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_file_ext.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_history_list_widget.cpp.i b/.hg/store/data/src/helpers/_c_history_list_widget.cpp.i
new file mode 100644
index 0000000..a4a67f5
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_history_list_widget.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_history_list_widget.h.i b/.hg/store/data/src/helpers/_c_history_list_widget.h.i
new file mode 100644
index 0000000..9c07bb3
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_history_list_widget.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_input_dialog.cpp.i b/.hg/store/data/src/helpers/_c_input_dialog.cpp.i
new file mode 100644
index 0000000..af26527
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_input_dialog.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_input_dialog.h.i b/.hg/store/data/src/helpers/_c_input_dialog.h.i
new file mode 100644
index 0000000..a71de18
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_input_dialog.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_links_dialog.cpp.i b/.hg/store/data/src/helpers/_c_links_dialog.cpp.i
new file mode 100644
index 0000000..124aa8e
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_links_dialog.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_links_dialog.h.i b/.hg/store/data/src/helpers/_c_links_dialog.h.i
new file mode 100644
index 0000000..bdd51c0
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_links_dialog.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_photo_album.cpp.i b/.hg/store/data/src/helpers/_c_photo_album.cpp.i
new file mode 100644
index 0000000..dc4c58a
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_photo_album.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_photo_album.h.i b/.hg/store/data/src/helpers/_c_photo_album.h.i
new file mode 100644
index 0000000..607123a
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_photo_album.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_photo_viewer.cpp.i b/.hg/store/data/src/helpers/_c_photo_viewer.cpp.i
new file mode 100644
index 0000000..0b69e5e
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_photo_viewer.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_photo_viewer.h.i b/.hg/store/data/src/helpers/_c_photo_viewer.h.i
new file mode 100644
index 0000000..8a6134f
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_photo_viewer.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_position_dialog.cpp.i b/.hg/store/data/src/helpers/_c_position_dialog.cpp.i
new file mode 100644
index 0000000..e36204a
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_position_dialog.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_position_dialog.h.i b/.hg/store/data/src/helpers/_c_position_dialog.h.i
new file mode 100644
index 0000000..d433080
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_position_dialog.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_select_copy_action.cpp.i b/.hg/store/data/src/helpers/_c_select_copy_action.cpp.i
new file mode 100644
index 0000000..df32100
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_select_copy_action.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_select_copy_action.h.i b/.hg/store/data/src/helpers/_c_select_copy_action.h.i
new file mode 100644
index 0000000..6921fe4
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_select_copy_action.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_select_project_dialog.cpp.i b/.hg/store/data/src/helpers/_c_select_project_dialog.cpp.i
new file mode 100644
index 0000000..6d11b07
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_select_project_dialog.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_select_project_dialog.h.i b/.hg/store/data/src/helpers/_c_select_project_dialog.h.i
new file mode 100644
index 0000000..ddda53c
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_select_project_dialog.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_settings.h.i b/.hg/store/data/src/helpers/_c_settings.h.i
new file mode 100644
index 0000000..4d687c4
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_settings.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_text_edit_widget.cpp.i b/.hg/store/data/src/helpers/_c_text_edit_widget.cpp.i
new file mode 100644
index 0000000..44221b3
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_text_edit_widget.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_text_edit_widget.h.i b/.hg/store/data/src/helpers/_c_text_edit_widget.h.i
new file mode 100644
index 0000000..7ca8649
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_text_edit_widget.h.i differ
diff --git a/.hg/store/data/src/helpers/_c_wpt_icon_dialog.cpp.i b/.hg/store/data/src/helpers/_c_wpt_icon_dialog.cpp.i
new file mode 100644
index 0000000..56bef87
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_wpt_icon_dialog.cpp.i differ
diff --git a/.hg/store/data/src/helpers/_c_wpt_icon_dialog.h.i b/.hg/store/data/src/helpers/_c_wpt_icon_dialog.h.i
new file mode 100644
index 0000000..4ad1e2c
Binary files /dev/null and b/.hg/store/data/src/helpers/_c_wpt_icon_dialog.h.i differ
diff --git a/.hg/store/data/src/helpers/_i_elevation_dialog.ui.i b/.hg/store/data/src/helpers/_i_elevation_dialog.ui.i
new file mode 100644
index 0000000..1bd9593
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_elevation_dialog.ui.i differ
diff --git a/.hg/store/data/src/helpers/_i_input_dialog.ui.i b/.hg/store/data/src/helpers/_i_input_dialog.ui.i
new file mode 100644
index 0000000..0efb69f
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_input_dialog.ui.i differ
diff --git a/.hg/store/data/src/helpers/_i_links_dialog.ui.i b/.hg/store/data/src/helpers/_i_links_dialog.ui.i
new file mode 100644
index 0000000..73cf421
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_links_dialog.ui.i differ
diff --git a/.hg/store/data/src/helpers/_i_photo_album.ui.i b/.hg/store/data/src/helpers/_i_photo_album.ui.i
new file mode 100644
index 0000000..7f8e4fa
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_photo_album.ui.i differ
diff --git a/.hg/store/data/src/helpers/_i_position_dialog.ui.i b/.hg/store/data/src/helpers/_i_position_dialog.ui.i
new file mode 100644
index 0000000..5ba4fbe
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_position_dialog.ui.i differ
diff --git a/.hg/store/data/src/helpers/_i_select_copy_action.ui.i b/.hg/store/data/src/helpers/_i_select_copy_action.ui.i
new file mode 100644
index 0000000..60fcc91
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_select_copy_action.ui.i differ
diff --git a/.hg/store/data/src/helpers/_i_select_project_dialog.ui.i b/.hg/store/data/src/helpers/_i_select_project_dialog.ui.i
new file mode 100644
index 0000000..6567efa
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_select_project_dialog.ui.i differ
diff --git a/.hg/store/data/src/helpers/_i_text_edit_widget.ui.i b/.hg/store/data/src/helpers/_i_text_edit_widget.ui.i
new file mode 100644
index 0000000..d57f46c
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_text_edit_widget.ui.i differ
diff --git a/.hg/store/data/src/helpers/_i_wpt_icon_dialog.ui.i b/.hg/store/data/src/helpers/_i_wpt_icon_dialog.ui.i
new file mode 100644
index 0000000..a19bd5b
Binary files /dev/null and b/.hg/store/data/src/helpers/_i_wpt_icon_dialog.ui.i differ
diff --git a/.hg/store/data/src/helpers/_platform.h.i b/.hg/store/data/src/helpers/_platform.h.i
new file mode 100644
index 0000000..7e82c82
Binary files /dev/null and b/.hg/store/data/src/helpers/_platform.h.i differ
diff --git a/.hg/store/data/src/icons/16x16/2_d_fix.png.i b/.hg/store/data/src/icons/16x16/2_d_fix.png.i
new file mode 100644
index 0000000..faf0daa
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/2_d_fix.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/3_d_fix.png.i b/.hg/store/data/src/icons/16x16/3_d_fix.png.i
new file mode 100644
index 0000000..0afad5f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/3_d_fix.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_add.png.i b/.hg/store/data/src/icons/16x16/_add.png.i
new file mode 100644
index 0000000..aca851f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_add.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_add_map_workspace.png.i b/.hg/store/data/src/icons/16x16/_add_map_workspace.png.i
new file mode 100644
index 0000000..fdabe8c
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_add_map_workspace.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_add_wpt.png.i b/.hg/store/data/src/icons/16x16/_add_wpt.png.i
new file mode 100644
index 0000000..993499e
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_add_wpt.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_cancel.png.i b/.hg/store/data/src/icons/16x16/_cancel.png.i
new file mode 100644
index 0000000..105ed6b
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_cancel.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_check.png.i b/.hg/store/data/src/icons/16x16/_check.png.i
new file mode 100644
index 0000000..fd7200d
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_check.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_close.png.i b/.hg/store/data/src/icons/16x16/_close.png.i
new file mode 100644
index 0000000..36742ff
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_close.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_copy.png.i b/.hg/store/data/src/icons/16x16/_copy.png.i
new file mode 100644
index 0000000..7dcc274
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_copy.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_cut.png.i b/.hg/store/data/src/icons/16x16/_cut.png.i
new file mode 100644
index 0000000..ee8f9e8
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_cut.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_delete_multiple.png.i b/.hg/store/data/src/icons/16x16/_delete_multiple.png.i
new file mode 100644
index 0000000..c9aba6a
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_delete_multiple.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_delete_one.png.i b/.hg/store/data/src/icons/16x16/_delete_one.png.i
new file mode 100644
index 0000000..3f0a66b
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_delete_one.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_down.png.i b/.hg/store/data/src/icons/16x16/_down.png.i
new file mode 100644
index 0000000..d2f2e5f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_down.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_edit_details.png.i b/.hg/store/data/src/icons/16x16/_edit_details.png.i
new file mode 100644
index 0000000..2963231
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_edit_details.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_edit_text.png.i b/.hg/store/data/src/icons/16x16/_edit_text.png.i
new file mode 100644
index 0000000..284cc6f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_edit_text.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_folder_d_e_m.png.i b/.hg/store/data/src/icons/16x16/_folder_d_e_m.png.i
new file mode 100644
index 0000000..9aa798f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_folder_d_e_m.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_folder_map.png.i b/.hg/store/data/src/icons/16x16/_folder_map.png.i
new file mode 100644
index 0000000..3758113
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_folder_map.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_font.png.i b/.hg/store/data/src/icons/16x16/_font.png.i
new file mode 100644
index 0000000..87874de
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_font.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_from_map.png.i b/.hg/store/data/src/icons/16x16/_from_map.png.i
new file mode 100644
index 0000000..7396c57
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_from_map.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_gis_project.png.i b/.hg/store/data/src/icons/16x16/_gis_project.png.i
new file mode 100644
index 0000000..89d0fc5
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_gis_project.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_grid.png.i b/.hg/store/data/src/icons/16x16/_grid.png.i
new file mode 100644
index 0000000..8b44bed
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_grid.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_grid_setup.png.i b/.hg/store/data/src/icons/16x16/_grid_setup.png.i
new file mode 100644
index 0000000..7ba5b88
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_grid_setup.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_grid_wizzard.png.i b/.hg/store/data/src/icons/16x16/_grid_wizzard.png.i
new file mode 100644
index 0000000..1133ea9
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_grid_wizzard.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_help.png.i b/.hg/store/data/src/icons/16x16/_help.png.i
new file mode 100644
index 0000000..89f526e
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_help.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_info.png.i b/.hg/store/data/src/icons/16x16/_info.png.i
new file mode 100644
index 0000000..19a4f98
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_info.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_line_move.png.i b/.hg/store/data/src/icons/16x16/_line_move.png.i
new file mode 100644
index 0000000..021c878
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_line_move.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_load_g_i_s.png.i b/.hg/store/data/src/icons/16x16/_load_g_i_s.png.i
new file mode 100644
index 0000000..43d7213
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_load_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_lock.png.i b/.hg/store/data/src/icons/16x16/_lock.png.i
new file mode 100644
index 0000000..d14e051
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_lock.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_map.png.i b/.hg/store/data/src/icons/16x16/_map.png.i
new file mode 100644
index 0000000..6bb434d
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_map.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_map_room.png.i b/.hg/store/data/src/icons/16x16/_map_room.png.i
new file mode 100644
index 0000000..3f42222
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_map_room.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_mime_dem_v_r_t.png.i b/.hg/store/data/src/icons/16x16/_mime_dem_v_r_t.png.i
new file mode 100644
index 0000000..d27e267
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_mime_dem_v_r_t.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_mime_i_m_g.png.i b/.hg/store/data/src/icons/16x16/_mime_i_m_g.png.i
new file mode 100644
index 0000000..d5d9f51
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_mime_i_m_g.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_mime_j_n_x.png.i b/.hg/store/data/src/icons/16x16/_mime_j_n_x.png.i
new file mode 100644
index 0000000..5745985
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_mime_j_n_x.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_mime_m_a_p.png.i b/.hg/store/data/src/icons/16x16/_mime_m_a_p.png.i
new file mode 100644
index 0000000..b9fcc82
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_mime_m_a_p.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_mime_r_m_a_p.png.i b/.hg/store/data/src/icons/16x16/_mime_r_m_a_p.png.i
new file mode 100644
index 0000000..fbfa471
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_mime_r_m_a_p.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_mime_v_r_t.png.i b/.hg/store/data/src/icons/16x16/_mime_v_r_t.png.i
new file mode 100644
index 0000000..cce1e5e
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_mime_v_r_t.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_mime_w_m_t_s.png.i b/.hg/store/data/src/icons/16x16/_mime_w_m_t_s.png.i
new file mode 100644
index 0000000..30c012d
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_mime_w_m_t_s.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_mouse_wheel.png.i b/.hg/store/data/src/icons/16x16/_mouse_wheel.png.i
new file mode 100644
index 0000000..e7f8d83
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_mouse_wheel.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_night_day.png.i b/.hg/store/data/src/icons/16x16/_night_day.png.i
new file mode 100644
index 0000000..eb1d8b6
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_night_day.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_no_fix.png.i b/.hg/store/data/src/icons/16x16/_no_fix.png.i
new file mode 100644
index 0000000..37bedcf
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_no_fix.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_off.png.i b/.hg/store/data/src/icons/16x16/_off.png.i
new file mode 100644
index 0000000..4861e40
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_off.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_p_o_i_text.png.i b/.hg/store/data/src/icons/16x16/_p_o_i_text.png.i
new file mode 100644
index 0000000..16e11af
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_p_o_i_text.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_paste.png.i b/.hg/store/data/src/icons/16x16/_paste.png.i
new file mode 100644
index 0000000..853ece6
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_paste.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_point_move.png.i b/.hg/store/data/src/icons/16x16/_point_move.png.i
new file mode 100644
index 0000000..e8bd21f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_point_move.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_q_map_shack.png.i b/.hg/store/data/src/icons/16x16/_q_map_shack.png.i
new file mode 100644
index 0000000..6c0a28c
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_q_map_shack.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_redo.png.i b/.hg/store/data/src/icons/16x16/_redo.png.i
new file mode 100644
index 0000000..cb72d79
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_redo.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_reset.png.i b/.hg/store/data/src/icons/16x16/_reset.png.i
new file mode 100644
index 0000000..53e865d
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_reset.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_right.png.i b/.hg/store/data/src/icons/16x16/_right.png.i
new file mode 100644
index 0000000..b36daa7
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_right.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_route.png.i b/.hg/store/data/src/icons/16x16/_route.png.i
new file mode 100644
index 0000000..fef8778
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_route.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_save_all_g_i_s.png.i b/.hg/store/data/src/icons/16x16/_save_all_g_i_s.png.i
new file mode 100644
index 0000000..45ab6da
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_save_all_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_save_g_i_s.png.i b/.hg/store/data/src/icons/16x16/_save_g_i_s.png.i
new file mode 100644
index 0000000..e208ff4
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_save_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_scale.png.i b/.hg/store/data/src/icons/16x16/_scale.png.i
new file mode 100644
index 0000000..18cb10f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_scale.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_select_color.png.i b/.hg/store/data/src/icons/16x16/_select_color.png.i
new file mode 100644
index 0000000..83b2593
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_select_color.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_select_range.png.i b/.hg/store/data/src/icons/16x16/_select_range.png.i
new file mode 100644
index 0000000..048efeb
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_select_range.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_setup_map_workspace.png.i b/.hg/store/data/src/icons/16x16/_setup_map_workspace.png.i
new file mode 100644
index 0000000..e368c31
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_setup_map_workspace.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_tainted.png.i b/.hg/store/data/src/icons/16x16/_tainted.png.i
new file mode 100644
index 0000000..1688be6
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_tainted.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_text_bold.png.i b/.hg/store/data/src/icons/16x16/_text_bold.png.i
new file mode 100644
index 0000000..c41b788
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_text_bold.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_text_center.png.i b/.hg/store/data/src/icons/16x16/_text_center.png.i
new file mode 100644
index 0000000..2514b26
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_text_center.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_text_italic.png.i b/.hg/store/data/src/icons/16x16/_text_italic.png.i
new file mode 100644
index 0000000..9e43f9e
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_text_italic.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_text_justified.png.i b/.hg/store/data/src/icons/16x16/_text_justified.png.i
new file mode 100644
index 0000000..1f2e7b8
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_text_justified.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_text_left.png.i b/.hg/store/data/src/icons/16x16/_text_left.png.i
new file mode 100644
index 0000000..3803d16
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_text_left.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_text_right.png.i b/.hg/store/data/src/icons/16x16/_text_right.png.i
new file mode 100644
index 0000000..6efe68e
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_text_right.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_text_underlined.png.i b/.hg/store/data/src/icons/16x16/_text_underlined.png.i
new file mode 100644
index 0000000..4623662
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_text_underlined.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_time_zone_setup.png.i b/.hg/store/data/src/icons/16x16/_time_zone_setup.png.i
new file mode 100644
index 0000000..264c567
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_time_zone_setup.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_to_bottom.png.i b/.hg/store/data/src/icons/16x16/_to_bottom.png.i
new file mode 100644
index 0000000..023b428
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_to_bottom.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_to_top.png.i b/.hg/store/data/src/icons/16x16/_to_top.png.i
new file mode 100644
index 0000000..ca73f9a
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_to_top.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_tool_tip.png.i b/.hg/store/data/src/icons/16x16/_tool_tip.png.i
new file mode 100644
index 0000000..3b8e2d8
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_tool_tip.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_track.png.i b/.hg/store/data/src/icons/16x16/_track.png.i
new file mode 100644
index 0000000..42d1ff1
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_track.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_trk_cut.png.i b/.hg/store/data/src/icons/16x16/_trk_cut.png.i
new file mode 100644
index 0000000..5abde71
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_trk_cut.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_trk_profile.png.i b/.hg/store/data/src/icons/16x16/_trk_profile.png.i
new file mode 100644
index 0000000..45042a4
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_trk_profile.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_un_lock.png.i b/.hg/store/data/src/icons/16x16/_un_lock.png.i
new file mode 100644
index 0000000..cc7ab1a
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_un_lock.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_undo.png.i b/.hg/store/data/src/icons/16x16/_undo.png.i
new file mode 100644
index 0000000..a019275
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_undo.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_up.png.i b/.hg/store/data/src/icons/16x16/_up.png.i
new file mode 100644
index 0000000..30c35de
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_up.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_wpt_move.png.i b/.hg/store/data/src/icons/16x16/_wpt_move.png.i
new file mode 100644
index 0000000..5b6892b
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_wpt_move.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/_wpt_proj.png.i b/.hg/store/data/src/icons/16x16/_wpt_proj.png.i
new file mode 100644
index 0000000..ae794d1
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/_wpt_proj.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/add.png.i b/.hg/store/data/src/icons/16x16/add.png.i
new file mode 100644
index 0000000..6654625
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/add.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/add_canvas.png.i b/.hg/store/data/src/icons/16x16/add_canvas.png.i
new file mode 100644
index 0000000..0c63c4f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/add_canvas.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/delete.png.i b/.hg/store/data/src/icons/16x16/delete.png.i
new file mode 100644
index 0000000..5404ebe
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/delete.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/delete_all.png.i b/.hg/store/data/src/icons/16x16/delete_all.png.i
new file mode 100644
index 0000000..1c50404
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/delete_all.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/down.png.i b/.hg/store/data/src/icons/16x16/down.png.i
new file mode 100644
index 0000000..aad2a5e
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/down.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/flip_direction.png.i b/.hg/store/data/src/icons/16x16/flip_direction.png.i
new file mode 100644
index 0000000..8e284b1
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/flip_direction.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/font.png.i b/.hg/store/data/src/icons/16x16/font.png.i
new file mode 100644
index 0000000..b6e7cee
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/font.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/from_map.png.i b/.hg/store/data/src/icons/16x16/from_map.png.i
new file mode 100644
index 0000000..c4900e0
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/from_map.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/grid.png.i b/.hg/store/data/src/icons/16x16/grid.png.i
new file mode 100644
index 0000000..72c62f9
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/grid.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/grid_setup.png.i b/.hg/store/data/src/icons/16x16/grid_setup.png.i
new file mode 100644
index 0000000..56db37f
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/grid_setup.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/grid_wizard.png.i b/.hg/store/data/src/icons/16x16/grid_wizard.png.i
new file mode 100644
index 0000000..2c44ceb
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/grid_wizard.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/icons.svg.save.i b/.hg/store/data/src/icons/16x16/icons.svg.save.i
new file mode 100644
index 0000000..f2269c5
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/icons.svg.save.i differ
diff --git a/.hg/store/data/src/icons/16x16/jnx.png.i b/.hg/store/data/src/icons/16x16/jnx.png.i
new file mode 100644
index 0000000..7cbceab
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/jnx.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/map.png.i b/.hg/store/data/src/icons/16x16/map.png.i
new file mode 100644
index 0000000..0ad683e
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/map.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/mime__img.png.i b/.hg/store/data/src/icons/16x16/mime__img.png.i
new file mode 100644
index 0000000..df5510c
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/mime__img.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/mime__jnx.png.i b/.hg/store/data/src/icons/16x16/mime__jnx.png.i
new file mode 100644
index 0000000..02bd476
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/mime__jnx.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/mime__map.png.i b/.hg/store/data/src/icons/16x16/mime__map.png.i
new file mode 100644
index 0000000..92af0ba
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/mime__map.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/mime__rmap.png.i b/.hg/store/data/src/icons/16x16/mime__rmap.png.i
new file mode 100644
index 0000000..9b4c96c
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/mime__rmap.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/mime__vrt.png.i b/.hg/store/data/src/icons/16x16/mime__vrt.png.i
new file mode 100644
index 0000000..5c05bca
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/mime__vrt.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/night_day.png.i b/.hg/store/data/src/icons/16x16/night_day.png.i
new file mode 100644
index 0000000..4bca933
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/night_day.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/path_map.png.i b/.hg/store/data/src/icons/16x16/path_map.png.i
new file mode 100644
index 0000000..8690097
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/path_map.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/poi_text.png.i b/.hg/store/data/src/icons/16x16/poi_text.png.i
new file mode 100644
index 0000000..bcba446
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/poi_text.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/red_glow.png.i b/.hg/store/data/src/icons/16x16/red_glow.png.i
new file mode 100644
index 0000000..356b4df
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/red_glow.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/reset.png.i b/.hg/store/data/src/icons/16x16/reset.png.i
new file mode 100644
index 0000000..1620c83
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/reset.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/rmap.png.i b/.hg/store/data/src/icons/16x16/rmap.png.i
new file mode 100644
index 0000000..3ea615a
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/rmap.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/scale.png.i b/.hg/store/data/src/icons/16x16/scale.png.i
new file mode 100644
index 0000000..a475352
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/scale.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/select_color.png.i b/.hg/store/data/src/icons/16x16/select_color.png.i
new file mode 100644
index 0000000..99b9cfb
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/select_color.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/to_bottom.png.i b/.hg/store/data/src/icons/16x16/to_bottom.png.i
new file mode 100644
index 0000000..8f9ed2d
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/to_bottom.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/tool_tip.png.i b/.hg/store/data/src/icons/16x16/tool_tip.png.i
new file mode 100644
index 0000000..25c8e79
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/tool_tip.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/up.png.i b/.hg/store/data/src/icons/16x16/up.png.i
new file mode 100644
index 0000000..b205aa3
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/up.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/view.png.i b/.hg/store/data/src/icons/16x16/view.png.i
new file mode 100644
index 0000000..cdb12fc
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/view.png.i differ
diff --git a/.hg/store/data/src/icons/16x16/wizzard.png.i b/.hg/store/data/src/icons/16x16/wizzard.png.i
new file mode 100644
index 0000000..ee1b012
Binary files /dev/null and b/.hg/store/data/src/icons/16x16/wizzard.png.i differ
diff --git a/.hg/store/data/src/icons/2_d_fix.svg.i b/.hg/store/data/src/icons/2_d_fix.svg.i
new file mode 100644
index 0000000..0c04817
Binary files /dev/null and b/.hg/store/data/src/icons/2_d_fix.svg.i differ
diff --git a/.hg/store/data/src/icons/2_nav_project.svg.i b/.hg/store/data/src/icons/2_nav_project.svg.i
new file mode 100644
index 0000000..d95a2fb
Binary files /dev/null and b/.hg/store/data/src/icons/2_nav_project.svg.i differ
diff --git a/.hg/store/data/src/icons/32x32/2_d_fix.png.i b/.hg/store/data/src/icons/32x32/2_d_fix.png.i
new file mode 100644
index 0000000..fe1e3b5
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/2_d_fix.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/2_nav_project.png.i b/.hg/store/data/src/icons/32x32/2_nav_project.png.i
new file mode 100644
index 0000000..5fde48b
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/2_nav_project.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/3_d_fix.png.i b/.hg/store/data/src/icons/32x32/3_d_fix.png.i
new file mode 100644
index 0000000..d3d0146
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/3_d_fix.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_add.png.i b/.hg/store/data/src/icons/32x32/_add.png.i
new file mode 100644
index 0000000..4cfe107
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_add.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_add_area.png.i b/.hg/store/data/src/icons/32x32/_add_area.png.i
new file mode 100644
index 0000000..351920b
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_add_area.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_add_image.png.i b/.hg/store/data/src/icons/32x32/_add_image.png.i
new file mode 100644
index 0000000..b2a1d81
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_add_image.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_add_map_workspace.png.i b/.hg/store/data/src/icons/32x32/_add_map_workspace.png.i
new file mode 100644
index 0000000..9e45658
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_add_map_workspace.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_add_project.png.i b/.hg/store/data/src/icons/32x32/_add_project.png.i
new file mode 100644
index 0000000..a7a0788
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_add_project.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_add_trk.png.i b/.hg/store/data/src/icons/32x32/_add_trk.png.i
new file mode 100644
index 0000000..416aaec
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_add_trk.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_add_wpt.png.i b/.hg/store/data/src/icons/32x32/_add_wpt.png.i
new file mode 100644
index 0000000..b9e5fcf
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_add_wpt.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_apply.png.i b/.hg/store/data/src/icons/32x32/_apply.png.i
new file mode 100644
index 0000000..bdc42f2
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_apply.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_area.png.i b/.hg/store/data/src/icons/32x32/_area.png.i
new file mode 100644
index 0000000..23bdef2
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_area.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_area_move.png.i b/.hg/store/data/src/icons/32x32/_area_move.png.i
new file mode 100644
index 0000000..e368fa3
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_area_move.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_cancel.png.i b/.hg/store/data/src/icons/32x32/_cancel.png.i
new file mode 100644
index 0000000..8a6722f
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_cancel.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_check.png.i b/.hg/store/data/src/icons/32x32/_check.png.i
new file mode 100644
index 0000000..2dd3417
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_check.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_close.png.i b/.hg/store/data/src/icons/32x32/_close.png.i
new file mode 100644
index 0000000..973be36
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_close.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_combine.png.i b/.hg/store/data/src/icons/32x32/_combine.png.i
new file mode 100644
index 0000000..2a0e67a
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_combine.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_copy.png.i b/.hg/store/data/src/icons/32x32/_copy.png.i
new file mode 100644
index 0000000..c9ccde9
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_copy.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_cut.png.i b/.hg/store/data/src/icons/32x32/_cut.png.i
new file mode 100644
index 0000000..7b67239
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_cut.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_cut_history.png.i b/.hg/store/data/src/icons/32x32/_cut_history.png.i
new file mode 100644
index 0000000..c96d44a
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_cut_history.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_d_b_project.png.i b/.hg/store/data/src/icons/32x32/_d_b_project.png.i
new file mode 100644
index 0000000..e854f2d
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_d_b_project.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_database.png.i b/.hg/store/data/src/icons/32x32/_database.png.i
new file mode 100644
index 0000000..c6cae2e
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_database.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_database_convert.png.i b/.hg/store/data/src/icons/32x32/_database_convert.png.i
new file mode 100644
index 0000000..399b732
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_database_convert.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_database_setup.png.i b/.hg/store/data/src/icons/32x32/_database_setup.png.i
new file mode 100644
index 0000000..b2591c1
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_database_setup.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_del_image.png.i b/.hg/store/data/src/icons/32x32/_del_image.png.i
new file mode 100644
index 0000000..56d50d0
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_del_image.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_delete_multiple.png.i b/.hg/store/data/src/icons/32x32/_delete_multiple.png.i
new file mode 100644
index 0000000..da1a2ec
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_delete_multiple.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_delete_one.png.i b/.hg/store/data/src/icons/32x32/_delete_one.png.i
new file mode 100644
index 0000000..03fc0e6
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_delete_one.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_device.png.i b/.hg/store/data/src/icons/32x32/_device.png.i
new file mode 100644
index 0000000..e9174a0
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_device.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_down.png.i b/.hg/store/data/src/icons/32x32/_down.png.i
new file mode 100644
index 0000000..b4c4a0c
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_down.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_edit_details.png.i b/.hg/store/data/src/icons/32x32/_edit_details.png.i
new file mode 100644
index 0000000..b7a87c6
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_edit_details.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_edit_text.png.i b/.hg/store/data/src/icons/32x32/_edit_text.png.i
new file mode 100644
index 0000000..49e352f
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_edit_text.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_empty.png.i b/.hg/store/data/src/icons/32x32/_empty.png.i
new file mode 100644
index 0000000..484b073
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_empty.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_error.png.i b/.hg/store/data/src/icons/32x32/_error.png.i
new file mode 100644
index 0000000..04fe2db
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_error.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_folder_d_e_m.png.i b/.hg/store/data/src/icons/32x32/_folder_d_e_m.png.i
new file mode 100644
index 0000000..78eb232
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_folder_d_e_m.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_folder_map.png.i b/.hg/store/data/src/icons/32x32/_folder_map.png.i
new file mode 100644
index 0000000..87c21c1
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_folder_map.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_font.png.i b/.hg/store/data/src/icons/32x32/_font.png.i
new file mode 100644
index 0000000..d9b6dd3
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_font.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_from_map.png.i b/.hg/store/data/src/icons/32x32/_from_map.png.i
new file mode 100644
index 0000000..9f92448
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_from_map.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_gis_project.png.i b/.hg/store/data/src/icons/32x32/_gis_project.png.i
new file mode 100644
index 0000000..4b180ba
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_gis_project.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_gpx_project.png.i b/.hg/store/data/src/icons/32x32/_gpx_project.png.i
new file mode 100644
index 0000000..5342783
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_gpx_project.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_grid.png.i b/.hg/store/data/src/icons/32x32/_grid.png.i
new file mode 100644
index 0000000..e6dbfdb
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_grid.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_grid_setup.png.i b/.hg/store/data/src/icons/32x32/_grid_setup.png.i
new file mode 100644
index 0000000..b3ab623
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_grid_setup.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_grid_wizzard.png.i b/.hg/store/data/src/icons/32x32/_grid_wizzard.png.i
new file mode 100644
index 0000000..947184e
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_grid_wizzard.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_help.png.i b/.hg/store/data/src/icons/32x32/_help.png.i
new file mode 100644
index 0000000..a9af5a6
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_help.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_image.png.i b/.hg/store/data/src/icons/32x32/_image.png.i
new file mode 100644
index 0000000..eef55c2
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_image.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_info.png.i b/.hg/store/data/src/icons/32x32/_info.png.i
new file mode 100644
index 0000000..1458392
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_info.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_left.png.i b/.hg/store/data/src/icons/32x32/_left.png.i
new file mode 100644
index 0000000..fe04874
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_left.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_line_move.png.i b/.hg/store/data/src/icons/32x32/_line_move.png.i
new file mode 100644
index 0000000..fd69c7b
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_line_move.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_link.png.i b/.hg/store/data/src/icons/32x32/_link.png.i
new file mode 100644
index 0000000..b8d8304
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_link.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_load_g_i_s.png.i b/.hg/store/data/src/icons/32x32/_load_g_i_s.png.i
new file mode 100644
index 0000000..0ba32de
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_load_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_load_view.png.i b/.hg/store/data/src/icons/32x32/_load_view.png.i
new file mode 100644
index 0000000..fc89f84
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_load_view.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_lock.png.i b/.hg/store/data/src/icons/32x32/_lock.png.i
new file mode 100644
index 0000000..779e8e5
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_lock.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_map.png.i b/.hg/store/data/src/icons/32x32/_map.png.i
new file mode 100644
index 0000000..e31460d
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_map.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_map_room.png.i b/.hg/store/data/src/icons/32x32/_map_room.png.i
new file mode 100644
index 0000000..ea45851
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_map_room.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mime_dem_v_r_t.png.i b/.hg/store/data/src/icons/32x32/_mime_dem_v_r_t.png.i
new file mode 100644
index 0000000..dbc7942
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mime_dem_v_r_t.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mime_i_m_g.png.i b/.hg/store/data/src/icons/32x32/_mime_i_m_g.png.i
new file mode 100644
index 0000000..d72acd2
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mime_i_m_g.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mime_j_n_x.png.i b/.hg/store/data/src/icons/32x32/_mime_j_n_x.png.i
new file mode 100644
index 0000000..9ca71a6
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mime_j_n_x.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mime_m_a_p.png.i b/.hg/store/data/src/icons/32x32/_mime_m_a_p.png.i
new file mode 100644
index 0000000..457cbb2
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mime_m_a_p.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mime_r_m_a_p.png.i b/.hg/store/data/src/icons/32x32/_mime_r_m_a_p.png.i
new file mode 100644
index 0000000..c7e1fcc
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mime_r_m_a_p.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mime_t_m_s.png.i b/.hg/store/data/src/icons/32x32/_mime_t_m_s.png.i
new file mode 100644
index 0000000..265dc07
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mime_t_m_s.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mime_v_r_t.png.i b/.hg/store/data/src/icons/32x32/_mime_v_r_t.png.i
new file mode 100644
index 0000000..4412117
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mime_v_r_t.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mime_w_m_t_s.png.i b/.hg/store/data/src/icons/32x32/_mime_w_m_t_s.png.i
new file mode 100644
index 0000000..47d40e0
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mime_w_m_t_s.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_mouse_wheel.png.i b/.hg/store/data/src/icons/32x32/_mouse_wheel.png.i
new file mode 100644
index 0000000..26390e1
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_mouse_wheel.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_move.png.i b/.hg/store/data/src/icons/32x32/_move.png.i
new file mode 100644
index 0000000..452501f
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_move.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_night_day.png.i b/.hg/store/data/src/icons/32x32/_night_day.png.i
new file mode 100644
index 0000000..bf51d11
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_night_day.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_no_fix.png.i b/.hg/store/data/src/icons/32x32/_no_fix.png.i
new file mode 100644
index 0000000..b2ffade
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_no_fix.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_off.png.i b/.hg/store/data/src/icons/32x32/_off.png.i
new file mode 100644
index 0000000..46a0314
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_off.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_opacity.png.i b/.hg/store/data/src/icons/32x32/_opacity.png.i
new file mode 100644
index 0000000..6fcc72b
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_opacity.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_p_o_i_text.png.i b/.hg/store/data/src/icons/32x32/_p_o_i_text.png.i
new file mode 100644
index 0000000..e878dec
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_p_o_i_text.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_paste.png.i b/.hg/store/data/src/icons/32x32/_paste.png.i
new file mode 100644
index 0000000..3bafd9c
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_paste.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_path.png.i b/.hg/store/data/src/icons/32x32/_path.png.i
new file mode 100644
index 0000000..1f2ff79
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_path.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_path_blue.png.i b/.hg/store/data/src/icons/32x32/_path_blue.png.i
new file mode 100644
index 0000000..6dd2308
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_path_blue.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_path_green.png.i b/.hg/store/data/src/icons/32x32/_path_green.png.i
new file mode 100644
index 0000000..2e187ec
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_path_green.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_path_orange.png.i b/.hg/store/data/src/icons/32x32/_path_orange.png.i
new file mode 100644
index 0000000..26b0301
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_path_orange.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_pattern.png.i b/.hg/store/data/src/icons/32x32/_pattern.png.i
new file mode 100644
index 0000000..efa44f1
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_pattern.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_point_hide.png.i b/.hg/store/data/src/icons/32x32/_point_hide.png.i
new file mode 100644
index 0000000..6a2e6ba
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_point_hide.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_point_move.png.i b/.hg/store/data/src/icons/32x32/_point_move.png.i
new file mode 100644
index 0000000..ba06e86
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_point_move.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_point_show.png.i b/.hg/store/data/src/icons/32x32/_point_show.png.i
new file mode 100644
index 0000000..71d1898
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_point_show.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_print.png.i b/.hg/store/data/src/icons/32x32/_print.png.i
new file mode 100644
index 0000000..13f154a
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_print.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_q_map_shack.png.i b/.hg/store/data/src/icons/32x32/_q_map_shack.png.i
new file mode 100644
index 0000000..ba450fc
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_q_map_shack.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_qms_project.png.i b/.hg/store/data/src/icons/32x32/_qms_project.png.i
new file mode 100644
index 0000000..691cad9
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_qms_project.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_redo.png.i b/.hg/store/data/src/icons/32x32/_redo.png.i
new file mode 100644
index 0000000..b6030f3
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_redo.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_reload_image.png.i b/.hg/store/data/src/icons/32x32/_reload_image.png.i
new file mode 100644
index 0000000..7839054
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_reload_image.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_reset.png.i b/.hg/store/data/src/icons/32x32/_reset.png.i
new file mode 100644
index 0000000..b03b5f9
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_reset.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_reverse.png.i b/.hg/store/data/src/icons/32x32/_reverse.png.i
new file mode 100644
index 0000000..9d938a1
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_reverse.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_right.png.i b/.hg/store/data/src/icons/32x32/_right.png.i
new file mode 100644
index 0000000..5d23e54
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_right.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_route.png.i b/.hg/store/data/src/icons/32x32/_route.png.i
new file mode 100644
index 0000000..6e358d1
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_route.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_save_all_g_i_s.png.i b/.hg/store/data/src/icons/32x32/_save_all_g_i_s.png.i
new file mode 100644
index 0000000..ad3cc35
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_save_all_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_save_g_i_s.png.i b/.hg/store/data/src/icons/32x32/_save_g_i_s.png.i
new file mode 100644
index 0000000..d322933
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_save_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_save_g_i_s_as.png.i b/.hg/store/data/src/icons/32x32/_save_g_i_s_as.png.i
new file mode 100644
index 0000000..6bad724
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_save_g_i_s_as.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_save_view.png.i b/.hg/store/data/src/icons/32x32/_save_view.png.i
new file mode 100644
index 0000000..32db890
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_save_view.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_scale.png.i b/.hg/store/data/src/icons/32x32/_scale.png.i
new file mode 100644
index 0000000..838281d
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_scale.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_search_google.png.i b/.hg/store/data/src/icons/32x32/_search_google.png.i
new file mode 100644
index 0000000..96deaf8
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_search_google.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_select_color.png.i b/.hg/store/data/src/icons/32x32/_select_color.png.i
new file mode 100644
index 0000000..02ca3d5
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_select_color.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_select_range.png.i b/.hg/store/data/src/icons/32x32/_select_range.png.i
new file mode 100644
index 0000000..a1a8829
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_select_range.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_set_ele.png.i b/.hg/store/data/src/icons/32x32/_set_ele.png.i
new file mode 100644
index 0000000..5a86365
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_set_ele.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_setup_map_workspace.png.i b/.hg/store/data/src/icons/32x32/_setup_map_workspace.png.i
new file mode 100644
index 0000000..a5f3c02
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_setup_map_workspace.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_start.png.i b/.hg/store/data/src/icons/32x32/_start.png.i
new file mode 100644
index 0000000..4de006b
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_start.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_tainted.png.i b/.hg/store/data/src/icons/32x32/_tainted.png.i
new file mode 100644
index 0000000..f544265
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_tainted.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_text_bold.png.i b/.hg/store/data/src/icons/32x32/_text_bold.png.i
new file mode 100644
index 0000000..ab01903
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_text_bold.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_text_center.png.i b/.hg/store/data/src/icons/32x32/_text_center.png.i
new file mode 100644
index 0000000..bc13186
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_text_center.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_text_italic.png.i b/.hg/store/data/src/icons/32x32/_text_italic.png.i
new file mode 100644
index 0000000..0e5c1b0
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_text_italic.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_text_justified.png.i b/.hg/store/data/src/icons/32x32/_text_justified.png.i
new file mode 100644
index 0000000..5916671
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_text_justified.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_text_left.png.i b/.hg/store/data/src/icons/32x32/_text_left.png.i
new file mode 100644
index 0000000..d333dbf
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_text_left.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_text_right.png.i b/.hg/store/data/src/icons/32x32/_text_right.png.i
new file mode 100644
index 0000000..4ddefbd
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_text_right.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_text_underlined.png.i b/.hg/store/data/src/icons/32x32/_text_underlined.png.i
new file mode 100644
index 0000000..6661716
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_text_underlined.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_time.png.i b/.hg/store/data/src/icons/32x32/_time.png.i
new file mode 100644
index 0000000..9e98ae5
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_time.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_time_zone_setup.png.i b/.hg/store/data/src/icons/32x32/_time_zone_setup.png.i
new file mode 100644
index 0000000..c11bb46
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_time_zone_setup.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_to_bottom.png.i b/.hg/store/data/src/icons/32x32/_to_bottom.png.i
new file mode 100644
index 0000000..6d8c596
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_to_bottom.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_to_top.png.i b/.hg/store/data/src/icons/32x32/_to_top.png.i
new file mode 100644
index 0000000..bb9128b
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_to_top.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_tool_tip.png.i b/.hg/store/data/src/icons/32x32/_tool_tip.png.i
new file mode 100644
index 0000000..6abb860
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_tool_tip.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_track.png.i b/.hg/store/data/src/icons/32x32/_track.png.i
new file mode 100644
index 0000000..d94b8f5
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_track.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_trk_cut.png.i b/.hg/store/data/src/icons/32x32/_trk_cut.png.i
new file mode 100644
index 0000000..0d7e031
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_trk_cut.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_trk_profile.png.i b/.hg/store/data/src/icons/32x32/_trk_profile.png.i
new file mode 100644
index 0000000..39cac60
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_trk_profile.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_un_lock.png.i b/.hg/store/data/src/icons/32x32/_un_lock.png.i
new file mode 100644
index 0000000..15277c5
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_un_lock.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_undo.png.i b/.hg/store/data/src/icons/32x32/_undo.png.i
new file mode 100644
index 0000000..f4cb46c
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_undo.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_unit_setup.png.i b/.hg/store/data/src/icons/32x32/_unit_setup.png.i
new file mode 100644
index 0000000..25bc34e
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_unit_setup.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_up.png.i b/.hg/store/data/src/icons/32x32/_up.png.i
new file mode 100644
index 0000000..c2640ff
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_up.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_vrt_builder.png.i b/.hg/store/data/src/icons/32x32/_vrt_builder.png.i
new file mode 100644
index 0000000..b0eefb2
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_vrt_builder.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_wpt_move.png.i b/.hg/store/data/src/icons/32x32/_wpt_move.png.i
new file mode 100644
index 0000000..1af9de0
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_wpt_move.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_wpt_proj.png.i b/.hg/store/data/src/icons/32x32/_wpt_proj.png.i
new file mode 100644
index 0000000..01d80fb
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_wpt_proj.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/_wpt_prox.png.i b/.hg/store/data/src/icons/32x32/_wpt_prox.png.i
new file mode 100644
index 0000000..2f4e828
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/_wpt_prox.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/add.png.i b/.hg/store/data/src/icons/32x32/add.png.i
new file mode 100644
index 0000000..6654625
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/add.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/add_canvas.png.i b/.hg/store/data/src/icons/32x32/add_canvas.png.i
new file mode 100644
index 0000000..a16c9ce
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/add_canvas.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/cancel.png.i b/.hg/store/data/src/icons/32x32/cancel.png.i
new file mode 100644
index 0000000..f8c6166
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/cancel.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/check.png.i b/.hg/store/data/src/icons/32x32/check.png.i
new file mode 100644
index 0000000..98d2c2e
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/check.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/delete.png.i b/.hg/store/data/src/icons/32x32/delete.png.i
new file mode 100644
index 0000000..6ab057e
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/delete.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/delete_all.png.i b/.hg/store/data/src/icons/32x32/delete_all.png.i
new file mode 100644
index 0000000..0100f3d
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/delete_all.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/down.png.i b/.hg/store/data/src/icons/32x32/down.png.i
new file mode 100644
index 0000000..f972e2f
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/down.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/flip_direction.png.i b/.hg/store/data/src/icons/32x32/flip_direction.png.i
new file mode 100644
index 0000000..72415a6
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/flip_direction.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/font.png.i b/.hg/store/data/src/icons/32x32/font.png.i
new file mode 100644
index 0000000..39f80a4
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/font.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/from_map.png.i b/.hg/store/data/src/icons/32x32/from_map.png.i
new file mode 100644
index 0000000..6e1ae39
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/from_map.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/grid.png.i b/.hg/store/data/src/icons/32x32/grid.png.i
new file mode 100644
index 0000000..aaead73
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/grid.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/grid_setup.png.i b/.hg/store/data/src/icons/32x32/grid_setup.png.i
new file mode 100644
index 0000000..9ae9779
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/grid_setup.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/grid_wizard.png.i b/.hg/store/data/src/icons/32x32/grid_wizard.png.i
new file mode 100644
index 0000000..a3321fe
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/grid_wizard.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/icons.svg.save.i b/.hg/store/data/src/icons/32x32/icons.svg.save.i
new file mode 100644
index 0000000..8ffff8f
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/icons.svg.save.i differ
diff --git a/.hg/store/data/src/icons/32x32/jnx.png.i b/.hg/store/data/src/icons/32x32/jnx.png.i
new file mode 100644
index 0000000..a974a4c
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/jnx.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/map.png.i b/.hg/store/data/src/icons/32x32/map.png.i
new file mode 100644
index 0000000..14f49d4
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/map.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/mime__img.png.i b/.hg/store/data/src/icons/32x32/mime__img.png.i
new file mode 100644
index 0000000..a63ddb7
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/mime__img.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/mime__jnx.png.i b/.hg/store/data/src/icons/32x32/mime__jnx.png.i
new file mode 100644
index 0000000..2fcf1a2
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/mime__jnx.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/mime__map.png.i b/.hg/store/data/src/icons/32x32/mime__map.png.i
new file mode 100644
index 0000000..27de6fd
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/mime__map.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/mime__rmap.png.i b/.hg/store/data/src/icons/32x32/mime__rmap.png.i
new file mode 100644
index 0000000..d127cb2
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/mime__rmap.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/mime__vrt.png.i b/.hg/store/data/src/icons/32x32/mime__vrt.png.i
new file mode 100644
index 0000000..90deb88
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/mime__vrt.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/night_day.png.i b/.hg/store/data/src/icons/32x32/night_day.png.i
new file mode 100644
index 0000000..566f361
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/night_day.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/path_map.png.i b/.hg/store/data/src/icons/32x32/path_map.png.i
new file mode 100644
index 0000000..d5c8f90
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/path_map.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/poi_text.png.i b/.hg/store/data/src/icons/32x32/poi_text.png.i
new file mode 100644
index 0000000..0eb2e61
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/poi_text.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/reset.png.i b/.hg/store/data/src/icons/32x32/reset.png.i
new file mode 100644
index 0000000..3651d32
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/reset.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/rmap.png.i b/.hg/store/data/src/icons/32x32/rmap.png.i
new file mode 100644
index 0000000..37b0513
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/rmap.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/scale.png.i b/.hg/store/data/src/icons/32x32/scale.png.i
new file mode 100644
index 0000000..a822571
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/scale.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/select_color.png.i b/.hg/store/data/src/icons/32x32/select_color.png.i
new file mode 100644
index 0000000..7c183bf
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/select_color.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/to-top.png.i b/.hg/store/data/src/icons/32x32/to-top.png.i
new file mode 100644
index 0000000..8bc3093
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/to-top.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/to_bottom.png.i b/.hg/store/data/src/icons/32x32/to_bottom.png.i
new file mode 100644
index 0000000..62a3432
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/to_bottom.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/tool_tip.png.i b/.hg/store/data/src/icons/32x32/tool_tip.png.i
new file mode 100644
index 0000000..5940f1c
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/tool_tip.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/up.png.i b/.hg/store/data/src/icons/32x32/up.png.i
new file mode 100644
index 0000000..4e6dfe6
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/up.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/view.png.i b/.hg/store/data/src/icons/32x32/view.png.i
new file mode 100644
index 0000000..9cb1098
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/view.png.i differ
diff --git a/.hg/store/data/src/icons/32x32/wizzard.png.i b/.hg/store/data/src/icons/32x32/wizzard.png.i
new file mode 100644
index 0000000..f19695a
Binary files /dev/null and b/.hg/store/data/src/icons/32x32/wizzard.png.i differ
diff --git a/.hg/store/data/src/icons/3_d_fix.svg.i b/.hg/store/data/src/icons/3_d_fix.svg.i
new file mode 100644
index 0000000..e402c92
Binary files /dev/null and b/.hg/store/data/src/icons/3_d_fix.svg.i differ
diff --git a/.hg/store/data/src/icons/48x48/2_d_fix.png.i b/.hg/store/data/src/icons/48x48/2_d_fix.png.i
new file mode 100644
index 0000000..1aaa150
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/2_d_fix.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/2_nav_project.png.i b/.hg/store/data/src/icons/48x48/2_nav_project.png.i
new file mode 100644
index 0000000..3dba96b
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/2_nav_project.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/3_d_fix.png.i b/.hg/store/data/src/icons/48x48/3_d_fix.png.i
new file mode 100644
index 0000000..a52aa9a
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/3_d_fix.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_add.png.i b/.hg/store/data/src/icons/48x48/_add.png.i
new file mode 100644
index 0000000..1019745
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_add.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_add_area.png.i b/.hg/store/data/src/icons/48x48/_add_area.png.i
new file mode 100644
index 0000000..d797dc5
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_add_area.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_add_image.png.i b/.hg/store/data/src/icons/48x48/_add_image.png.i
new file mode 100644
index 0000000..54d778c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_add_image.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_add_map_workspace.png.i b/.hg/store/data/src/icons/48x48/_add_map_workspace.png.i
new file mode 100644
index 0000000..ba0b7c9
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_add_map_workspace.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_add_project.png.i b/.hg/store/data/src/icons/48x48/_add_project.png.i
new file mode 100644
index 0000000..fa07fd9
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_add_project.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_add_trk.png.i b/.hg/store/data/src/icons/48x48/_add_trk.png.i
new file mode 100644
index 0000000..a09297b
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_add_trk.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_add_wpt.png.i b/.hg/store/data/src/icons/48x48/_add_wpt.png.i
new file mode 100644
index 0000000..0fc1381
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_add_wpt.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_apply.png.i b/.hg/store/data/src/icons/48x48/_apply.png.i
new file mode 100644
index 0000000..69ba0fd
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_apply.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_area.png.i b/.hg/store/data/src/icons/48x48/_area.png.i
new file mode 100644
index 0000000..1968536
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_area.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_area_move.png.i b/.hg/store/data/src/icons/48x48/_area_move.png.i
new file mode 100644
index 0000000..6be7c3f
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_area_move.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_cancel.png.i b/.hg/store/data/src/icons/48x48/_cancel.png.i
new file mode 100644
index 0000000..81e0dea
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_cancel.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_check.png.i b/.hg/store/data/src/icons/48x48/_check.png.i
new file mode 100644
index 0000000..a04cc59
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_check.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_close.png.i b/.hg/store/data/src/icons/48x48/_close.png.i
new file mode 100644
index 0000000..eba43cf
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_close.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_combine.png.i b/.hg/store/data/src/icons/48x48/_combine.png.i
new file mode 100644
index 0000000..9d2e886
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_combine.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_copy.png.i b/.hg/store/data/src/icons/48x48/_copy.png.i
new file mode 100644
index 0000000..0f1e164
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_copy.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_cut.png.i b/.hg/store/data/src/icons/48x48/_cut.png.i
new file mode 100644
index 0000000..2fb2373
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_cut.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_cut_history.png.i b/.hg/store/data/src/icons/48x48/_cut_history.png.i
new file mode 100644
index 0000000..f69f91c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_cut_history.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_d_b_project.png.i b/.hg/store/data/src/icons/48x48/_d_b_project.png.i
new file mode 100644
index 0000000..4f5940a
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_d_b_project.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_database.png.i b/.hg/store/data/src/icons/48x48/_database.png.i
new file mode 100644
index 0000000..c57abc2
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_database.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_database_convert.png.i b/.hg/store/data/src/icons/48x48/_database_convert.png.i
new file mode 100644
index 0000000..6822501
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_database_convert.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_database_setup.png.i b/.hg/store/data/src/icons/48x48/_database_setup.png.i
new file mode 100644
index 0000000..4cc1589
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_database_setup.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_del_image.png.i b/.hg/store/data/src/icons/48x48/_del_image.png.i
new file mode 100644
index 0000000..91a568b
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_del_image.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_delete_multiple.png.i b/.hg/store/data/src/icons/48x48/_delete_multiple.png.i
new file mode 100644
index 0000000..0468fdf
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_delete_multiple.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_delete_one.png.i b/.hg/store/data/src/icons/48x48/_delete_one.png.i
new file mode 100644
index 0000000..81a6fdc
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_delete_one.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_device.png.i b/.hg/store/data/src/icons/48x48/_device.png.i
new file mode 100644
index 0000000..6803a94
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_device.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_down.png.i b/.hg/store/data/src/icons/48x48/_down.png.i
new file mode 100644
index 0000000..0b76f81
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_down.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_edit_details.png.i b/.hg/store/data/src/icons/48x48/_edit_details.png.i
new file mode 100644
index 0000000..f59d0d6
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_edit_details.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_edit_text.png.i b/.hg/store/data/src/icons/48x48/_edit_text.png.i
new file mode 100644
index 0000000..72f7758
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_edit_text.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_empty.png.i b/.hg/store/data/src/icons/48x48/_empty.png.i
new file mode 100644
index 0000000..ea46a6f
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_empty.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_error.png.i b/.hg/store/data/src/icons/48x48/_error.png.i
new file mode 100644
index 0000000..ec9dfea
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_error.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_folder_d_e_m.png.i b/.hg/store/data/src/icons/48x48/_folder_d_e_m.png.i
new file mode 100644
index 0000000..365ef66
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_folder_d_e_m.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_folder_map.png.i b/.hg/store/data/src/icons/48x48/_folder_map.png.i
new file mode 100644
index 0000000..e9a7729
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_folder_map.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_font.png.i b/.hg/store/data/src/icons/48x48/_font.png.i
new file mode 100644
index 0000000..4f22d03
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_font.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_from_map.png.i b/.hg/store/data/src/icons/48x48/_from_map.png.i
new file mode 100644
index 0000000..7b5693c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_from_map.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_gis_project.png.i b/.hg/store/data/src/icons/48x48/_gis_project.png.i
new file mode 100644
index 0000000..00edd21
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_gis_project.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_gpx_project.png.i b/.hg/store/data/src/icons/48x48/_gpx_project.png.i
new file mode 100644
index 0000000..d056372
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_gpx_project.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_grid.png.i b/.hg/store/data/src/icons/48x48/_grid.png.i
new file mode 100644
index 0000000..31db5e9
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_grid.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_grid_setup.png.i b/.hg/store/data/src/icons/48x48/_grid_setup.png.i
new file mode 100644
index 0000000..488cf25
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_grid_setup.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_grid_wizzard.png.i b/.hg/store/data/src/icons/48x48/_grid_wizzard.png.i
new file mode 100644
index 0000000..b0a866b
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_grid_wizzard.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_help.png.i b/.hg/store/data/src/icons/48x48/_help.png.i
new file mode 100644
index 0000000..474b50a
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_help.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_image.png.i b/.hg/store/data/src/icons/48x48/_image.png.i
new file mode 100644
index 0000000..bdc0145
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_image.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_info.png.i b/.hg/store/data/src/icons/48x48/_info.png.i
new file mode 100644
index 0000000..6609ed4
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_info.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_left.png.i b/.hg/store/data/src/icons/48x48/_left.png.i
new file mode 100644
index 0000000..84ac1a8
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_left.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_line_move.png.i b/.hg/store/data/src/icons/48x48/_line_move.png.i
new file mode 100644
index 0000000..17f1ff7
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_line_move.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_link.png.i b/.hg/store/data/src/icons/48x48/_link.png.i
new file mode 100644
index 0000000..cc4b455
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_link.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_load_g_i_s.png.i b/.hg/store/data/src/icons/48x48/_load_g_i_s.png.i
new file mode 100644
index 0000000..24e7a07
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_load_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_load_view.png.i b/.hg/store/data/src/icons/48x48/_load_view.png.i
new file mode 100644
index 0000000..c4f808c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_load_view.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_lock.png.i b/.hg/store/data/src/icons/48x48/_lock.png.i
new file mode 100644
index 0000000..4d627b2
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_lock.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_map.png.i b/.hg/store/data/src/icons/48x48/_map.png.i
new file mode 100644
index 0000000..58d8361
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_map.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_map_room.png.i b/.hg/store/data/src/icons/48x48/_map_room.png.i
new file mode 100644
index 0000000..eb61ee9
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_map_room.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mime_dem_v_r_t.png.i b/.hg/store/data/src/icons/48x48/_mime_dem_v_r_t.png.i
new file mode 100644
index 0000000..18bf796
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mime_dem_v_r_t.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mime_i_m_g.png.i b/.hg/store/data/src/icons/48x48/_mime_i_m_g.png.i
new file mode 100644
index 0000000..769e2e1
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mime_i_m_g.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mime_j_n_x.png.i b/.hg/store/data/src/icons/48x48/_mime_j_n_x.png.i
new file mode 100644
index 0000000..3790e26
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mime_j_n_x.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mime_m_a_p.png.i b/.hg/store/data/src/icons/48x48/_mime_m_a_p.png.i
new file mode 100644
index 0000000..fe54184
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mime_m_a_p.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mime_r_m_a_p.png.i b/.hg/store/data/src/icons/48x48/_mime_r_m_a_p.png.i
new file mode 100644
index 0000000..c3fea14
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mime_r_m_a_p.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mime_t_m_s.png.i b/.hg/store/data/src/icons/48x48/_mime_t_m_s.png.i
new file mode 100644
index 0000000..ddbe529
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mime_t_m_s.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mime_v_r_t.png.i b/.hg/store/data/src/icons/48x48/_mime_v_r_t.png.i
new file mode 100644
index 0000000..249c6d6
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mime_v_r_t.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mime_w_m_t_s.png.i b/.hg/store/data/src/icons/48x48/_mime_w_m_t_s.png.i
new file mode 100644
index 0000000..da3272c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mime_w_m_t_s.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_mouse_wheel.png.i b/.hg/store/data/src/icons/48x48/_mouse_wheel.png.i
new file mode 100644
index 0000000..8456a27
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_mouse_wheel.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_move.png.i b/.hg/store/data/src/icons/48x48/_move.png.i
new file mode 100644
index 0000000..81fb16b
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_move.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_night_day.png.i b/.hg/store/data/src/icons/48x48/_night_day.png.i
new file mode 100644
index 0000000..6e524ba
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_night_day.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_no_fix.png.i b/.hg/store/data/src/icons/48x48/_no_fix.png.i
new file mode 100644
index 0000000..bc7d0d4
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_no_fix.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_off.png.i b/.hg/store/data/src/icons/48x48/_off.png.i
new file mode 100644
index 0000000..5c3e35b
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_off.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_opacity.png.i b/.hg/store/data/src/icons/48x48/_opacity.png.i
new file mode 100644
index 0000000..0e84a43
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_opacity.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_p_o_i_text.png.i b/.hg/store/data/src/icons/48x48/_p_o_i_text.png.i
new file mode 100644
index 0000000..e467c55
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_p_o_i_text.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_paste.png.i b/.hg/store/data/src/icons/48x48/_paste.png.i
new file mode 100644
index 0000000..7185a42
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_paste.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_path.png.i b/.hg/store/data/src/icons/48x48/_path.png.i
new file mode 100644
index 0000000..0b03edb
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_path.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_path_blue.png.i b/.hg/store/data/src/icons/48x48/_path_blue.png.i
new file mode 100644
index 0000000..a26024d
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_path_blue.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_path_green.png.i b/.hg/store/data/src/icons/48x48/_path_green.png.i
new file mode 100644
index 0000000..fea2826
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_path_green.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_path_orange.png.i b/.hg/store/data/src/icons/48x48/_path_orange.png.i
new file mode 100644
index 0000000..6479e04
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_path_orange.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_pattern.png.i b/.hg/store/data/src/icons/48x48/_pattern.png.i
new file mode 100644
index 0000000..00ca083
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_pattern.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_point_hide.png.i b/.hg/store/data/src/icons/48x48/_point_hide.png.i
new file mode 100644
index 0000000..8bd859c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_point_hide.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_point_move.png.i b/.hg/store/data/src/icons/48x48/_point_move.png.i
new file mode 100644
index 0000000..cc8bef0
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_point_move.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_point_show.png.i b/.hg/store/data/src/icons/48x48/_point_show.png.i
new file mode 100644
index 0000000..b1258d1
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_point_show.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_print.png.i b/.hg/store/data/src/icons/48x48/_print.png.i
new file mode 100644
index 0000000..5e25572
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_print.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_q_map_shack.png.i b/.hg/store/data/src/icons/48x48/_q_map_shack.png.i
new file mode 100644
index 0000000..e4615d2
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_q_map_shack.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_qms_project.png.i b/.hg/store/data/src/icons/48x48/_qms_project.png.i
new file mode 100644
index 0000000..0e92510
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_qms_project.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_redo.png.i b/.hg/store/data/src/icons/48x48/_redo.png.i
new file mode 100644
index 0000000..93e4b67
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_redo.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_reload_image.png.i b/.hg/store/data/src/icons/48x48/_reload_image.png.i
new file mode 100644
index 0000000..b78615c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_reload_image.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_reset.png.i b/.hg/store/data/src/icons/48x48/_reset.png.i
new file mode 100644
index 0000000..f304739
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_reset.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_reverse.png.i b/.hg/store/data/src/icons/48x48/_reverse.png.i
new file mode 100644
index 0000000..7e0d7bd
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_reverse.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_right.png.i b/.hg/store/data/src/icons/48x48/_right.png.i
new file mode 100644
index 0000000..28f67a5
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_right.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_route.png.i b/.hg/store/data/src/icons/48x48/_route.png.i
new file mode 100644
index 0000000..2df6721
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_route.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_save_all_g_i_s.png.i b/.hg/store/data/src/icons/48x48/_save_all_g_i_s.png.i
new file mode 100644
index 0000000..f1262fc
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_save_all_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_save_g_i_s.png.i b/.hg/store/data/src/icons/48x48/_save_g_i_s.png.i
new file mode 100644
index 0000000..ee9b4c1
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_save_g_i_s.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_save_g_i_s_as.png.i b/.hg/store/data/src/icons/48x48/_save_g_i_s_as.png.i
new file mode 100644
index 0000000..e6bf6d1
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_save_g_i_s_as.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_save_view.png.i b/.hg/store/data/src/icons/48x48/_save_view.png.i
new file mode 100644
index 0000000..abb5149
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_save_view.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_scale.png.i b/.hg/store/data/src/icons/48x48/_scale.png.i
new file mode 100644
index 0000000..dd5f748
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_scale.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_search_google.png.i b/.hg/store/data/src/icons/48x48/_search_google.png.i
new file mode 100644
index 0000000..297259e
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_search_google.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_select_color.png.i b/.hg/store/data/src/icons/48x48/_select_color.png.i
new file mode 100644
index 0000000..e2eef43
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_select_color.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_select_range.png.i b/.hg/store/data/src/icons/48x48/_select_range.png.i
new file mode 100644
index 0000000..6b8a24e
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_select_range.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_set_ele.png.i b/.hg/store/data/src/icons/48x48/_set_ele.png.i
new file mode 100644
index 0000000..95831b1
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_set_ele.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_setup_map_workspace.png.i b/.hg/store/data/src/icons/48x48/_setup_map_workspace.png.i
new file mode 100644
index 0000000..0f09931
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_setup_map_workspace.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_start.png.i b/.hg/store/data/src/icons/48x48/_start.png.i
new file mode 100644
index 0000000..bd6a804
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_start.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_tainted.png.i b/.hg/store/data/src/icons/48x48/_tainted.png.i
new file mode 100644
index 0000000..a9eb89f
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_tainted.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_text_bold.png.i b/.hg/store/data/src/icons/48x48/_text_bold.png.i
new file mode 100644
index 0000000..fb65b27
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_text_bold.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_text_center.png.i b/.hg/store/data/src/icons/48x48/_text_center.png.i
new file mode 100644
index 0000000..ffd619e
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_text_center.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_text_italic.png.i b/.hg/store/data/src/icons/48x48/_text_italic.png.i
new file mode 100644
index 0000000..01f361e
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_text_italic.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_text_justified.png.i b/.hg/store/data/src/icons/48x48/_text_justified.png.i
new file mode 100644
index 0000000..c706fac
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_text_justified.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_text_left.png.i b/.hg/store/data/src/icons/48x48/_text_left.png.i
new file mode 100644
index 0000000..dee36e6
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_text_left.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_text_right.png.i b/.hg/store/data/src/icons/48x48/_text_right.png.i
new file mode 100644
index 0000000..889b916
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_text_right.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_text_underlined.png.i b/.hg/store/data/src/icons/48x48/_text_underlined.png.i
new file mode 100644
index 0000000..0eaaa92
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_text_underlined.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_time.png.i b/.hg/store/data/src/icons/48x48/_time.png.i
new file mode 100644
index 0000000..da934a4
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_time.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_time_zone_setup.png.i b/.hg/store/data/src/icons/48x48/_time_zone_setup.png.i
new file mode 100644
index 0000000..0888a0b
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_time_zone_setup.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_to_bottom.png.i b/.hg/store/data/src/icons/48x48/_to_bottom.png.i
new file mode 100644
index 0000000..b4ef333
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_to_bottom.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_to_top.png.i b/.hg/store/data/src/icons/48x48/_to_top.png.i
new file mode 100644
index 0000000..c243bd2
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_to_top.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_tool_tip.png.i b/.hg/store/data/src/icons/48x48/_tool_tip.png.i
new file mode 100644
index 0000000..1f2da31
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_tool_tip.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_track.png.i b/.hg/store/data/src/icons/48x48/_track.png.i
new file mode 100644
index 0000000..d484dce
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_track.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_trk_cut.png.i b/.hg/store/data/src/icons/48x48/_trk_cut.png.i
new file mode 100644
index 0000000..ff56501
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_trk_cut.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_trk_profile.png.i b/.hg/store/data/src/icons/48x48/_trk_profile.png.i
new file mode 100644
index 0000000..81e61fa
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_trk_profile.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_un_lock.png.i b/.hg/store/data/src/icons/48x48/_un_lock.png.i
new file mode 100644
index 0000000..7380e42
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_un_lock.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_undo.png.i b/.hg/store/data/src/icons/48x48/_undo.png.i
new file mode 100644
index 0000000..8b46c20
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_undo.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_unit_setup.png.i b/.hg/store/data/src/icons/48x48/_unit_setup.png.i
new file mode 100644
index 0000000..eec50f3
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_unit_setup.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_up.png.i b/.hg/store/data/src/icons/48x48/_up.png.i
new file mode 100644
index 0000000..6cb0092
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_up.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_vrt_builder.png.i b/.hg/store/data/src/icons/48x48/_vrt_builder.png.i
new file mode 100644
index 0000000..b95a613
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_vrt_builder.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_wpt_move.png.i b/.hg/store/data/src/icons/48x48/_wpt_move.png.i
new file mode 100644
index 0000000..6a91329
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_wpt_move.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_wpt_proj.png.i b/.hg/store/data/src/icons/48x48/_wpt_proj.png.i
new file mode 100644
index 0000000..f1c7e0a
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_wpt_proj.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/_wpt_prox.png.i b/.hg/store/data/src/icons/48x48/_wpt_prox.png.i
new file mode 100644
index 0000000..4ff9ea2
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/_wpt_prox.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/grid_setup.png.i b/.hg/store/data/src/icons/48x48/grid_setup.png.i
new file mode 100644
index 0000000..8bee50b
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/grid_setup.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/grid_wizard.png.i b/.hg/store/data/src/icons/48x48/grid_wizard.png.i
new file mode 100644
index 0000000..a312b46
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/grid_wizard.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/help.png.i b/.hg/store/data/src/icons/48x48/help.png.i
new file mode 100644
index 0000000..8c22a4c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/help.png.i differ
diff --git a/.hg/store/data/src/icons/48x48/path_map.png.i b/.hg/store/data/src/icons/48x48/path_map.png.i
new file mode 100644
index 0000000..7e3a81c
Binary files /dev/null and b/.hg/store/data/src/icons/48x48/path_map.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__black.png.i b/.hg/store/data/src/icons/8x8/bullet__black.png.i
new file mode 100644
index 0000000..fa81bd1
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__black.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__blue.png.i b/.hg/store/data/src/icons/8x8/bullet__blue.png.i
new file mode 100644
index 0000000..b4ad0ba
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__blue.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__brown.png.i b/.hg/store/data/src/icons/8x8/bullet__brown.png.i
new file mode 100644
index 0000000..2ea5cb0
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__brown.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__cyan.png.i b/.hg/store/data/src/icons/8x8/bullet__cyan.png.i
new file mode 100644
index 0000000..abc6513
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__cyan.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__dark__blue.png.i b/.hg/store/data/src/icons/8x8/bullet__dark__blue.png.i
new file mode 100644
index 0000000..8588eef
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__dark__blue.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__dark__cyan.png.i b/.hg/store/data/src/icons/8x8/bullet__dark__cyan.png.i
new file mode 100644
index 0000000..e5da608
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__dark__cyan.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__dark__gray.png.i b/.hg/store/data/src/icons/8x8/bullet__dark__gray.png.i
new file mode 100644
index 0000000..38848d6
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__dark__gray.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__dark__green.png.i b/.hg/store/data/src/icons/8x8/bullet__dark__green.png.i
new file mode 100644
index 0000000..bb85153
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__dark__green.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__dark__magenta.png.i b/.hg/store/data/src/icons/8x8/bullet__dark__magenta.png.i
new file mode 100644
index 0000000..98f276d
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__dark__magenta.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__dark__red.png.i b/.hg/store/data/src/icons/8x8/bullet__dark__red.png.i
new file mode 100644
index 0000000..2ea5cb0
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__dark__red.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__dark__yellow.png.i b/.hg/store/data/src/icons/8x8/bullet__dark__yellow.png.i
new file mode 100644
index 0000000..6435eec
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__dark__yellow.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__gray.png.i b/.hg/store/data/src/icons/8x8/bullet__gray.png.i
new file mode 100644
index 0000000..6724ced
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__gray.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__green.png.i b/.hg/store/data/src/icons/8x8/bullet__green.png.i
new file mode 100644
index 0000000..5ae5e78
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__green.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__magenta.png.i b/.hg/store/data/src/icons/8x8/bullet__magenta.png.i
new file mode 100644
index 0000000..b42ec5d
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__magenta.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__orange.png.i b/.hg/store/data/src/icons/8x8/bullet__orange.png.i
new file mode 100644
index 0000000..188e6a7
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__orange.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__red.png.i b/.hg/store/data/src/icons/8x8/bullet__red.png.i
new file mode 100644
index 0000000..fac968b
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__red.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__white.png.i b/.hg/store/data/src/icons/8x8/bullet__white.png.i
new file mode 100644
index 0000000..ac69bc8
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__white.png.i differ
diff --git a/.hg/store/data/src/icons/8x8/bullet__yellow.png.i b/.hg/store/data/src/icons/8x8/bullet__yellow.png.i
new file mode 100644
index 0000000..e9d41fd
Binary files /dev/null and b/.hg/store/data/src/icons/8x8/bullet__yellow.png.i differ
diff --git a/.hg/store/data/src/icons/_add.svg.i b/.hg/store/data/src/icons/_add.svg.i
new file mode 100644
index 0000000..d33237b
Binary files /dev/null and b/.hg/store/data/src/icons/_add.svg.i differ
diff --git a/.hg/store/data/src/icons/_add_area.svg.d b/.hg/store/data/src/icons/_add_area.svg.d
new file mode 100644
index 0000000..9b78705
Binary files /dev/null and b/.hg/store/data/src/icons/_add_area.svg.d differ
diff --git a/.hg/store/data/src/icons/_add_area.svg.i b/.hg/store/data/src/icons/_add_area.svg.i
new file mode 100644
index 0000000..3f0e799
Binary files /dev/null and b/.hg/store/data/src/icons/_add_area.svg.i differ
diff --git a/.hg/store/data/src/icons/_add_image.svg.i b/.hg/store/data/src/icons/_add_image.svg.i
new file mode 100644
index 0000000..138621c
Binary files /dev/null and b/.hg/store/data/src/icons/_add_image.svg.i differ
diff --git a/.hg/store/data/src/icons/_add_map_workspace.svg.i b/.hg/store/data/src/icons/_add_map_workspace.svg.i
new file mode 100644
index 0000000..a5617c2
Binary files /dev/null and b/.hg/store/data/src/icons/_add_map_workspace.svg.i differ
diff --git a/.hg/store/data/src/icons/_add_project.svg.i b/.hg/store/data/src/icons/_add_project.svg.i
new file mode 100644
index 0000000..299d5af
Binary files /dev/null and b/.hg/store/data/src/icons/_add_project.svg.i differ
diff --git a/.hg/store/data/src/icons/_add_trk.svg.i b/.hg/store/data/src/icons/_add_trk.svg.i
new file mode 100644
index 0000000..ac55bdd
Binary files /dev/null and b/.hg/store/data/src/icons/_add_trk.svg.i differ
diff --git a/.hg/store/data/src/icons/_add_wpt.svg.i b/.hg/store/data/src/icons/_add_wpt.svg.i
new file mode 100644
index 0000000..13f144c
Binary files /dev/null and b/.hg/store/data/src/icons/_add_wpt.svg.i differ
diff --git a/.hg/store/data/src/icons/_apply.svg.i b/.hg/store/data/src/icons/_apply.svg.i
new file mode 100644
index 0000000..9fac297
Binary files /dev/null and b/.hg/store/data/src/icons/_apply.svg.i differ
diff --git a/.hg/store/data/src/icons/_area.svg.d b/.hg/store/data/src/icons/_area.svg.d
new file mode 100644
index 0000000..89a5a63
Binary files /dev/null and b/.hg/store/data/src/icons/_area.svg.d differ
diff --git a/.hg/store/data/src/icons/_area.svg.i b/.hg/store/data/src/icons/_area.svg.i
new file mode 100644
index 0000000..fe3e540
Binary files /dev/null and b/.hg/store/data/src/icons/_area.svg.i differ
diff --git a/.hg/store/data/src/icons/_area_move.svg.i b/.hg/store/data/src/icons/_area_move.svg.i
new file mode 100644
index 0000000..8b8c235
Binary files /dev/null and b/.hg/store/data/src/icons/_area_move.svg.i differ
diff --git a/.hg/store/data/src/icons/_cancel.svg.i b/.hg/store/data/src/icons/_cancel.svg.i
new file mode 100644
index 0000000..87408a9
Binary files /dev/null and b/.hg/store/data/src/icons/_cancel.svg.i differ
diff --git a/.hg/store/data/src/icons/_check.svg.i b/.hg/store/data/src/icons/_check.svg.i
new file mode 100644
index 0000000..9381679
Binary files /dev/null and b/.hg/store/data/src/icons/_check.svg.i differ
diff --git a/.hg/store/data/src/icons/_close.svg.i b/.hg/store/data/src/icons/_close.svg.i
new file mode 100644
index 0000000..099b551
Binary files /dev/null and b/.hg/store/data/src/icons/_close.svg.i differ
diff --git a/.hg/store/data/src/icons/_combine.svg.i b/.hg/store/data/src/icons/_combine.svg.i
new file mode 100644
index 0000000..b4be0a7
Binary files /dev/null and b/.hg/store/data/src/icons/_combine.svg.i differ
diff --git a/.hg/store/data/src/icons/_copy.svg.i b/.hg/store/data/src/icons/_copy.svg.i
new file mode 100644
index 0000000..bf4f02c
Binary files /dev/null and b/.hg/store/data/src/icons/_copy.svg.i differ
diff --git a/.hg/store/data/src/icons/_cut.svg.i b/.hg/store/data/src/icons/_cut.svg.i
new file mode 100644
index 0000000..d3b4833
Binary files /dev/null and b/.hg/store/data/src/icons/_cut.svg.i differ
diff --git a/.hg/store/data/src/icons/_cut_history.svg.i b/.hg/store/data/src/icons/_cut_history.svg.i
new file mode 100644
index 0000000..9278927
Binary files /dev/null and b/.hg/store/data/src/icons/_cut_history.svg.i differ
diff --git a/.hg/store/data/src/icons/_d_b_project.svg.i b/.hg/store/data/src/icons/_d_b_project.svg.i
new file mode 100644
index 0000000..a424738
Binary files /dev/null and b/.hg/store/data/src/icons/_d_b_project.svg.i differ
diff --git a/.hg/store/data/src/icons/_database.svg.i b/.hg/store/data/src/icons/_database.svg.i
new file mode 100644
index 0000000..da3c2d7
Binary files /dev/null and b/.hg/store/data/src/icons/_database.svg.i differ
diff --git a/.hg/store/data/src/icons/_database_convert.svg.i b/.hg/store/data/src/icons/_database_convert.svg.i
new file mode 100644
index 0000000..68272a4
Binary files /dev/null and b/.hg/store/data/src/icons/_database_convert.svg.i differ
diff --git a/.hg/store/data/src/icons/_database_setup.svg.i b/.hg/store/data/src/icons/_database_setup.svg.i
new file mode 100644
index 0000000..d50fbdc
Binary files /dev/null and b/.hg/store/data/src/icons/_database_setup.svg.i differ
diff --git a/.hg/store/data/src/icons/_del_image.svg.i b/.hg/store/data/src/icons/_del_image.svg.i
new file mode 100644
index 0000000..11c79bd
Binary files /dev/null and b/.hg/store/data/src/icons/_del_image.svg.i differ
diff --git a/.hg/store/data/src/icons/_delete_multiple.svg.i b/.hg/store/data/src/icons/_delete_multiple.svg.i
new file mode 100644
index 0000000..04cd183
Binary files /dev/null and b/.hg/store/data/src/icons/_delete_multiple.svg.i differ
diff --git a/.hg/store/data/src/icons/_delete_one.svg.i b/.hg/store/data/src/icons/_delete_one.svg.i
new file mode 100644
index 0000000..0bef6b4
Binary files /dev/null and b/.hg/store/data/src/icons/_delete_one.svg.i differ
diff --git a/.hg/store/data/src/icons/_device.svg.i b/.hg/store/data/src/icons/_device.svg.i
new file mode 100644
index 0000000..26f0c4c
Binary files /dev/null and b/.hg/store/data/src/icons/_device.svg.i differ
diff --git a/.hg/store/data/src/icons/_down.svg.i b/.hg/store/data/src/icons/_down.svg.i
new file mode 100644
index 0000000..986594d
Binary files /dev/null and b/.hg/store/data/src/icons/_down.svg.i differ
diff --git a/.hg/store/data/src/icons/_edit_details.svg.i b/.hg/store/data/src/icons/_edit_details.svg.i
new file mode 100644
index 0000000..7cfa628
Binary files /dev/null and b/.hg/store/data/src/icons/_edit_details.svg.i differ
diff --git a/.hg/store/data/src/icons/_edit_text.svg.i b/.hg/store/data/src/icons/_edit_text.svg.i
new file mode 100644
index 0000000..6233e75
Binary files /dev/null and b/.hg/store/data/src/icons/_edit_text.svg.i differ
diff --git a/.hg/store/data/src/icons/_empty.svg.i b/.hg/store/data/src/icons/_empty.svg.i
new file mode 100644
index 0000000..21d19ff
Binary files /dev/null and b/.hg/store/data/src/icons/_empty.svg.i differ
diff --git a/.hg/store/data/src/icons/_error.svg.i b/.hg/store/data/src/icons/_error.svg.i
new file mode 100644
index 0000000..9ff45d6
Binary files /dev/null and b/.hg/store/data/src/icons/_error.svg.i differ
diff --git a/.hg/store/data/src/icons/_folder_d_e_m.svg.i b/.hg/store/data/src/icons/_folder_d_e_m.svg.i
new file mode 100644
index 0000000..ab4cd9b
Binary files /dev/null and b/.hg/store/data/src/icons/_folder_d_e_m.svg.i differ
diff --git a/.hg/store/data/src/icons/_folder_map.svg.i b/.hg/store/data/src/icons/_folder_map.svg.i
new file mode 100644
index 0000000..01703a5
Binary files /dev/null and b/.hg/store/data/src/icons/_folder_map.svg.i differ
diff --git a/.hg/store/data/src/icons/_font.svg.i b/.hg/store/data/src/icons/_font.svg.i
new file mode 100644
index 0000000..a111837
Binary files /dev/null and b/.hg/store/data/src/icons/_font.svg.i differ
diff --git a/.hg/store/data/src/icons/_from_map.svg.i b/.hg/store/data/src/icons/_from_map.svg.i
new file mode 100644
index 0000000..791497d
Binary files /dev/null and b/.hg/store/data/src/icons/_from_map.svg.i differ
diff --git a/.hg/store/data/src/icons/_gis_project.svg.i b/.hg/store/data/src/icons/_gis_project.svg.i
new file mode 100644
index 0000000..4d60f44
Binary files /dev/null and b/.hg/store/data/src/icons/_gis_project.svg.i differ
diff --git a/.hg/store/data/src/icons/_gpx_project.svg.i b/.hg/store/data/src/icons/_gpx_project.svg.i
new file mode 100644
index 0000000..94b1f7d
Binary files /dev/null and b/.hg/store/data/src/icons/_gpx_project.svg.i differ
diff --git a/.hg/store/data/src/icons/_grid.svg.i b/.hg/store/data/src/icons/_grid.svg.i
new file mode 100644
index 0000000..8e26579
Binary files /dev/null and b/.hg/store/data/src/icons/_grid.svg.i differ
diff --git a/.hg/store/data/src/icons/_grid_setup.svg.i b/.hg/store/data/src/icons/_grid_setup.svg.i
new file mode 100644
index 0000000..806c451
Binary files /dev/null and b/.hg/store/data/src/icons/_grid_setup.svg.i differ
diff --git a/.hg/store/data/src/icons/_grid_wizzard.svg.i b/.hg/store/data/src/icons/_grid_wizzard.svg.i
new file mode 100644
index 0000000..04c48c1
Binary files /dev/null and b/.hg/store/data/src/icons/_grid_wizzard.svg.i differ
diff --git a/.hg/store/data/src/icons/_help.svg.i b/.hg/store/data/src/icons/_help.svg.i
new file mode 100644
index 0000000..2d20510
Binary files /dev/null and b/.hg/store/data/src/icons/_help.svg.i differ
diff --git a/.hg/store/data/src/icons/_image.svg.i b/.hg/store/data/src/icons/_image.svg.i
new file mode 100644
index 0000000..2ebde3d
Binary files /dev/null and b/.hg/store/data/src/icons/_image.svg.i differ
diff --git a/.hg/store/data/src/icons/_info.svg.i b/.hg/store/data/src/icons/_info.svg.i
new file mode 100644
index 0000000..ee023eb
Binary files /dev/null and b/.hg/store/data/src/icons/_info.svg.i differ
diff --git a/.hg/store/data/src/icons/_left.svg.i b/.hg/store/data/src/icons/_left.svg.i
new file mode 100644
index 0000000..2a2be67
Binary files /dev/null and b/.hg/store/data/src/icons/_left.svg.i differ
diff --git a/.hg/store/data/src/icons/_line_move.svg.i b/.hg/store/data/src/icons/_line_move.svg.i
new file mode 100644
index 0000000..d8b4145
Binary files /dev/null and b/.hg/store/data/src/icons/_line_move.svg.i differ
diff --git a/.hg/store/data/src/icons/_link.svg.i b/.hg/store/data/src/icons/_link.svg.i
new file mode 100644
index 0000000..9812099
Binary files /dev/null and b/.hg/store/data/src/icons/_link.svg.i differ
diff --git a/.hg/store/data/src/icons/_load_g_i_s.svg.i b/.hg/store/data/src/icons/_load_g_i_s.svg.i
new file mode 100644
index 0000000..31dc8dc
Binary files /dev/null and b/.hg/store/data/src/icons/_load_g_i_s.svg.i differ
diff --git a/.hg/store/data/src/icons/_load_view.svg.i b/.hg/store/data/src/icons/_load_view.svg.i
new file mode 100644
index 0000000..b9b4da4
Binary files /dev/null and b/.hg/store/data/src/icons/_load_view.svg.i differ
diff --git a/.hg/store/data/src/icons/_lock.svg.i b/.hg/store/data/src/icons/_lock.svg.i
new file mode 100644
index 0000000..4febcf6
Binary files /dev/null and b/.hg/store/data/src/icons/_lock.svg.i differ
diff --git a/.hg/store/data/src/icons/_map.svg.i b/.hg/store/data/src/icons/_map.svg.i
new file mode 100644
index 0000000..ca69abb
Binary files /dev/null and b/.hg/store/data/src/icons/_map.svg.i differ
diff --git a/.hg/store/data/src/icons/_map_room.svg.i b/.hg/store/data/src/icons/_map_room.svg.i
new file mode 100644
index 0000000..6ef8e9b
Binary files /dev/null and b/.hg/store/data/src/icons/_map_room.svg.i differ
diff --git a/.hg/store/data/src/icons/_mime_dem_v_r_t.svg.i b/.hg/store/data/src/icons/_mime_dem_v_r_t.svg.i
new file mode 100644
index 0000000..420487c
Binary files /dev/null and b/.hg/store/data/src/icons/_mime_dem_v_r_t.svg.i differ
diff --git a/.hg/store/data/src/icons/_mime_i_m_g.svg.i b/.hg/store/data/src/icons/_mime_i_m_g.svg.i
new file mode 100644
index 0000000..d2639ba
Binary files /dev/null and b/.hg/store/data/src/icons/_mime_i_m_g.svg.i differ
diff --git a/.hg/store/data/src/icons/_mime_j_n_x.svg.i b/.hg/store/data/src/icons/_mime_j_n_x.svg.i
new file mode 100644
index 0000000..bd3f60c
Binary files /dev/null and b/.hg/store/data/src/icons/_mime_j_n_x.svg.i differ
diff --git a/.hg/store/data/src/icons/_mime_m_a_p.svg.i b/.hg/store/data/src/icons/_mime_m_a_p.svg.i
new file mode 100644
index 0000000..7b113eb
Binary files /dev/null and b/.hg/store/data/src/icons/_mime_m_a_p.svg.i differ
diff --git a/.hg/store/data/src/icons/_mime_r_m_a_p.svg.i b/.hg/store/data/src/icons/_mime_r_m_a_p.svg.i
new file mode 100644
index 0000000..ac0bfe3
Binary files /dev/null and b/.hg/store/data/src/icons/_mime_r_m_a_p.svg.i differ
diff --git a/.hg/store/data/src/icons/_mime_t_m_s.svg.i b/.hg/store/data/src/icons/_mime_t_m_s.svg.i
new file mode 100644
index 0000000..c803d46
Binary files /dev/null and b/.hg/store/data/src/icons/_mime_t_m_s.svg.i differ
diff --git a/.hg/store/data/src/icons/_mime_v_r_t.svg.i b/.hg/store/data/src/icons/_mime_v_r_t.svg.i
new file mode 100644
index 0000000..e41ce9e
Binary files /dev/null and b/.hg/store/data/src/icons/_mime_v_r_t.svg.i differ
diff --git a/.hg/store/data/src/icons/_mime_w_m_t_s.svg.i b/.hg/store/data/src/icons/_mime_w_m_t_s.svg.i
new file mode 100644
index 0000000..d6d86e5
Binary files /dev/null and b/.hg/store/data/src/icons/_mime_w_m_t_s.svg.i differ
diff --git a/.hg/store/data/src/icons/_mouse_wheel.svg.i b/.hg/store/data/src/icons/_mouse_wheel.svg.i
new file mode 100644
index 0000000..5a605db
Binary files /dev/null and b/.hg/store/data/src/icons/_mouse_wheel.svg.i differ
diff --git a/.hg/store/data/src/icons/_move.svg.i b/.hg/store/data/src/icons/_move.svg.i
new file mode 100644
index 0000000..0f45c90
Binary files /dev/null and b/.hg/store/data/src/icons/_move.svg.i differ
diff --git a/.hg/store/data/src/icons/_night_day.svg.i b/.hg/store/data/src/icons/_night_day.svg.i
new file mode 100644
index 0000000..749a006
Binary files /dev/null and b/.hg/store/data/src/icons/_night_day.svg.i differ
diff --git a/.hg/store/data/src/icons/_no_fix.svg.i b/.hg/store/data/src/icons/_no_fix.svg.i
new file mode 100644
index 0000000..e24863f
Binary files /dev/null and b/.hg/store/data/src/icons/_no_fix.svg.i differ
diff --git a/.hg/store/data/src/icons/_off.svg.i b/.hg/store/data/src/icons/_off.svg.i
new file mode 100644
index 0000000..cd14082
Binary files /dev/null and b/.hg/store/data/src/icons/_off.svg.i differ
diff --git a/.hg/store/data/src/icons/_opacity.svg.i b/.hg/store/data/src/icons/_opacity.svg.i
new file mode 100644
index 0000000..12d4634
Binary files /dev/null and b/.hg/store/data/src/icons/_opacity.svg.i differ
diff --git a/.hg/store/data/src/icons/_p_o_i_text.svg.i b/.hg/store/data/src/icons/_p_o_i_text.svg.i
new file mode 100644
index 0000000..e886dc8
Binary files /dev/null and b/.hg/store/data/src/icons/_p_o_i_text.svg.i differ
diff --git a/.hg/store/data/src/icons/_paste.svg.i b/.hg/store/data/src/icons/_paste.svg.i
new file mode 100644
index 0000000..6932719
Binary files /dev/null and b/.hg/store/data/src/icons/_paste.svg.i differ
diff --git a/.hg/store/data/src/icons/_path.svg.i b/.hg/store/data/src/icons/_path.svg.i
new file mode 100644
index 0000000..7f421b4
Binary files /dev/null and b/.hg/store/data/src/icons/_path.svg.i differ
diff --git a/.hg/store/data/src/icons/_path_blue.svg.i b/.hg/store/data/src/icons/_path_blue.svg.i
new file mode 100644
index 0000000..45b11a3
Binary files /dev/null and b/.hg/store/data/src/icons/_path_blue.svg.i differ
diff --git a/.hg/store/data/src/icons/_path_green.svg.i b/.hg/store/data/src/icons/_path_green.svg.i
new file mode 100644
index 0000000..9087231
Binary files /dev/null and b/.hg/store/data/src/icons/_path_green.svg.i differ
diff --git a/.hg/store/data/src/icons/_path_orange.svg.i b/.hg/store/data/src/icons/_path_orange.svg.i
new file mode 100644
index 0000000..3abf032
Binary files /dev/null and b/.hg/store/data/src/icons/_path_orange.svg.i differ
diff --git a/.hg/store/data/src/icons/_pattern.svg.i b/.hg/store/data/src/icons/_pattern.svg.i
new file mode 100644
index 0000000..9a3cfbd
Binary files /dev/null and b/.hg/store/data/src/icons/_pattern.svg.i differ
diff --git a/.hg/store/data/src/icons/_point_hide.svg.i b/.hg/store/data/src/icons/_point_hide.svg.i
new file mode 100644
index 0000000..57de429
Binary files /dev/null and b/.hg/store/data/src/icons/_point_hide.svg.i differ
diff --git a/.hg/store/data/src/icons/_point_move.svg.i b/.hg/store/data/src/icons/_point_move.svg.i
new file mode 100644
index 0000000..56a9681
Binary files /dev/null and b/.hg/store/data/src/icons/_point_move.svg.i differ
diff --git a/.hg/store/data/src/icons/_point_show.svg.i b/.hg/store/data/src/icons/_point_show.svg.i
new file mode 100644
index 0000000..7c5c0d2
Binary files /dev/null and b/.hg/store/data/src/icons/_point_show.svg.i differ
diff --git a/.hg/store/data/src/icons/_print.svg.i b/.hg/store/data/src/icons/_print.svg.i
new file mode 100644
index 0000000..83b2bb8
Binary files /dev/null and b/.hg/store/data/src/icons/_print.svg.i differ
diff --git a/.hg/store/data/src/icons/_q_map_shack.svg.i b/.hg/store/data/src/icons/_q_map_shack.svg.i
new file mode 100644
index 0000000..067f536
Binary files /dev/null and b/.hg/store/data/src/icons/_q_map_shack.svg.i differ
diff --git a/.hg/store/data/src/icons/_qms_project.svg.i b/.hg/store/data/src/icons/_qms_project.svg.i
new file mode 100644
index 0000000..10c5f43
Binary files /dev/null and b/.hg/store/data/src/icons/_qms_project.svg.i differ
diff --git a/.hg/store/data/src/icons/_redo.svg.i b/.hg/store/data/src/icons/_redo.svg.i
new file mode 100644
index 0000000..566b27a
Binary files /dev/null and b/.hg/store/data/src/icons/_redo.svg.i differ
diff --git a/.hg/store/data/src/icons/_reload_image.svg.i b/.hg/store/data/src/icons/_reload_image.svg.i
new file mode 100644
index 0000000..cf86727
Binary files /dev/null and b/.hg/store/data/src/icons/_reload_image.svg.i differ
diff --git a/.hg/store/data/src/icons/_reset.svg.i b/.hg/store/data/src/icons/_reset.svg.i
new file mode 100644
index 0000000..d714bfc
Binary files /dev/null and b/.hg/store/data/src/icons/_reset.svg.i differ
diff --git a/.hg/store/data/src/icons/_reverse.svg.i b/.hg/store/data/src/icons/_reverse.svg.i
new file mode 100644
index 0000000..8caa20d
Binary files /dev/null and b/.hg/store/data/src/icons/_reverse.svg.i differ
diff --git a/.hg/store/data/src/icons/_right.svg.i b/.hg/store/data/src/icons/_right.svg.i
new file mode 100644
index 0000000..3a7e285
Binary files /dev/null and b/.hg/store/data/src/icons/_right.svg.i differ
diff --git a/.hg/store/data/src/icons/_route.svg.i b/.hg/store/data/src/icons/_route.svg.i
new file mode 100644
index 0000000..5d7016f
Binary files /dev/null and b/.hg/store/data/src/icons/_route.svg.i differ
diff --git a/.hg/store/data/src/icons/_save_all_g_i_s.svg.i b/.hg/store/data/src/icons/_save_all_g_i_s.svg.i
new file mode 100644
index 0000000..b2cbf3c
Binary files /dev/null and b/.hg/store/data/src/icons/_save_all_g_i_s.svg.i differ
diff --git a/.hg/store/data/src/icons/_save_g_i_s.svg.i b/.hg/store/data/src/icons/_save_g_i_s.svg.i
new file mode 100644
index 0000000..fa414cb
Binary files /dev/null and b/.hg/store/data/src/icons/_save_g_i_s.svg.i differ
diff --git a/.hg/store/data/src/icons/_save_g_i_s_as.svg.i b/.hg/store/data/src/icons/_save_g_i_s_as.svg.i
new file mode 100644
index 0000000..c245f6c
Binary files /dev/null and b/.hg/store/data/src/icons/_save_g_i_s_as.svg.i differ
diff --git a/.hg/store/data/src/icons/_save_view.svg.i b/.hg/store/data/src/icons/_save_view.svg.i
new file mode 100644
index 0000000..3f7b418
Binary files /dev/null and b/.hg/store/data/src/icons/_save_view.svg.i differ
diff --git a/.hg/store/data/src/icons/_scale.svg.i b/.hg/store/data/src/icons/_scale.svg.i
new file mode 100644
index 0000000..c18dfd8
Binary files /dev/null and b/.hg/store/data/src/icons/_scale.svg.i differ
diff --git a/.hg/store/data/src/icons/_search_google.svg.i b/.hg/store/data/src/icons/_search_google.svg.i
new file mode 100644
index 0000000..57aae1b
Binary files /dev/null and b/.hg/store/data/src/icons/_search_google.svg.i differ
diff --git a/.hg/store/data/src/icons/_select_color.svg.i b/.hg/store/data/src/icons/_select_color.svg.i
new file mode 100644
index 0000000..21b950a
Binary files /dev/null and b/.hg/store/data/src/icons/_select_color.svg.i differ
diff --git a/.hg/store/data/src/icons/_select_range.svg.i b/.hg/store/data/src/icons/_select_range.svg.i
new file mode 100644
index 0000000..4524ea7
Binary files /dev/null and b/.hg/store/data/src/icons/_select_range.svg.i differ
diff --git a/.hg/store/data/src/icons/_set_ele.svg.i b/.hg/store/data/src/icons/_set_ele.svg.i
new file mode 100644
index 0000000..d9713f2
Binary files /dev/null and b/.hg/store/data/src/icons/_set_ele.svg.i differ
diff --git a/.hg/store/data/src/icons/_setup_map_workspace.svg.i b/.hg/store/data/src/icons/_setup_map_workspace.svg.i
new file mode 100644
index 0000000..867cb1c
Binary files /dev/null and b/.hg/store/data/src/icons/_setup_map_workspace.svg.i differ
diff --git a/.hg/store/data/src/icons/_start.svg.i b/.hg/store/data/src/icons/_start.svg.i
new file mode 100644
index 0000000..25bdbbc
Binary files /dev/null and b/.hg/store/data/src/icons/_start.svg.i differ
diff --git a/.hg/store/data/src/icons/_tainted.svg.i b/.hg/store/data/src/icons/_tainted.svg.i
new file mode 100644
index 0000000..cd030bb
Binary files /dev/null and b/.hg/store/data/src/icons/_tainted.svg.i differ
diff --git a/.hg/store/data/src/icons/_text_bold.svg.i b/.hg/store/data/src/icons/_text_bold.svg.i
new file mode 100644
index 0000000..54fb89c
Binary files /dev/null and b/.hg/store/data/src/icons/_text_bold.svg.i differ
diff --git a/.hg/store/data/src/icons/_text_center.svg.i b/.hg/store/data/src/icons/_text_center.svg.i
new file mode 100644
index 0000000..d981c37
Binary files /dev/null and b/.hg/store/data/src/icons/_text_center.svg.i differ
diff --git a/.hg/store/data/src/icons/_text_italic.svg.i b/.hg/store/data/src/icons/_text_italic.svg.i
new file mode 100644
index 0000000..6f81e05
Binary files /dev/null and b/.hg/store/data/src/icons/_text_italic.svg.i differ
diff --git a/.hg/store/data/src/icons/_text_justified.svg.i b/.hg/store/data/src/icons/_text_justified.svg.i
new file mode 100644
index 0000000..8e3eb93
Binary files /dev/null and b/.hg/store/data/src/icons/_text_justified.svg.i differ
diff --git a/.hg/store/data/src/icons/_text_left.svg.i b/.hg/store/data/src/icons/_text_left.svg.i
new file mode 100644
index 0000000..a9e36f6
Binary files /dev/null and b/.hg/store/data/src/icons/_text_left.svg.i differ
diff --git a/.hg/store/data/src/icons/_text_right.svg.i b/.hg/store/data/src/icons/_text_right.svg.i
new file mode 100644
index 0000000..05483cf
Binary files /dev/null and b/.hg/store/data/src/icons/_text_right.svg.i differ
diff --git a/.hg/store/data/src/icons/_text_underlined.svg.i b/.hg/store/data/src/icons/_text_underlined.svg.i
new file mode 100644
index 0000000..692e02c
Binary files /dev/null and b/.hg/store/data/src/icons/_text_underlined.svg.i differ
diff --git a/.hg/store/data/src/icons/_time.svg.i b/.hg/store/data/src/icons/_time.svg.i
new file mode 100644
index 0000000..add1e9e
Binary files /dev/null and b/.hg/store/data/src/icons/_time.svg.i differ
diff --git a/.hg/store/data/src/icons/_time_zone_setup.svg.i b/.hg/store/data/src/icons/_time_zone_setup.svg.i
new file mode 100644
index 0000000..0ac82ae
Binary files /dev/null and b/.hg/store/data/src/icons/_time_zone_setup.svg.i differ
diff --git a/.hg/store/data/src/icons/_to_bottom.svg.i b/.hg/store/data/src/icons/_to_bottom.svg.i
new file mode 100644
index 0000000..5889d3d
Binary files /dev/null and b/.hg/store/data/src/icons/_to_bottom.svg.i differ
diff --git a/.hg/store/data/src/icons/_to_top.svg.i b/.hg/store/data/src/icons/_to_top.svg.i
new file mode 100644
index 0000000..8c1d483
Binary files /dev/null and b/.hg/store/data/src/icons/_to_top.svg.i differ
diff --git a/.hg/store/data/src/icons/_tool_tip.svg.i b/.hg/store/data/src/icons/_tool_tip.svg.i
new file mode 100644
index 0000000..998f5bb
Binary files /dev/null and b/.hg/store/data/src/icons/_tool_tip.svg.i differ
diff --git a/.hg/store/data/src/icons/_track.svg.i b/.hg/store/data/src/icons/_track.svg.i
new file mode 100644
index 0000000..6d54de1
Binary files /dev/null and b/.hg/store/data/src/icons/_track.svg.i differ
diff --git a/.hg/store/data/src/icons/_trk_cut.svg.i b/.hg/store/data/src/icons/_trk_cut.svg.i
new file mode 100644
index 0000000..f171d2a
Binary files /dev/null and b/.hg/store/data/src/icons/_trk_cut.svg.i differ
diff --git a/.hg/store/data/src/icons/_trk_profile.svg.i b/.hg/store/data/src/icons/_trk_profile.svg.i
new file mode 100644
index 0000000..5427f17
Binary files /dev/null and b/.hg/store/data/src/icons/_trk_profile.svg.i differ
diff --git a/.hg/store/data/src/icons/_un_lock.svg.i b/.hg/store/data/src/icons/_un_lock.svg.i
new file mode 100644
index 0000000..87273fd
Binary files /dev/null and b/.hg/store/data/src/icons/_un_lock.svg.i differ
diff --git a/.hg/store/data/src/icons/_undo.svg.i b/.hg/store/data/src/icons/_undo.svg.i
new file mode 100644
index 0000000..bc31a62
Binary files /dev/null and b/.hg/store/data/src/icons/_undo.svg.i differ
diff --git a/.hg/store/data/src/icons/_unit_setup.svg.i b/.hg/store/data/src/icons/_unit_setup.svg.i
new file mode 100644
index 0000000..5cebc92
Binary files /dev/null and b/.hg/store/data/src/icons/_unit_setup.svg.i differ
diff --git a/.hg/store/data/src/icons/_up.svg.i b/.hg/store/data/src/icons/_up.svg.i
new file mode 100644
index 0000000..502cf83
Binary files /dev/null and b/.hg/store/data/src/icons/_up.svg.i differ
diff --git a/.hg/store/data/src/icons/_vrt_builder.svg.i b/.hg/store/data/src/icons/_vrt_builder.svg.i
new file mode 100644
index 0000000..5ca5cab
Binary files /dev/null and b/.hg/store/data/src/icons/_vrt_builder.svg.i differ
diff --git a/.hg/store/data/src/icons/_wpt_move.svg.i b/.hg/store/data/src/icons/_wpt_move.svg.i
new file mode 100644
index 0000000..93446cc
Binary files /dev/null and b/.hg/store/data/src/icons/_wpt_move.svg.i differ
diff --git a/.hg/store/data/src/icons/_wpt_proj.svg.i b/.hg/store/data/src/icons/_wpt_proj.svg.i
new file mode 100644
index 0000000..ad4aab5
Binary files /dev/null and b/.hg/store/data/src/icons/_wpt_proj.svg.i differ
diff --git a/.hg/store/data/src/icons/_wpt_prox.svg.i b/.hg/store/data/src/icons/_wpt_prox.svg.i
new file mode 100644
index 0000000..c0c408c
Binary files /dev/null and b/.hg/store/data/src/icons/_wpt_prox.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/_dist_icon.png.i b/.hg/store/data/src/icons/cache/32x32/_dist_icon.png.i
new file mode 100644
index 0000000..1e27007
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/_dist_icon.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/_o_c_m_logo.png.i b/.hg/store/data/src/icons/cache/32x32/_o_c_m_logo.png.i
new file mode 100644
index 0000000..7e73adb
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/_o_c_m_logo.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/_o_c_m_logo_small.png.i b/.hg/store/data/src/icons/cache/32x32/_o_c_m_logo_small.png.i
new file mode 100644
index 0000000..6378af0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/_o_c_m_logo_small.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/_search_icon.png.i b/.hg/store/data/src/icons/cache/32x32/_search_icon.png.i
new file mode 100644
index 0000000..b7ace5d
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/_search_icon.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/bluepin.png.i b/.hg/store/data/src/icons/cache/32x32/bluepin.png.i
new file mode 100644
index 0000000..da7fc1f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/bluepin.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/cito.png.i b/.hg/store/data/src/icons/cache/32x32/cito.png.i
new file mode 100644
index 0000000..f58a9d5
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/cito.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/corrected.png.i b/.hg/store/data/src/icons/cache/32x32/corrected.png.i
new file mode 100644
index 0000000..5e66f90
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/corrected.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/dnf.png.i b/.hg/store/data/src/icons/cache/32x32/dnf.png.i
new file mode 100644
index 0000000..e39c015
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/dnf.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/down__icon.png.i b/.hg/store/data/src/icons/cache/32x32/down__icon.png.i
new file mode 100644
index 0000000..0179a18
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/down__icon.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/earth.png.i b/.hg/store/data/src/icons/cache/32x32/earth.png.i
new file mode 100644
index 0000000..987c208
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/earth.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/event.png.i b/.hg/store/data/src/icons/cache/32x32/event.png.i
new file mode 100644
index 0000000..1c25d2f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/event.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/found.png.i b/.hg/store/data/src/icons/cache/32x32/found.png.i
new file mode 100644
index 0000000..358d7ac
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/found.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/ftf.png.i b/.hg/store/data/src/icons/cache/32x32/ftf.png.i
new file mode 100644
index 0000000..f17b41f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/ftf.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/greenpin.png.i b/.hg/store/data/src/icons/cache/32x32/greenpin.png.i
new file mode 100644
index 0000000..c92639b
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/greenpin.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/halfstar.png.i b/.hg/store/data/src/icons/cache/32x32/halfstar.png.i
new file mode 100644
index 0000000..ccbefba
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/halfstar.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/letterbox.png.i b/.hg/store/data/src/icons/cache/32x32/letterbox.png.i
new file mode 100644
index 0000000..65b684e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/letterbox.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/log.png.i b/.hg/store/data/src/icons/cache/32x32/log.png.i
new file mode 100644
index 0000000..6eeaffb
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/log.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/maxicon.png.i b/.hg/store/data/src/icons/cache/32x32/maxicon.png.i
new file mode 100644
index 0000000..15bacb4
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/maxicon.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/mega.png.i b/.hg/store/data/src/icons/cache/32x32/mega.png.i
new file mode 100644
index 0000000..342b924
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/mega.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/minicon.png.i b/.hg/store/data/src/icons/cache/32x32/minicon.png.i
new file mode 100644
index 0000000..15bacb4
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/minicon.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/multi.png.i b/.hg/store/data/src/icons/cache/32x32/multi.png.i
new file mode 100644
index 0000000..ef583ca
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/multi.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/needs__maintenance.png.i b/.hg/store/data/src/icons/cache/32x32/needs__maintenance.png.i
new file mode 100644
index 0000000..10ae5ec
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/needs__maintenance.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/other.png.i b/.hg/store/data/src/icons/cache/32x32/other.png.i
new file mode 100644
index 0000000..96a26ee
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/other.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/parking.png.i b/.hg/store/data/src/icons/cache/32x32/parking.png.i
new file mode 100644
index 0000000..b9bbd17
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/parking.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/pushpin.png.i b/.hg/store/data/src/icons/cache/32x32/pushpin.png.i
new file mode 100644
index 0000000..f289023
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/pushpin.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/restore.png.i b/.hg/store/data/src/icons/cache/32x32/restore.png.i
new file mode 100644
index 0000000..b526338
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/restore.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/star.png.i b/.hg/store/data/src/icons/cache/32x32/star.png.i
new file mode 100644
index 0000000..79cfd9f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/star.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/star__empty.png.i b/.hg/store/data/src/icons/cache/32x32/star__empty.png.i
new file mode 100644
index 0000000..177fa31
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/star__empty.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/traditional.png.i b/.hg/store/data/src/icons/cache/32x32/traditional.png.i
new file mode 100644
index 0000000..6378af0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/traditional.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/trailhead.png.i b/.hg/store/data/src/icons/cache/32x32/trailhead.png.i
new file mode 100644
index 0000000..9ac5fe0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/trailhead.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/treasure.png.i b/.hg/store/data/src/icons/cache/32x32/treasure.png.i
new file mode 100644
index 0000000..1fc2ac2
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/treasure.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/unknown.png.i b/.hg/store/data/src/icons/cache/32x32/unknown.png.i
new file mode 100644
index 0000000..22a2656
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/unknown.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/up__icon.png.i b/.hg/store/data/src/icons/cache/32x32/up__icon.png.i
new file mode 100644
index 0000000..08ffabc
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/up__icon.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/virtual.png.i b/.hg/store/data/src/icons/cache/32x32/virtual.png.i
new file mode 100644
index 0000000..d7b2c79
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/virtual.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/waypoint-flag-red.png.i b/.hg/store/data/src/icons/cache/32x32/waypoint-flag-red.png.i
new file mode 100644
index 0000000..c9b9a47
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/waypoint-flag-red.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/webcam.png.i b/.hg/store/data/src/icons/cache/32x32/webcam.png.i
new file mode 100644
index 0000000..cd20f87
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/webcam.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/wherigo.png.i b/.hg/store/data/src/icons/cache/32x32/wherigo.png.i
new file mode 100644
index 0000000..2f47d56
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/wherigo.png.i differ
diff --git a/.hg/store/data/src/icons/cache/32x32/write__note.png.i b/.hg/store/data/src/icons/cache/32x32/write__note.png.i
new file mode 100644
index 0000000..6f7d644
Binary files /dev/null and b/.hg/store/data/src/icons/cache/32x32/write__note.png.i differ
diff --git a/.hg/store/data/src/icons/cache/_apache-2.0.i b/.hg/store/data/src/icons/cache/_apache-2.0.i
new file mode 100644
index 0000000..05fa2ed
Binary files /dev/null and b/.hg/store/data/src/icons/cache/_apache-2.0.i differ
diff --git a/.hg/store/data/src/icons/cache/_c_o_p_y_r_i_g_h_t.i b/.hg/store/data/src/icons/cache/_c_o_p_y_r_i_g_h_t.i
new file mode 100644
index 0000000..908fd0a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/_c_o_p_y_r_i_g_h_t.i differ
diff --git a/.hg/store/data/src/icons/cache/_dist_icon.svg.i b/.hg/store/data/src/icons/cache/_dist_icon.svg.i
new file mode 100644
index 0000000..5819cfb
Binary files /dev/null and b/.hg/store/data/src/icons/cache/_dist_icon.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/_o_c_m_logo.svg.i b/.hg/store/data/src/icons/cache/_o_c_m_logo.svg.i
new file mode 100644
index 0000000..7ed86bf
Binary files /dev/null and b/.hg/store/data/src/icons/cache/_o_c_m_logo.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/_o_c_m_logo_small.svg.i b/.hg/store/data/src/icons/cache/_o_c_m_logo_small.svg.i
new file mode 100644
index 0000000..6184877
Binary files /dev/null and b/.hg/store/data/src/icons/cache/_o_c_m_logo_small.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/_search_icon.svg.i b/.hg/store/data/src/icons/cache/_search_icon.svg.i
new file mode 100644
index 0000000..5d18d26
Binary files /dev/null and b/.hg/store/data/src/icons/cache/_search_icon.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___abandoned___structure.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___abandoned___structure.svg.i
new file mode 100644
index 0000000..bebc10e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___abandoned___structure.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___abandoned__mines.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___abandoned__mines.svg.i
new file mode 100644
index 0000000..351cbc0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___abandoned__mines.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___access__or__parking__fee.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___access__or__parking__fee.svg.i
new file mode 100644
index 0000000..b63570d
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___access__or__parking__fee.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___available__at__all__times.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___available__at__all__times.svg.i
new file mode 100644
index 0000000..52a2396
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___available__at__all__times.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___available__during__winter.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___available__during__winter.svg.i
new file mode 100644
index 0000000..f485609
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___available__during__winter.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___bicycles.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___bicycles.svg.i
new file mode 100644
index 0000000..717d82e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___bicycles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___boat.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___boat.svg.i
new file mode 100644
index 0000000..9bc98c9
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___boat.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___campfires.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___campfires.svg.i
new file mode 100644
index 0000000..4c3694d
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___campfires.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___camping__available.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___camping__available.svg.i
new file mode 100644
index 0000000..76f9c98
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___camping__available.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___cliff______falling__rocks.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___cliff______falling__rocks.svg.i
new file mode 100644
index 0000000..f8746c4
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___cliff______falling__rocks.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___climbing__gear.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___climbing__gear.svg.i
new file mode 100644
index 0000000..0aa1e34
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___climbing__gear.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___cross___country___skis.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___cross___country___skis.svg.i
new file mode 100644
index 0000000..4b9d1de
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___cross___country___skis.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___dangerous___animals.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___dangerous___animals.svg.i
new file mode 100644
index 0000000..6b61eef
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___dangerous___animals.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___dangerous__area.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___dangerous__area.svg.i
new file mode 100644
index 0000000..d83e021
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___dangerous__area.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___difficult__climbing.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___difficult__climbing.svg.i
new file mode 100644
index 0000000..6ab3d1b
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___difficult__climbing.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___dogs.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___dogs.svg.i
new file mode 100644
index 0000000..216e3a8
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___dogs.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___drinking__water__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___drinking__water__nearby.svg.i
new file mode 100644
index 0000000..0b845d1
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___drinking__water__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___field___puzzle.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___field___puzzle.svg.i
new file mode 100644
index 0000000..ce20d8c
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___field___puzzle.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___flashlight__required.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___flashlight__required.svg.i
new file mode 100644
index 0000000..391fa84
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___flashlight__required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___food___nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___food___nearby.svg.i
new file mode 100644
index 0000000..e7ddc84
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___food___nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___fuel___nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___fuel___nearby.svg.i
new file mode 100644
index 0000000..cd66a71
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___fuel___nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___horses.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___horses.svg.i
new file mode 100644
index 0000000..3ca5477
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___horses.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___hunting.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___hunting.svg.i
new file mode 100644
index 0000000..1caa9e2
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___hunting.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___long___hike__(+10km).svg.i b/.hg/store/data/src/icons/cache/attributes/dis___long___hike__(+10km).svg.i
new file mode 100644
index 0000000..140959f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___long___hike__(+10km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___may__require__swimming.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___may__require__swimming.svg.i
new file mode 100644
index 0000000..dc4f6db
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___may__require__swimming.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___may__require__wading.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___may__require__wading.svg.i
new file mode 100644
index 0000000..d7b5611
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___may__require__wading.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___medium__hike__(1km-10km).svg.i b/.hg/store/data/src/icons/cache/attributes/dis___medium__hike__(1km-10km).svg.i
new file mode 100644
index 0000000..2bca9d3
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___medium__hike__(1km-10km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___motorcycles.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___motorcycles.svg.i
new file mode 100644
index 0000000..457ab84
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___motorcycles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___needs__maintenance.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___needs__maintenance.svg.i
new file mode 100644
index 0000000..4e1cb7b
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___needs__maintenance.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___night___cache.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___night___cache.svg.i
new file mode 100644
index 0000000..73760c6
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___night___cache.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___off-road__vehicles.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___off-road__vehicles.svg.i
new file mode 100644
index 0000000..f16aeb8
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___off-road__vehicles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___park__and___grab.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___park__and___grab.svg.i
new file mode 100644
index 0000000..7e0f6fb
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___park__and___grab.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___parking__available.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___parking__available.svg.i
new file mode 100644
index 0000000..430c368
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___parking__available.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___picnic__tables__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___picnic__tables__nearby.svg.i
new file mode 100644
index 0000000..1a99ad5
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___picnic__tables__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___poison__plants.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___poison__plants.svg.i
new file mode 100644
index 0000000..2eed23f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___poison__plants.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___public__restrooms__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___public__restrooms__nearby.svg.i
new file mode 100644
index 0000000..63165ce
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___public__restrooms__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___public__transportation.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___public__transportation.svg.i
new file mode 100644
index 0000000..c485296
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___public__transportation.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___quads.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___quads.svg.i
new file mode 100644
index 0000000..11082c0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___quads.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___recommended__at__night.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___recommended__at__night.svg.i
new file mode 100644
index 0000000..c4153a5
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___recommended__at__night.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___recommended__for__kids.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___recommended__for__kids.svg.i
new file mode 100644
index 0000000..13c329d
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___recommended__for__kids.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___scenic__view.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___scenic__view.svg.i
new file mode 100644
index 0000000..051d93c
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___scenic__view.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___scuba__gear.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___scuba__gear.svg.i
new file mode 100644
index 0000000..9b795e1
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___scuba__gear.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___short__hike__(less__than__1km).svg.i b/.hg/store/data/src/icons/cache/attributes/dis___short__hike__(less__than__1km).svg.i
new file mode 100644
index 0000000..bfeecf2
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___short__hike__(less__than__1km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___significant___hike.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___significant___hike.svg.i
new file mode 100644
index 0000000..062f777
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___significant___hike.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___snowmobiles.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___snowmobiles.svg.i
new file mode 100644
index 0000000..569973f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___snowmobiles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___snowshoes.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___snowshoes.svg.i
new file mode 100644
index 0000000..65240d4
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___snowshoes.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___special___tool___required.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___special___tool___required.svg.i
new file mode 100644
index 0000000..308682c
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___special___tool___required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___stealth__required.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___stealth__required.svg.i
new file mode 100644
index 0000000..99fa443
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___stealth__required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___stroller__accessible.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___stroller__accessible.svg.i
new file mode 100644
index 0000000..a909ea9
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___stroller__accessible.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___takes__less__than__an__hour.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___takes__less__than__an__hour.svg.i
new file mode 100644
index 0000000..84d21bd
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___takes__less__than__an__hour.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___telephone__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___telephone__nearby.svg.i
new file mode 100644
index 0000000..7dd4a10
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___telephone__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___thorns.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___thorns.svg.i
new file mode 100644
index 0000000..889d1b3
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___thorns.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___ticks.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___ticks.svg.i
new file mode 100644
index 0000000..fe709ea
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___ticks.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___truck___driver___r_v.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___truck___driver___r_v.svg.i
new file mode 100644
index 0000000..7739777
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___truck___driver___r_v.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___u_v___light___required.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___u_v___light___required.svg.i
new file mode 100644
index 0000000..c5cda0e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___u_v___light___required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___watch__for__livestock.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___watch__for__livestock.svg.i
new file mode 100644
index 0000000..f11c307
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___watch__for__livestock.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___wheelchair__accessible.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___wheelchair__accessible.svg.i
new file mode 100644
index 0000000..7c525b3
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___wheelchair__accessible.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/dis___wireless___beacon.svg.i b/.hg/store/data/src/icons/cache/attributes/dis___wireless___beacon.svg.i
new file mode 100644
index 0000000..95bb697
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/dis___wireless___beacon.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___abandoned___structure.svg.i b/.hg/store/data/src/icons/cache/attributes/no___abandoned___structure.svg.i
new file mode 100644
index 0000000..162ae97
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___abandoned___structure.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___available__at__all__times.svg.i b/.hg/store/data/src/icons/cache/attributes/no___available__at__all__times.svg.i
new file mode 100644
index 0000000..fa8c2bd
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___available__at__all__times.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___available__during__winter.svg.i b/.hg/store/data/src/icons/cache/attributes/no___available__during__winter.svg.i
new file mode 100644
index 0000000..109bb23
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___available__during__winter.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___bicycles.svg.i b/.hg/store/data/src/icons/cache/attributes/no___bicycles.svg.i
new file mode 100644
index 0000000..f7883c0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___bicycles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___campfires.svg.i b/.hg/store/data/src/icons/cache/attributes/no___campfires.svg.i
new file mode 100644
index 0000000..2c9f141
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___campfires.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___camping__available.svg.i b/.hg/store/data/src/icons/cache/attributes/no___camping__available.svg.i
new file mode 100644
index 0000000..afa2800
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___camping__available.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___difficult__climbing.svg.i b/.hg/store/data/src/icons/cache/attributes/no___difficult__climbing.svg.i
new file mode 100644
index 0000000..0c75ff7
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___difficult__climbing.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___dogs.svg.i b/.hg/store/data/src/icons/cache/attributes/no___dogs.svg.i
new file mode 100644
index 0000000..57d34dc
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___dogs.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___drinking__water__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/no___drinking__water__nearby.svg.i
new file mode 100644
index 0000000..19822c8
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___drinking__water__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___food___nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/no___food___nearby.svg.i
new file mode 100644
index 0000000..8714807
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___food___nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___fuel___nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/no___fuel___nearby.svg.i
new file mode 100644
index 0000000..e92607a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___fuel___nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___horses.svg.i b/.hg/store/data/src/icons/cache/attributes/no___horses.svg.i
new file mode 100644
index 0000000..a23da64
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___horses.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___long___hike__(+10km).svg.i b/.hg/store/data/src/icons/cache/attributes/no___long___hike__(+10km).svg.i
new file mode 100644
index 0000000..e941d74
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___long___hike__(+10km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___medium__hike__(1km-10km).svg.i b/.hg/store/data/src/icons/cache/attributes/no___medium__hike__(1km-10km).svg.i
new file mode 100644
index 0000000..4942001
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___medium__hike__(1km-10km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___motorcycles.svg.i b/.hg/store/data/src/icons/cache/attributes/no___motorcycles.svg.i
new file mode 100644
index 0000000..10d56fa
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___motorcycles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___night___cache.svg.i b/.hg/store/data/src/icons/cache/attributes/no___night___cache.svg.i
new file mode 100644
index 0000000..95eb8d7
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___night___cache.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___off-road__vehicles.svg.i b/.hg/store/data/src/icons/cache/attributes/no___off-road__vehicles.svg.i
new file mode 100644
index 0000000..1700b12
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___off-road__vehicles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___park__and___grab.svg.i b/.hg/store/data/src/icons/cache/attributes/no___park__and___grab.svg.i
new file mode 100644
index 0000000..64e9dc3
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___park__and___grab.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___parking__available.svg.i b/.hg/store/data/src/icons/cache/attributes/no___parking__available.svg.i
new file mode 100644
index 0000000..33037cf
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___parking__available.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___picnic__tables__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/no___picnic__tables__nearby.svg.i
new file mode 100644
index 0000000..e2e8eeb
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___picnic__tables__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___poison__plants.svg.i b/.hg/store/data/src/icons/cache/attributes/no___poison__plants.svg.i
new file mode 100644
index 0000000..4a8d4e9
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___poison__plants.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___public__restrooms__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/no___public__restrooms__nearby.svg.i
new file mode 100644
index 0000000..2803175
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___public__restrooms__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___quads.svg.i b/.hg/store/data/src/icons/cache/attributes/no___quads.svg.i
new file mode 100644
index 0000000..89b8262
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___quads.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___recommended__at__night.svg.i b/.hg/store/data/src/icons/cache/attributes/no___recommended__at__night.svg.i
new file mode 100644
index 0000000..ccab50a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___recommended__at__night.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___recommended__for__kids.svg.i b/.hg/store/data/src/icons/cache/attributes/no___recommended__for__kids.svg.i
new file mode 100644
index 0000000..bf04fe7
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___recommended__for__kids.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___short__hike__(less__than__1km).svg.i b/.hg/store/data/src/icons/cache/attributes/no___short__hike__(less__than__1km).svg.i
new file mode 100644
index 0000000..70275a0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___short__hike__(less__than__1km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___significant___hike.svg.i b/.hg/store/data/src/icons/cache/attributes/no___significant___hike.svg.i
new file mode 100644
index 0000000..99e2b15
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___significant___hike.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___snowmobiles.svg.i b/.hg/store/data/src/icons/cache/attributes/no___snowmobiles.svg.i
new file mode 100644
index 0000000..2aff88e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___snowmobiles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___stealth__required.svg.i b/.hg/store/data/src/icons/cache/attributes/no___stealth__required.svg.i
new file mode 100644
index 0000000..adfcb3e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___stealth__required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___stroller__accessible.svg.i b/.hg/store/data/src/icons/cache/attributes/no___stroller__accessible.svg.i
new file mode 100644
index 0000000..9d3274a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___stroller__accessible.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___takes__less__than__an__hour.svg.i b/.hg/store/data/src/icons/cache/attributes/no___takes__less__than__an__hour.svg.i
new file mode 100644
index 0000000..2eefef4
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___takes__less__than__an__hour.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___telephone__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/no___telephone__nearby.svg.i
new file mode 100644
index 0000000..51e2675
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___telephone__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___truck___driver___r_v.svg.i b/.hg/store/data/src/icons/cache/attributes/no___truck___driver___r_v.svg.i
new file mode 100644
index 0000000..81770a8
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___truck___driver___r_v.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/no___wheelchair__accessible.svg.i b/.hg/store/data/src/icons/cache/attributes/no___wheelchair__accessible.svg.i
new file mode 100644
index 0000000..1317f76
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/no___wheelchair__accessible.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___abandoned___structure.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___abandoned___structure.svg.i
new file mode 100644
index 0000000..a82bacb
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___abandoned___structure.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___abandoned__mines.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___abandoned__mines.svg.i
new file mode 100644
index 0000000..d070906
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___abandoned__mines.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___access__or__parking__fee.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___access__or__parking__fee.svg.i
new file mode 100644
index 0000000..8115de3
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___access__or__parking__fee.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___available__at__all__times.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___available__at__all__times.svg.i
new file mode 100644
index 0000000..30c86cc
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___available__at__all__times.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___available__during__winter.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___available__during__winter.svg.i
new file mode 100644
index 0000000..a205601
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___available__during__winter.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___bicycles.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___bicycles.svg.i
new file mode 100644
index 0000000..12c8fa8
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___bicycles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___boat.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___boat.svg.i
new file mode 100644
index 0000000..8eda01f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___boat.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___campfires.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___campfires.svg.i
new file mode 100644
index 0000000..f342727
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___campfires.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___camping__available.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___camping__available.svg.i
new file mode 100644
index 0000000..bfd7a16
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___camping__available.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___cliff______falling__rocks.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___cliff______falling__rocks.svg.i
new file mode 100644
index 0000000..77b26dc
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___cliff______falling__rocks.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___climbing__gear.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___climbing__gear.svg.i
new file mode 100644
index 0000000..9c8f5a0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___climbing__gear.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___cross___country___skis.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___cross___country___skis.svg.i
new file mode 100644
index 0000000..ed3b509
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___cross___country___skis.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___dangerous___animals.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___dangerous___animals.svg.i
new file mode 100644
index 0000000..ca0f949
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___dangerous___animals.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___dangerous__area.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___dangerous__area.svg.i
new file mode 100644
index 0000000..b3b789a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___dangerous__area.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___difficult__climbing.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___difficult__climbing.svg.i
new file mode 100644
index 0000000..91f852f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___difficult__climbing.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___dogs.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___dogs.svg.i
new file mode 100644
index 0000000..f434372
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___dogs.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___drinking__water__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___drinking__water__nearby.svg.i
new file mode 100644
index 0000000..bcf1d18
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___drinking__water__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___field___puzzle.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___field___puzzle.svg.i
new file mode 100644
index 0000000..6839c2a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___field___puzzle.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___flashlight__required.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___flashlight__required.svg.i
new file mode 100644
index 0000000..88cea46
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___flashlight__required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___food___nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___food___nearby.svg.i
new file mode 100644
index 0000000..3b416d8
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___food___nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___fuel___nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___fuel___nearby.svg.i
new file mode 100644
index 0000000..e369335
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___fuel___nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___horses.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___horses.svg.i
new file mode 100644
index 0000000..09b4da1
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___horses.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___hunting.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___hunting.svg.i
new file mode 100644
index 0000000..9e3f425
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___hunting.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___long___hike__(+10km).svg.i b/.hg/store/data/src/icons/cache/attributes/yes___long___hike__(+10km).svg.i
new file mode 100644
index 0000000..77c9c0e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___long___hike__(+10km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___may__require__swimming.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___may__require__swimming.svg.i
new file mode 100644
index 0000000..863d0ed
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___may__require__swimming.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___may__require__wading.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___may__require__wading.svg.i
new file mode 100644
index 0000000..e8d2c48
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___may__require__wading.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___medium__hike__(1km-10km).svg.i b/.hg/store/data/src/icons/cache/attributes/yes___medium__hike__(1km-10km).svg.i
new file mode 100644
index 0000000..605ce83
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___medium__hike__(1km-10km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___motorcycles.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___motorcycles.svg.i
new file mode 100644
index 0000000..dba4bc7
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___motorcycles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___needs__maintenance.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___needs__maintenance.svg.i
new file mode 100644
index 0000000..3fe4ff7
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___needs__maintenance.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___night___cache.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___night___cache.svg.i
new file mode 100644
index 0000000..cae159a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___night___cache.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___off-road__vehicles.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___off-road__vehicles.svg.i
new file mode 100644
index 0000000..ecf0e85
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___off-road__vehicles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___park__and___grab.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___park__and___grab.svg.i
new file mode 100644
index 0000000..87f33a7
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___park__and___grab.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___parking__available.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___parking__available.svg.i
new file mode 100644
index 0000000..8697220
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___parking__available.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___picnic__tables__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___picnic__tables__nearby.svg.i
new file mode 100644
index 0000000..d5e65e6
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___picnic__tables__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___poison__plants.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___poison__plants.svg.i
new file mode 100644
index 0000000..59c97c0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___poison__plants.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___public__restrooms__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___public__restrooms__nearby.svg.i
new file mode 100644
index 0000000..e133bff
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___public__restrooms__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___public__transportation.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___public__transportation.svg.i
new file mode 100644
index 0000000..cd92dea
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___public__transportation.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___quads.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___quads.svg.i
new file mode 100644
index 0000000..5d4d461
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___quads.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___recommended__at__night.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___recommended__at__night.svg.i
new file mode 100644
index 0000000..8c52e7a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___recommended__at__night.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___recommended__for__kids.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___recommended__for__kids.svg.i
new file mode 100644
index 0000000..c7d2e94
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___recommended__for__kids.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___scenic__view.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___scenic__view.svg.i
new file mode 100644
index 0000000..4c81b49
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___scenic__view.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___scuba__gear.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___scuba__gear.svg.i
new file mode 100644
index 0000000..334492e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___scuba__gear.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___short__hike__(less__than__1km).svg.i b/.hg/store/data/src/icons/cache/attributes/yes___short__hike__(less__than__1km).svg.i
new file mode 100644
index 0000000..671b124
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___short__hike__(less__than__1km).svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___significant___hike.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___significant___hike.svg.i
new file mode 100644
index 0000000..2ec2a33
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___significant___hike.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___snowmobiles.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___snowmobiles.svg.i
new file mode 100644
index 0000000..fd2b782
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___snowmobiles.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___snowshoes.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___snowshoes.svg.i
new file mode 100644
index 0000000..1533dd6
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___snowshoes.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___special___tool___required.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___special___tool___required.svg.i
new file mode 100644
index 0000000..35a4c7c
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___special___tool___required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___stealth__required.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___stealth__required.svg.i
new file mode 100644
index 0000000..6068440
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___stealth__required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___stroller__accessible.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___stroller__accessible.svg.i
new file mode 100644
index 0000000..b37e6ec
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___stroller__accessible.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___takes__less__than__an__hour.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___takes__less__than__an__hour.svg.i
new file mode 100644
index 0000000..59bf177
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___takes__less__than__an__hour.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___telephone__nearby.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___telephone__nearby.svg.i
new file mode 100644
index 0000000..8909e6f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___telephone__nearby.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___thorns.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___thorns.svg.i
new file mode 100644
index 0000000..393f8c2
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___thorns.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___ticks.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___ticks.svg.i
new file mode 100644
index 0000000..6bc44e8
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___ticks.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___truck___driver___r_v.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___truck___driver___r_v.svg.i
new file mode 100644
index 0000000..4115eba
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___truck___driver___r_v.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___u_v___light___required.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___u_v___light___required.svg.i
new file mode 100644
index 0000000..f2f57cc
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___u_v___light___required.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___watch__for__livestock.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___watch__for__livestock.svg.i
new file mode 100644
index 0000000..2f34184
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___watch__for__livestock.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___wheelchair__accessible.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___wheelchair__accessible.svg.i
new file mode 100644
index 0000000..30e4265
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___wheelchair__accessible.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/attributes/yes___wireless___beacon.svg.i b/.hg/store/data/src/icons/cache/attributes/yes___wireless___beacon.svg.i
new file mode 100644
index 0000000..d524277
Binary files /dev/null and b/.hg/store/data/src/icons/cache/attributes/yes___wireless___beacon.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/bluepin.svg.i b/.hg/store/data/src/icons/cache/bluepin.svg.i
new file mode 100644
index 0000000..f465141
Binary files /dev/null and b/.hg/store/data/src/icons/cache/bluepin.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/cito.svg.i b/.hg/store/data/src/icons/cache/cito.svg.i
new file mode 100644
index 0000000..d91ca09
Binary files /dev/null and b/.hg/store/data/src/icons/cache/cito.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/corrected.svg.i b/.hg/store/data/src/icons/cache/corrected.svg.i
new file mode 100644
index 0000000..67b4119
Binary files /dev/null and b/.hg/store/data/src/icons/cache/corrected.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/dnf.svg.i b/.hg/store/data/src/icons/cache/dnf.svg.i
new file mode 100644
index 0000000..a8ef2a0
Binary files /dev/null and b/.hg/store/data/src/icons/cache/dnf.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/down__icon.svg.i b/.hg/store/data/src/icons/cache/down__icon.svg.i
new file mode 100644
index 0000000..f4d6b4b
Binary files /dev/null and b/.hg/store/data/src/icons/cache/down__icon.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/earth.svg.i b/.hg/store/data/src/icons/cache/earth.svg.i
new file mode 100644
index 0000000..92677b2
Binary files /dev/null and b/.hg/store/data/src/icons/cache/earth.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/event.svg.i b/.hg/store/data/src/icons/cache/event.svg.i
new file mode 100644
index 0000000..0ea4b56
Binary files /dev/null and b/.hg/store/data/src/icons/cache/event.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/found.svg.i b/.hg/store/data/src/icons/cache/found.svg.i
new file mode 100644
index 0000000..6519354
Binary files /dev/null and b/.hg/store/data/src/icons/cache/found.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/ftf.svg.i b/.hg/store/data/src/icons/cache/ftf.svg.i
new file mode 100644
index 0000000..52f5d03
Binary files /dev/null and b/.hg/store/data/src/icons/cache/ftf.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/greenpin.svg.i b/.hg/store/data/src/icons/cache/greenpin.svg.i
new file mode 100644
index 0000000..470689d
Binary files /dev/null and b/.hg/store/data/src/icons/cache/greenpin.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/halfstar.svg.i b/.hg/store/data/src/icons/cache/halfstar.svg.i
new file mode 100644
index 0000000..0a87d88
Binary files /dev/null and b/.hg/store/data/src/icons/cache/halfstar.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/letterbox.svg.i b/.hg/store/data/src/icons/cache/letterbox.svg.i
new file mode 100644
index 0000000..35e2093
Binary files /dev/null and b/.hg/store/data/src/icons/cache/letterbox.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/log.svg.i b/.hg/store/data/src/icons/cache/log.svg.i
new file mode 100644
index 0000000..3659296
Binary files /dev/null and b/.hg/store/data/src/icons/cache/log.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/makeicons.i b/.hg/store/data/src/icons/cache/makeicons.i
new file mode 100644
index 0000000..be7679e
Binary files /dev/null and b/.hg/store/data/src/icons/cache/makeicons.i differ
diff --git a/.hg/store/data/src/icons/cache/maxicon.svg.i b/.hg/store/data/src/icons/cache/maxicon.svg.i
new file mode 100644
index 0000000..892e5b5
Binary files /dev/null and b/.hg/store/data/src/icons/cache/maxicon.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/mega.svg.i b/.hg/store/data/src/icons/cache/mega.svg.i
new file mode 100644
index 0000000..64f8d24
Binary files /dev/null and b/.hg/store/data/src/icons/cache/mega.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/minicon.svg.i b/.hg/store/data/src/icons/cache/minicon.svg.i
new file mode 100644
index 0000000..302245a
Binary files /dev/null and b/.hg/store/data/src/icons/cache/minicon.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/multi.svg.i b/.hg/store/data/src/icons/cache/multi.svg.i
new file mode 100644
index 0000000..bbc4d45
Binary files /dev/null and b/.hg/store/data/src/icons/cache/multi.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/needs__maintenance.svg.i b/.hg/store/data/src/icons/cache/needs__maintenance.svg.i
new file mode 100644
index 0000000..45a0af5
Binary files /dev/null and b/.hg/store/data/src/icons/cache/needs__maintenance.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/other.svg.i b/.hg/store/data/src/icons/cache/other.svg.i
new file mode 100644
index 0000000..602ee59
Binary files /dev/null and b/.hg/store/data/src/icons/cache/other.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/parking.svg.i b/.hg/store/data/src/icons/cache/parking.svg.i
new file mode 100644
index 0000000..3600aeb
Binary files /dev/null and b/.hg/store/data/src/icons/cache/parking.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/pushpin.svg.i b/.hg/store/data/src/icons/cache/pushpin.svg.i
new file mode 100644
index 0000000..07fd5da
Binary files /dev/null and b/.hg/store/data/src/icons/cache/pushpin.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/restore.svg.i b/.hg/store/data/src/icons/cache/restore.svg.i
new file mode 100644
index 0000000..0547c03
Binary files /dev/null and b/.hg/store/data/src/icons/cache/restore.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/star.svg.i b/.hg/store/data/src/icons/cache/star.svg.i
new file mode 100644
index 0000000..35b11d1
Binary files /dev/null and b/.hg/store/data/src/icons/cache/star.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/star__empty.svg.i b/.hg/store/data/src/icons/cache/star__empty.svg.i
new file mode 100644
index 0000000..bb99d66
Binary files /dev/null and b/.hg/store/data/src/icons/cache/star__empty.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/traditional.svg.i b/.hg/store/data/src/icons/cache/traditional.svg.i
new file mode 100644
index 0000000..6184877
Binary files /dev/null and b/.hg/store/data/src/icons/cache/traditional.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/trailhead.svg.i b/.hg/store/data/src/icons/cache/trailhead.svg.i
new file mode 100644
index 0000000..c85e746
Binary files /dev/null and b/.hg/store/data/src/icons/cache/trailhead.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/treasure.svg.i b/.hg/store/data/src/icons/cache/treasure.svg.i
new file mode 100644
index 0000000..99d8109
Binary files /dev/null and b/.hg/store/data/src/icons/cache/treasure.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/unknown.svg.i b/.hg/store/data/src/icons/cache/unknown.svg.i
new file mode 100644
index 0000000..2d98f33
Binary files /dev/null and b/.hg/store/data/src/icons/cache/unknown.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/up__icon.svg.i b/.hg/store/data/src/icons/cache/up__icon.svg.i
new file mode 100644
index 0000000..2d7349c
Binary files /dev/null and b/.hg/store/data/src/icons/cache/up__icon.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/virtual.svg.i b/.hg/store/data/src/icons/cache/virtual.svg.i
new file mode 100644
index 0000000..4d39b9c
Binary files /dev/null and b/.hg/store/data/src/icons/cache/virtual.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/waypoint-flag-red.svg.i b/.hg/store/data/src/icons/cache/waypoint-flag-red.svg.i
new file mode 100644
index 0000000..b8d842f
Binary files /dev/null and b/.hg/store/data/src/icons/cache/waypoint-flag-red.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/webcam.svg.i b/.hg/store/data/src/icons/cache/webcam.svg.i
new file mode 100644
index 0000000..b93b0c6
Binary files /dev/null and b/.hg/store/data/src/icons/cache/webcam.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/wherigo.svg.i b/.hg/store/data/src/icons/cache/wherigo.svg.i
new file mode 100644
index 0000000..15bc703
Binary files /dev/null and b/.hg/store/data/src/icons/cache/wherigo.svg.i differ
diff --git a/.hg/store/data/src/icons/cache/write__note.svg.i b/.hg/store/data/src/icons/cache/write__note.svg.i
new file mode 100644
index 0000000..7a4d6ff
Binary files /dev/null and b/.hg/store/data/src/icons/cache/write__note.svg.i differ
diff --git a/.hg/store/data/src/icons/icons.svg.d b/.hg/store/data/src/icons/icons.svg.d
new file mode 100644
index 0000000..fab4c71
Binary files /dev/null and b/.hg/store/data/src/icons/icons.svg.d differ
diff --git a/.hg/store/data/src/icons/icons.svg.i b/.hg/store/data/src/icons/icons.svg.i
new file mode 100644
index 0000000..32f23d4
Binary files /dev/null and b/.hg/store/data/src/icons/icons.svg.i differ
diff --git a/.hg/store/data/src/icons/icons.svg.save.d b/.hg/store/data/src/icons/icons.svg.save.d
new file mode 100644
index 0000000..bd6468e
Binary files /dev/null and b/.hg/store/data/src/icons/icons.svg.save.d differ
diff --git a/.hg/store/data/src/icons/icons.svg.save.i b/.hg/store/data/src/icons/icons.svg.save.i
new file mode 100644
index 0000000..51e57cf
Binary files /dev/null and b/.hg/store/data/src/icons/icons.svg.save.i differ
diff --git a/.hg/store/data/src/icons/makeicons.i b/.hg/store/data/src/icons/makeicons.i
new file mode 100644
index 0000000..cf065c5
Binary files /dev/null and b/.hg/store/data/src/icons/makeicons.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_box_blue.png.i b/.hg/store/data/src/icons/waypoints/32x32/_box_blue.png.i
new file mode 100644
index 0000000..37dd91c
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_box_blue.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_box_green.png.i b/.hg/store/data/src/icons/waypoints/32x32/_box_green.png.i
new file mode 100644
index 0000000..573efcc
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_box_green.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_box_red.png.i b/.hg/store/data/src/icons/waypoints/32x32/_box_red.png.i
new file mode 100644
index 0000000..b5334e3
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_box_red.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_default.png.i b/.hg/store/data/src/icons/waypoints/32x32/_default.png.i
new file mode 100644
index 0000000..3a36a69
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_default.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_diamond_blue.png.i b/.hg/store/data/src/icons/waypoints/32x32/_diamond_blue.png.i
new file mode 100644
index 0000000..8d3d2f0
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_diamond_blue.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_diamond_green.png.i b/.hg/store/data/src/icons/waypoints/32x32/_diamond_green.png.i
new file mode 100644
index 0000000..2981c9d
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_diamond_green.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_diamond_red.png.i b/.hg/store/data/src/icons/waypoints/32x32/_diamond_red.png.i
new file mode 100644
index 0000000..992a0ef
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_diamond_red.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_flag_blue.png.i b/.hg/store/data/src/icons/waypoints/32x32/_flag_blue.png.i
new file mode 100644
index 0000000..9391221
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_flag_blue.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_flag_green.png.i b/.hg/store/data/src/icons/waypoints/32x32/_flag_green.png.i
new file mode 100644
index 0000000..4c8154f
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_flag_green.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_flag_red.png.i b/.hg/store/data/src/icons/waypoints/32x32/_flag_red.png.i
new file mode 100644
index 0000000..40776b4
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_flag_red.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_pin_blue.png.i b/.hg/store/data/src/icons/waypoints/32x32/_pin_blue.png.i
new file mode 100644
index 0000000..d592433
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_pin_blue.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_pin_green.png.i b/.hg/store/data/src/icons/waypoints/32x32/_pin_green.png.i
new file mode 100644
index 0000000..3251f30
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_pin_green.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_pin_red.png.i b/.hg/store/data/src/icons/waypoints/32x32/_pin_red.png.i
new file mode 100644
index 0000000..dbaa69d
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_pin_red.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_residence.png.i b/.hg/store/data/src/icons/waypoints/32x32/_residence.png.i
new file mode 100644
index 0000000..e254bd9
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_residence.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/32x32/_waypoint.png.i b/.hg/store/data/src/icons/waypoints/32x32/_waypoint.png.i
new file mode 100644
index 0000000..fc496cc
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/32x32/_waypoint.png.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_box_blue.svg.i b/.hg/store/data/src/icons/waypoints/_box_blue.svg.i
new file mode 100644
index 0000000..5d4a77f
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_box_blue.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_box_green.svg.i b/.hg/store/data/src/icons/waypoints/_box_green.svg.i
new file mode 100644
index 0000000..f02d40e
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_box_green.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_box_red.svg.i b/.hg/store/data/src/icons/waypoints/_box_red.svg.i
new file mode 100644
index 0000000..3917ec2
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_box_red.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_default.svg.i b/.hg/store/data/src/icons/waypoints/_default.svg.i
new file mode 100644
index 0000000..bd232a7
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_default.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_diamond_blue.svg.i b/.hg/store/data/src/icons/waypoints/_diamond_blue.svg.i
new file mode 100644
index 0000000..0302795
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_diamond_blue.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_diamond_green.svg.i b/.hg/store/data/src/icons/waypoints/_diamond_green.svg.i
new file mode 100644
index 0000000..bec12ed
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_diamond_green.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_diamond_red.svg.i b/.hg/store/data/src/icons/waypoints/_diamond_red.svg.i
new file mode 100644
index 0000000..4bd8ce5
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_diamond_red.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_flag_blue.svg.i b/.hg/store/data/src/icons/waypoints/_flag_blue.svg.i
new file mode 100644
index 0000000..6e9148b
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_flag_blue.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_flag_green.svg.i b/.hg/store/data/src/icons/waypoints/_flag_green.svg.i
new file mode 100644
index 0000000..e7506a8
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_flag_green.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_flag_red.svg.i b/.hg/store/data/src/icons/waypoints/_flag_red.svg.i
new file mode 100644
index 0000000..1cc0a7f
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_flag_red.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_pin_blue.svg.i b/.hg/store/data/src/icons/waypoints/_pin_blue.svg.i
new file mode 100644
index 0000000..662df32
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_pin_blue.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_pin_green.svg.i b/.hg/store/data/src/icons/waypoints/_pin_green.svg.i
new file mode 100644
index 0000000..8378eb1
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_pin_green.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_pin_red.svg.i b/.hg/store/data/src/icons/waypoints/_pin_red.svg.i
new file mode 100644
index 0000000..b6fd804
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_pin_red.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_residence.svg.i b/.hg/store/data/src/icons/waypoints/_residence.svg.i
new file mode 100644
index 0000000..e209af2
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_residence.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/_waypoint.svg.i b/.hg/store/data/src/icons/waypoints/_waypoint.svg.i
new file mode 100644
index 0000000..7150429
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/_waypoint.svg.i differ
diff --git a/.hg/store/data/src/icons/waypoints/makeicons.i b/.hg/store/data/src/icons/waypoints/makeicons.i
new file mode 100644
index 0000000..be7679e
Binary files /dev/null and b/.hg/store/data/src/icons/waypoints/makeicons.i differ
diff --git a/.hg/store/data/src/locale/qmapshack__cs.ts.i b/.hg/store/data/src/locale/qmapshack__cs.ts.i
new file mode 100644
index 0000000..b6d1299
Binary files /dev/null and b/.hg/store/data/src/locale/qmapshack__cs.ts.i differ
diff --git a/.hg/store/data/src/locale/qmapshack__de.ts.i b/.hg/store/data/src/locale/qmapshack__de.ts.i
new file mode 100644
index 0000000..916d118
Binary files /dev/null and b/.hg/store/data/src/locale/qmapshack__de.ts.i differ
diff --git a/.hg/store/data/src/locale/qmapshack__es.ts.i b/.hg/store/data/src/locale/qmapshack__es.ts.i
new file mode 100644
index 0000000..d437043
Binary files /dev/null and b/.hg/store/data/src/locale/qmapshack__es.ts.i differ
diff --git a/.hg/store/data/src/locale/qmapshack__fr.ts.i b/.hg/store/data/src/locale/qmapshack__fr.ts.i
new file mode 100644
index 0000000..24b68aa
Binary files /dev/null and b/.hg/store/data/src/locale/qmapshack__fr.ts.i differ
diff --git a/.hg/store/data/src/main.cpp.i b/.hg/store/data/src/main.cpp.i
new file mode 100644
index 0000000..efa03e5
Binary files /dev/null and b/.hg/store/data/src/main.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_grid.cpp.i b/.hg/store/data/src/map/_c_grid.cpp.i
new file mode 100644
index 0000000..5aaa089
Binary files /dev/null and b/.hg/store/data/src/map/_c_grid.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_grid.h.i b/.hg/store/data/src/map/_c_grid.h.i
new file mode 100644
index 0000000..b6c1970
Binary files /dev/null and b/.hg/store/data/src/map/_c_grid.h.i differ
diff --git a/.hg/store/data/src/map/_c_map.cpp.i b/.hg/store/data/src/map/_c_map.cpp.i
new file mode 100644
index 0000000..2c1ab82
Binary files /dev/null and b/.hg/store/data/src/map/_c_map.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map.h.i b/.hg/store/data/src/map/_c_map.h.i
new file mode 100644
index 0000000..e7acf6d
Binary files /dev/null and b/.hg/store/data/src/map/_c_map.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_draw.cpp.i b/.hg/store/data/src/map/_c_map_draw.cpp.i
new file mode 100644
index 0000000..b00f469
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_draw.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_draw.h.i b/.hg/store/data/src/map/_c_map_draw.h.i
new file mode 100644
index 0000000..6422510
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_draw.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_i_m_g.cpp.i b/.hg/store/data/src/map/_c_map_i_m_g.cpp.i
new file mode 100644
index 0000000..e2dfeeb
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_i_m_g.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_i_m_g.h.i b/.hg/store/data/src/map/_c_map_i_m_g.h.i
new file mode 100644
index 0000000..51214ea
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_i_m_g.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_item.cpp.i b/.hg/store/data/src/map/_c_map_item.cpp.i
new file mode 100644
index 0000000..c27956f
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_item.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_item.h.i b/.hg/store/data/src/map/_c_map_item.h.i
new file mode 100644
index 0000000..bf1d3f6
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_item.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_j_n_x.cpp.i b/.hg/store/data/src/map/_c_map_j_n_x.cpp.i
new file mode 100644
index 0000000..0396069
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_j_n_x.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_j_n_x.h.i b/.hg/store/data/src/map/_c_map_j_n_x.h.i
new file mode 100644
index 0000000..96f24d4
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_j_n_x.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_list.cpp.i b/.hg/store/data/src/map/_c_map_list.cpp.i
new file mode 100644
index 0000000..52cd623
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_list.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_list.h.i b/.hg/store/data/src/map/_c_map_list.h.i
new file mode 100644
index 0000000..1d27ac7
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_list.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_m_a_p.cpp.i b/.hg/store/data/src/map/_c_map_m_a_p.cpp.i
new file mode 100644
index 0000000..3618c73
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_m_a_p.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_m_a_p.h.i b/.hg/store/data/src/map/_c_map_m_a_p.h.i
new file mode 100644
index 0000000..b6d821c
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_m_a_p.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_path_setup.cpp.i b/.hg/store/data/src/map/_c_map_path_setup.cpp.i
new file mode 100644
index 0000000..2de49bf
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_path_setup.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_path_setup.h.i b/.hg/store/data/src/map/_c_map_path_setup.h.i
new file mode 100644
index 0000000..dd9eca5
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_path_setup.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_prop_setup.cpp.i b/.hg/store/data/src/map/_c_map_prop_setup.cpp.i
new file mode 100644
index 0000000..8352b95
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_prop_setup.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_prop_setup.h.i b/.hg/store/data/src/map/_c_map_prop_setup.h.i
new file mode 100644
index 0000000..0617d8a
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_prop_setup.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_r_m_a_p.cpp.i b/.hg/store/data/src/map/_c_map_r_m_a_p.cpp.i
new file mode 100644
index 0000000..cf95c40
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_r_m_a_p.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_r_m_a_p.h.i b/.hg/store/data/src/map/_c_map_r_m_a_p.h.i
new file mode 100644
index 0000000..e76c470
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_r_m_a_p.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_t_m_s.cpp.i b/.hg/store/data/src/map/_c_map_t_m_s.cpp.i
new file mode 100644
index 0000000..51dcb44
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_t_m_s.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_t_m_s.h.i b/.hg/store/data/src/map/_c_map_t_m_s.h.i
new file mode 100644
index 0000000..caece73
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_t_m_s.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_v_r_t.cpp.i b/.hg/store/data/src/map/_c_map_v_r_t.cpp.i
new file mode 100644
index 0000000..741576d
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_v_r_t.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_v_r_t.h.i b/.hg/store/data/src/map/_c_map_v_r_t.h.i
new file mode 100644
index 0000000..a08e433
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_v_r_t.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_vrt_builder.cpp.i b/.hg/store/data/src/map/_c_map_vrt_builder.cpp.i
new file mode 100644
index 0000000..a8dca4c
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_vrt_builder.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_vrt_builder.h.i b/.hg/store/data/src/map/_c_map_vrt_builder.h.i
new file mode 100644
index 0000000..55c0092
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_vrt_builder.h.i differ
diff --git a/.hg/store/data/src/map/_c_map_w_m_t_s.cpp.autosave.i b/.hg/store/data/src/map/_c_map_w_m_t_s.cpp.autosave.i
new file mode 100644
index 0000000..b562e32
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_w_m_t_s.cpp.autosave.i differ
diff --git a/.hg/store/data/src/map/_c_map_w_m_t_s.cpp.i b/.hg/store/data/src/map/_c_map_w_m_t_s.cpp.i
new file mode 100644
index 0000000..218d5a3
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_w_m_t_s.cpp.i differ
diff --git a/.hg/store/data/src/map/_c_map_w_m_t_s.h.i b/.hg/store/data/src/map/_c_map_w_m_t_s.h.i
new file mode 100644
index 0000000..6084fb4
Binary files /dev/null and b/.hg/store/data/src/map/_c_map_w_m_t_s.h.i differ
diff --git a/.hg/store/data/src/map/_i_map.cpp.i b/.hg/store/data/src/map/_i_map.cpp.i
new file mode 100644
index 0000000..8e1a059
Binary files /dev/null and b/.hg/store/data/src/map/_i_map.cpp.i differ
diff --git a/.hg/store/data/src/map/_i_map.h.i b/.hg/store/data/src/map/_i_map.h.i
new file mode 100644
index 0000000..4c5dfd5
Binary files /dev/null and b/.hg/store/data/src/map/_i_map.h.i differ
diff --git a/.hg/store/data/src/map/_i_map_list.ui.i b/.hg/store/data/src/map/_i_map_list.ui.i
new file mode 100644
index 0000000..bbe69ce
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_list.ui.i differ
diff --git a/.hg/store/data/src/map/_i_map_path_setup.ui.i b/.hg/store/data/src/map/_i_map_path_setup.ui.i
new file mode 100644
index 0000000..cde6e2f
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_path_setup.ui.i differ
diff --git a/.hg/store/data/src/map/_i_map_prop.cpp.i b/.hg/store/data/src/map/_i_map_prop.cpp.i
new file mode 100644
index 0000000..69101b5
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_prop.cpp.i differ
diff --git a/.hg/store/data/src/map/_i_map_prop.h.i b/.hg/store/data/src/map/_i_map_prop.h.i
new file mode 100644
index 0000000..97229b4
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_prop.h.i differ
diff --git a/.hg/store/data/src/map/_i_map_prop.ui.i b/.hg/store/data/src/map/_i_map_prop.ui.i
new file mode 100644
index 0000000..64a07fd
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_prop.ui.i differ
diff --git a/.hg/store/data/src/map/_i_map_prop_setup.cpp.i b/.hg/store/data/src/map/_i_map_prop_setup.cpp.i
new file mode 100644
index 0000000..4b947ef
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_prop_setup.cpp.i differ
diff --git a/.hg/store/data/src/map/_i_map_prop_setup.h.i b/.hg/store/data/src/map/_i_map_prop_setup.h.i
new file mode 100644
index 0000000..2069205
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_prop_setup.h.i differ
diff --git a/.hg/store/data/src/map/_i_map_prop_setup.ui.i b/.hg/store/data/src/map/_i_map_prop_setup.ui.i
new file mode 100644
index 0000000..250af36
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_prop_setup.ui.i differ
diff --git a/.hg/store/data/src/map/_i_map_vrt_builder.ui.i b/.hg/store/data/src/map/_i_map_vrt_builder.ui.i
new file mode 100644
index 0000000..3ca0791
Binary files /dev/null and b/.hg/store/data/src/map/_i_map_vrt_builder.ui.i differ
diff --git a/.hg/store/data/src/map/cache/_c_disk_cache.cpp.i b/.hg/store/data/src/map/cache/_c_disk_cache.cpp.i
new file mode 100644
index 0000000..6929c69
Binary files /dev/null and b/.hg/store/data/src/map/cache/_c_disk_cache.cpp.i differ
diff --git a/.hg/store/data/src/map/cache/_c_disk_cache.h.i b/.hg/store/data/src/map/cache/_c_disk_cache.h.i
new file mode 100644
index 0000000..dde2cf1
Binary files /dev/null and b/.hg/store/data/src/map/cache/_c_disk_cache.h.i differ
diff --git a/.hg/store/data/src/map/cache/_i_disk_cache.cpp.i b/.hg/store/data/src/map/cache/_i_disk_cache.cpp.i
new file mode 100644
index 0000000..13502af
Binary files /dev/null and b/.hg/store/data/src/map/cache/_i_disk_cache.cpp.i differ
diff --git a/.hg/store/data/src/map/cache/_i_disk_cache.h.i b/.hg/store/data/src/map/cache/_i_disk_cache.h.i
new file mode 100644
index 0000000..6f55800
Binary files /dev/null and b/.hg/store/data/src/map/cache/_i_disk_cache.h.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_point.cpp.i b/.hg/store/data/src/map/garmin/_c_garmin_point.cpp.i
new file mode 100644
index 0000000..b636090
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_point.cpp.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_point.h.i b/.hg/store/data/src/map/garmin/_c_garmin_point.h.i
new file mode 100644
index 0000000..0969bdd
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_point.h.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_polygon.cpp.i b/.hg/store/data/src/map/garmin/_c_garmin_polygon.cpp.i
new file mode 100644
index 0000000..3142381
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_polygon.cpp.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_polygon.h.i b/.hg/store/data/src/map/garmin/_c_garmin_polygon.h.i
new file mode 100644
index 0000000..f0d75d7
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_polygon.h.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_str_tbl6.cpp.i b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl6.cpp.i
new file mode 100644
index 0000000..6290576
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl6.cpp.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_str_tbl6.h.i b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl6.h.i
new file mode 100644
index 0000000..0e34938
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl6.h.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_str_tbl8.cpp.i b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl8.cpp.i
new file mode 100644
index 0000000..0c7fac2
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl8.cpp.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_str_tbl8.h.i b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl8.h.i
new file mode 100644
index 0000000..63b8fb5
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl8.h.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_str_tbl_utf8.cpp.i b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl_utf8.cpp.i
new file mode 100644
index 0000000..ed85b2b
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl_utf8.cpp.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_str_tbl_utf8.h.i b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl_utf8.h.i
new file mode 100644
index 0000000..8b1ec5d
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_str_tbl_utf8.h.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_typ.cpp.i b/.hg/store/data/src/map/garmin/_c_garmin_typ.cpp.i
new file mode 100644
index 0000000..39c6582
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_typ.cpp.i differ
diff --git a/.hg/store/data/src/map/garmin/_c_garmin_typ.h.i b/.hg/store/data/src/map/garmin/_c_garmin_typ.h.i
new file mode 100644
index 0000000..27a23c8
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_c_garmin_typ.h.i differ
diff --git a/.hg/store/data/src/map/garmin/_garmin.h.i b/.hg/store/data/src/map/garmin/_garmin.h.i
new file mode 100644
index 0000000..9d1178b
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_garmin.h.i differ
diff --git a/.hg/store/data/src/map/garmin/_i_garmin_str_tbl.cpp.i b/.hg/store/data/src/map/garmin/_i_garmin_str_tbl.cpp.i
new file mode 100644
index 0000000..85a3ceb
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_i_garmin_str_tbl.cpp.i differ
diff --git a/.hg/store/data/src/map/garmin/_i_garmin_str_tbl.h.i b/.hg/store/data/src/map/garmin/_i_garmin_str_tbl.h.i
new file mode 100644
index 0000000..76431b4
Binary files /dev/null and b/.hg/store/data/src/map/garmin/_i_garmin_str_tbl.h.i differ
diff --git a/.hg/store/data/src/map/mapsforge/types.cpp.i b/.hg/store/data/src/map/mapsforge/types.cpp.i
new file mode 100644
index 0000000..4f1c403
Binary files /dev/null and b/.hg/store/data/src/map/mapsforge/types.cpp.i differ
diff --git a/.hg/store/data/src/map/mapsforge/types.h.i b/.hg/store/data/src/map/mapsforge/types.h.i
new file mode 100644
index 0000000..265f904
Binary files /dev/null and b/.hg/store/data/src/map/mapsforge/types.h.i differ
diff --git a/.hg/store/data/src/map/wmts/_c_disk_cache.cpp.i b/.hg/store/data/src/map/wmts/_c_disk_cache.cpp.i
new file mode 100644
index 0000000..d222881
Binary files /dev/null and b/.hg/store/data/src/map/wmts/_c_disk_cache.cpp.i differ
diff --git a/.hg/store/data/src/map/wmts/_c_disk_cache.h.i b/.hg/store/data/src/map/wmts/_c_disk_cache.h.i
new file mode 100644
index 0000000..8be25cb
Binary files /dev/null and b/.hg/store/data/src/map/wmts/_c_disk_cache.h.i differ
diff --git a/.hg/store/data/src/map/wmts/_i_disk_cache.cpp.i b/.hg/store/data/src/map/wmts/_i_disk_cache.cpp.i
new file mode 100644
index 0000000..b13db17
Binary files /dev/null and b/.hg/store/data/src/map/wmts/_i_disk_cache.cpp.i differ
diff --git a/.hg/store/data/src/map/wmts/_i_disk_cache.h.i b/.hg/store/data/src/map/wmts/_i_disk_cache.h.i
new file mode 100644
index 0000000..5c59603
Binary files /dev/null and b/.hg/store/data/src/map/wmts/_i_disk_cache.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_edit_area.cpp.i b/.hg/store/data/src/mouse/_c_mouse_edit_area.cpp.i
new file mode 100644
index 0000000..468079b
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_edit_area.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_edit_area.h.i b/.hg/store/data/src/mouse/_c_mouse_edit_area.h.i
new file mode 100644
index 0000000..8ff6e05
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_edit_area.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_edit_line.cpp.i b/.hg/store/data/src/mouse/_c_mouse_edit_line.cpp.i
new file mode 100644
index 0000000..65799b2
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_edit_line.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_edit_line.h.i b/.hg/store/data/src/mouse/_c_mouse_edit_line.h.i
new file mode 100644
index 0000000..18a5688
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_edit_line.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_edit_trk.cpp.i b/.hg/store/data/src/mouse/_c_mouse_edit_trk.cpp.i
new file mode 100644
index 0000000..84672ec
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_edit_trk.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_edit_trk.h.i b/.hg/store/data/src/mouse/_c_mouse_edit_trk.h.i
new file mode 100644
index 0000000..cba546b
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_edit_trk.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_move_wpt.cpp.i b/.hg/store/data/src/mouse/_c_mouse_move_wpt.cpp.i
new file mode 100644
index 0000000..161e8e7
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_move_wpt.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_move_wpt.h.i b/.hg/store/data/src/mouse/_c_mouse_move_wpt.h.i
new file mode 100644
index 0000000..6c72451
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_move_wpt.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_normal.cpp.i b/.hg/store/data/src/mouse/_c_mouse_normal.cpp.i
new file mode 100644
index 0000000..a42c2ab
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_normal.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_normal.h.i b/.hg/store/data/src/mouse/_c_mouse_normal.h.i
new file mode 100644
index 0000000..586d2f2
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_normal.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_range_trk.cpp.i b/.hg/store/data/src/mouse/_c_mouse_range_trk.cpp.i
new file mode 100644
index 0000000..4a1d915
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_range_trk.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_mouse_range_trk.h.i b/.hg/store/data/src/mouse/_c_mouse_range_trk.h.i
new file mode 100644
index 0000000..ccb5d3d
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_mouse_range_trk.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_edit_line.cpp.i b/.hg/store/data/src/mouse/_c_scr_opt_edit_line.cpp.i
new file mode 100644
index 0000000..afcf21a
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_edit_line.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_edit_line.h.i b/.hg/store/data/src/mouse/_c_scr_opt_edit_line.h.i
new file mode 100644
index 0000000..876bd07
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_edit_line.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_point.cpp.i b/.hg/store/data/src/mouse/_c_scr_opt_point.cpp.i
new file mode 100644
index 0000000..0663747
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_point.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_point.h.i b/.hg/store/data/src/mouse/_c_scr_opt_point.h.i
new file mode 100644
index 0000000..caabbf3
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_point.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_range.cpp.i b/.hg/store/data/src/mouse/_c_scr_opt_range.cpp.i
new file mode 100644
index 0000000..da1d56d
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_range.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_range.h.i b/.hg/store/data/src/mouse/_c_scr_opt_range.h.i
new file mode 100644
index 0000000..e988c96
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_range.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_range_trk.cpp.i b/.hg/store/data/src/mouse/_c_scr_opt_range_trk.cpp.i
new file mode 100644
index 0000000..d00251e
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_range_trk.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_range_trk.h.i b/.hg/store/data/src/mouse/_c_scr_opt_range_trk.h.i
new file mode 100644
index 0000000..7099a98
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_range_trk.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_unclutter.cpp.i b/.hg/store/data/src/mouse/_c_scr_opt_unclutter.cpp.i
new file mode 100644
index 0000000..f7cbe78
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_unclutter.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_unclutter.h.i b/.hg/store/data/src/mouse/_c_scr_opt_unclutter.h.i
new file mode 100644
index 0000000..eee926f
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_unclutter.h.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_wpt.cpp.i b/.hg/store/data/src/mouse/_c_scr_opt_wpt.cpp.i
new file mode 100644
index 0000000..4830f2b
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_wpt.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_c_scr_opt_wpt.h.i b/.hg/store/data/src/mouse/_c_scr_opt_wpt.h.i
new file mode 100644
index 0000000..37c8d66
Binary files /dev/null and b/.hg/store/data/src/mouse/_c_scr_opt_wpt.h.i differ
diff --git a/.hg/store/data/src/mouse/_i_mouse.cpp.i b/.hg/store/data/src/mouse/_i_mouse.cpp.i
new file mode 100644
index 0000000..cdfdb9b
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_mouse.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_i_mouse.h.i b/.hg/store/data/src/mouse/_i_mouse.h.i
new file mode 100644
index 0000000..738a91c
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_mouse.h.i differ
diff --git a/.hg/store/data/src/mouse/_i_mouse_edit_line.cpp.i b/.hg/store/data/src/mouse/_i_mouse_edit_line.cpp.i
new file mode 100644
index 0000000..2505e53
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_mouse_edit_line.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_i_mouse_edit_line.h.i b/.hg/store/data/src/mouse/_i_mouse_edit_line.h.i
new file mode 100644
index 0000000..a34f487
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_mouse_edit_line.h.i differ
diff --git a/.hg/store/data/src/mouse/_i_scr_opt.cpp.i b/.hg/store/data/src/mouse/_i_scr_opt.cpp.i
new file mode 100644
index 0000000..701dc02
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_scr_opt.cpp.i differ
diff --git a/.hg/store/data/src/mouse/_i_scr_opt.h.i b/.hg/store/data/src/mouse/_i_scr_opt.h.i
new file mode 100644
index 0000000..86a57ee
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_scr_opt.h.i differ
diff --git a/.hg/store/data/src/mouse/_i_scr_opt_edit_line.ui.i b/.hg/store/data/src/mouse/_i_scr_opt_edit_line.ui.i
new file mode 100644
index 0000000..72e2ced
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_scr_opt_edit_line.ui.i differ
diff --git a/.hg/store/data/src/mouse/_i_scr_opt_point.ui.i b/.hg/store/data/src/mouse/_i_scr_opt_point.ui.i
new file mode 100644
index 0000000..030263c
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_scr_opt_point.ui.i differ
diff --git a/.hg/store/data/src/mouse/_i_scr_opt_range.ui.i b/.hg/store/data/src/mouse/_i_scr_opt_range.ui.i
new file mode 100644
index 0000000..9a6521d
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_scr_opt_range.ui.i differ
diff --git a/.hg/store/data/src/mouse/_i_scr_opt_range_trk.ui.i b/.hg/store/data/src/mouse/_i_scr_opt_range_trk.ui.i
new file mode 100644
index 0000000..0389d6e
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_scr_opt_range_trk.ui.i differ
diff --git a/.hg/store/data/src/mouse/_i_scr_opt_wpt.ui.i b/.hg/store/data/src/mouse/_i_scr_opt_wpt.ui.i
new file mode 100644
index 0000000..e83d854
Binary files /dev/null and b/.hg/store/data/src/mouse/_i_scr_opt_wpt.ui.i differ
diff --git a/.hg/store/data/src/pics/about.png.i b/.hg/store/data/src/pics/about.png.i
new file mode 100644
index 0000000..74bb6ea
Binary files /dev/null and b/.hg/store/data/src/pics/about.png.i differ
diff --git a/.hg/store/data/src/pics/compass.png.i b/.hg/store/data/src/pics/compass.png.i
new file mode 100644
index 0000000..45c7d7c
Binary files /dev/null and b/.hg/store/data/src/pics/compass.png.i differ
diff --git a/.hg/store/data/src/pics/compass.svg.i b/.hg/store/data/src/pics/compass.svg.i
new file mode 100644
index 0000000..65db067
Binary files /dev/null and b/.hg/store/data/src/pics/compass.svg.i differ
diff --git a/.hg/store/data/src/pics/no_map256x256.png.i b/.hg/store/data/src/pics/no_map256x256.png.i
new file mode 100644
index 0000000..44c3c03
Binary files /dev/null and b/.hg/store/data/src/pics/no_map256x256.png.i differ
diff --git a/.hg/store/data/src/pics/splash.png.d b/.hg/store/data/src/pics/splash.png.d
new file mode 100644
index 0000000..bd11a51
Binary files /dev/null and b/.hg/store/data/src/pics/splash.png.d differ
diff --git a/.hg/store/data/src/pics/splash.png.i b/.hg/store/data/src/pics/splash.png.i
new file mode 100644
index 0000000..8d8ed45
Binary files /dev/null and b/.hg/store/data/src/pics/splash.png.i differ
diff --git a/.hg/store/data/src/pics/timezones.png.i b/.hg/store/data/src/pics/timezones.png.i
new file mode 100644
index 0000000..b4db861
Binary files /dev/null and b/.hg/store/data/src/pics/timezones.png.i differ
diff --git a/.hg/store/data/src/plot/_c_plot.cpp.i b/.hg/store/data/src/plot/_c_plot.cpp.i
new file mode 100644
index 0000000..5cd4984
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot.cpp.i differ
diff --git a/.hg/store/data/src/plot/_c_plot.h.i b/.hg/store/data/src/plot/_c_plot.h.i
new file mode 100644
index 0000000..6b086c7
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot.h.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_axis.cpp.i b/.hg/store/data/src/plot/_c_plot_axis.cpp.i
new file mode 100644
index 0000000..e3de60a
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_axis.cpp.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_axis.h.i b/.hg/store/data/src/plot/_c_plot_axis.h.i
new file mode 100644
index 0000000..b4e7a28
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_axis.h.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_axis_time.cpp.i b/.hg/store/data/src/plot/_c_plot_axis_time.cpp.i
new file mode 100644
index 0000000..10590c4
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_axis_time.cpp.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_axis_time.h.i b/.hg/store/data/src/plot/_c_plot_axis_time.h.i
new file mode 100644
index 0000000..ff756ab
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_axis_time.h.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_data.cpp.i b/.hg/store/data/src/plot/_c_plot_data.cpp.i
new file mode 100644
index 0000000..35c16c1
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_data.cpp.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_data.h.i b/.hg/store/data/src/plot/_c_plot_data.h.i
new file mode 100644
index 0000000..77e12db
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_data.h.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_distance.cpp.i b/.hg/store/data/src/plot/_c_plot_distance.cpp.i
new file mode 100644
index 0000000..9afeda9
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_distance.cpp.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_distance.h.i b/.hg/store/data/src/plot/_c_plot_distance.h.i
new file mode 100644
index 0000000..d068327
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_distance.h.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_profile.cpp.i b/.hg/store/data/src/plot/_c_plot_profile.cpp.i
new file mode 100644
index 0000000..138e0f3
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_profile.cpp.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_profile.h.i b/.hg/store/data/src/plot/_c_plot_profile.h.i
new file mode 100644
index 0000000..408406c
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_profile.h.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_speed.cpp.i b/.hg/store/data/src/plot/_c_plot_speed.cpp.i
new file mode 100644
index 0000000..b3e5456
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_speed.cpp.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_speed.h.i b/.hg/store/data/src/plot/_c_plot_speed.h.i
new file mode 100644
index 0000000..abda14a
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_speed.h.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_track.cpp.i b/.hg/store/data/src/plot/_c_plot_track.cpp.i
new file mode 100644
index 0000000..6edc532
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_track.cpp.i differ
diff --git a/.hg/store/data/src/plot/_c_plot_track.h.i b/.hg/store/data/src/plot/_c_plot_track.h.i
new file mode 100644
index 0000000..922708d
Binary files /dev/null and b/.hg/store/data/src/plot/_c_plot_track.h.i differ
diff --git a/.hg/store/data/src/plot/_i_plot.cpp.i b/.hg/store/data/src/plot/_i_plot.cpp.i
new file mode 100644
index 0000000..6a3f11c
Binary files /dev/null and b/.hg/store/data/src/plot/_i_plot.cpp.i differ
diff --git a/.hg/store/data/src/plot/_i_plot.h.i b/.hg/store/data/src/plot/_i_plot.h.i
new file mode 100644
index 0000000..c44423d
Binary files /dev/null and b/.hg/store/data/src/plot/_i_plot.h.i differ
diff --git a/.hg/store/data/src/plot/_i_track.cpp.i b/.hg/store/data/src/plot/_i_track.cpp.i
new file mode 100644
index 0000000..a2f3437
Binary files /dev/null and b/.hg/store/data/src/plot/_i_track.cpp.i differ
diff --git a/.hg/store/data/src/plot/_i_track.h.i b/.hg/store/data/src/plot/_i_track.h.i
new file mode 100644
index 0000000..97157e6
Binary files /dev/null and b/.hg/store/data/src/plot/_i_track.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_import_database.cpp.i b/.hg/store/data/src/qlgt/_c_import_database.cpp.i
new file mode 100644
index 0000000..3b8aa75
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_import_database.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_import_database.h.i b/.hg/store/data/src/qlgt/_c_import_database.h.i
new file mode 100644
index 0000000..095dfe6
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_import_database.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlb.cpp.i b/.hg/store/data/src/qlgt/_c_qlb.cpp.i
new file mode 100644
index 0000000..0d0bb6a
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlb.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlb.h.i b/.hg/store/data/src/qlgt/_c_qlb.h.i
new file mode 100644
index 0000000..489d5df
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlb.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_db.cpp.i b/.hg/store/data/src/qlgt/_c_qlgt_db.cpp.i
new file mode 100644
index 0000000..8f0da64
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_db.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_db.h.i b/.hg/store/data/src/qlgt/_c_qlgt_db.h.i
new file mode 100644
index 0000000..b539bb6
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_db.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_diary.cpp.i b/.hg/store/data/src/qlgt/_c_qlgt_diary.cpp.i
new file mode 100644
index 0000000..9ddd488
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_diary.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_diary.h.i b/.hg/store/data/src/qlgt/_c_qlgt_diary.h.i
new file mode 100644
index 0000000..4a631af
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_diary.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_folder.cpp.i b/.hg/store/data/src/qlgt/_c_qlgt_folder.cpp.i
new file mode 100644
index 0000000..76b8b84
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_folder.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_folder.h.i b/.hg/store/data/src/qlgt/_c_qlgt_folder.h.i
new file mode 100644
index 0000000..95e6cfc
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_folder.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_route.cpp.i b/.hg/store/data/src/qlgt/_c_qlgt_route.cpp.i
new file mode 100644
index 0000000..292b1b8
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_route.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_route.h.i b/.hg/store/data/src/qlgt/_c_qlgt_route.h.i
new file mode 100644
index 0000000..90f170e
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_route.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_track.cpp.i b/.hg/store/data/src/qlgt/_c_qlgt_track.cpp.i
new file mode 100644
index 0000000..7e21238
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_track.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_track.h.i b/.hg/store/data/src/qlgt/_c_qlgt_track.h.i
new file mode 100644
index 0000000..873e5cc
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_track.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_wpt.cpp.i b/.hg/store/data/src/qlgt/_c_qlgt_wpt.cpp.i
new file mode 100644
index 0000000..542c1ef
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_wpt.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qlgt_wpt.h.i b/.hg/store/data/src/qlgt/_c_qlgt_wpt.h.i
new file mode 100644
index 0000000..fe7494f
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qlgt_wpt.h.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qms_db.cpp.i b/.hg/store/data/src/qlgt/_c_qms_db.cpp.i
new file mode 100644
index 0000000..91aa883
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qms_db.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_c_qms_db.h.i b/.hg/store/data/src/qlgt/_c_qms_db.h.i
new file mode 100644
index 0000000..0ae5a9d
Binary files /dev/null and b/.hg/store/data/src/qlgt/_c_qms_db.h.i differ
diff --git a/.hg/store/data/src/qlgt/_i_import_database.ui.i b/.hg/store/data/src/qlgt/_i_import_database.ui.i
new file mode 100644
index 0000000..f82a591
Binary files /dev/null and b/.hg/store/data/src/qlgt/_i_import_database.ui.i differ
diff --git a/.hg/store/data/src/qlgt/_i_item.cpp.i b/.hg/store/data/src/qlgt/_i_item.cpp.i
new file mode 100644
index 0000000..07ed6f0
Binary files /dev/null and b/.hg/store/data/src/qlgt/_i_item.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_i_item.h.i b/.hg/store/data/src/qlgt/_i_item.h.i
new file mode 100644
index 0000000..d9c37fd
Binary files /dev/null and b/.hg/store/data/src/qlgt/_i_item.h.i differ
diff --git a/.hg/store/data/src/qlgt/_i_qlgt_overlay.cpp.i b/.hg/store/data/src/qlgt/_i_qlgt_overlay.cpp.i
new file mode 100644
index 0000000..b85903d
Binary files /dev/null and b/.hg/store/data/src/qlgt/_i_qlgt_overlay.cpp.i differ
diff --git a/.hg/store/data/src/qlgt/_i_qlgt_overlay.h.i b/.hg/store/data/src/qlgt/_i_qlgt_overlay.h.i
new file mode 100644
index 0000000..627135f
Binary files /dev/null and b/.hg/store/data/src/qlgt/_i_qlgt_overlay.h.i differ
diff --git a/.hg/store/data/src/qlgt/converter.cpp.i b/.hg/store/data/src/qlgt/converter.cpp.i
new file mode 100644
index 0000000..f16b69f
Binary files /dev/null and b/.hg/store/data/src/qlgt/converter.cpp.i differ
diff --git a/.hg/store/data/src/resources.qrc.i b/.hg/store/data/src/resources.qrc.i
new file mode 100644
index 0000000..8960eb9
Binary files /dev/null and b/.hg/store/data/src/resources.qrc.i differ
diff --git a/.hg/store/data/src/resources.rc.i b/.hg/store/data/src/resources.rc.i
new file mode 100644
index 0000000..aba908f
Binary files /dev/null and b/.hg/store/data/src/resources.rc.i differ
diff --git a/.hg/store/data/src/units/_c_time_zone_setup.cpp.i b/.hg/store/data/src/units/_c_time_zone_setup.cpp.i
new file mode 100644
index 0000000..40cd663
Binary files /dev/null and b/.hg/store/data/src/units/_c_time_zone_setup.cpp.i differ
diff --git a/.hg/store/data/src/units/_c_time_zone_setup.h.i b/.hg/store/data/src/units/_c_time_zone_setup.h.i
new file mode 100644
index 0000000..a8702f6
Binary files /dev/null and b/.hg/store/data/src/units/_c_time_zone_setup.h.i differ
diff --git a/.hg/store/data/src/units/_c_unit_imperial.cpp.i b/.hg/store/data/src/units/_c_unit_imperial.cpp.i
new file mode 100644
index 0000000..8bda440
Binary files /dev/null and b/.hg/store/data/src/units/_c_unit_imperial.cpp.i differ
diff --git a/.hg/store/data/src/units/_c_unit_imperial.h.i b/.hg/store/data/src/units/_c_unit_imperial.h.i
new file mode 100644
index 0000000..193eacc
Binary files /dev/null and b/.hg/store/data/src/units/_c_unit_imperial.h.i differ
diff --git a/.hg/store/data/src/units/_c_unit_metric.cpp.i b/.hg/store/data/src/units/_c_unit_metric.cpp.i
new file mode 100644
index 0000000..55aab0f
Binary files /dev/null and b/.hg/store/data/src/units/_c_unit_metric.cpp.i differ
diff --git a/.hg/store/data/src/units/_c_unit_metric.h.i b/.hg/store/data/src/units/_c_unit_metric.h.i
new file mode 100644
index 0000000..e3f69c4
Binary files /dev/null and b/.hg/store/data/src/units/_c_unit_metric.h.i differ
diff --git a/.hg/store/data/src/units/_c_unit_nautic.cpp.i b/.hg/store/data/src/units/_c_unit_nautic.cpp.i
new file mode 100644
index 0000000..e5631db
Binary files /dev/null and b/.hg/store/data/src/units/_c_unit_nautic.cpp.i differ
diff --git a/.hg/store/data/src/units/_c_unit_nautic.h.i b/.hg/store/data/src/units/_c_unit_nautic.h.i
new file mode 100644
index 0000000..9ac94ab
Binary files /dev/null and b/.hg/store/data/src/units/_c_unit_nautic.h.i differ
diff --git a/.hg/store/data/src/units/_c_units_setup.cpp.i b/.hg/store/data/src/units/_c_units_setup.cpp.i
new file mode 100644
index 0000000..8776add
Binary files /dev/null and b/.hg/store/data/src/units/_c_units_setup.cpp.i differ
diff --git a/.hg/store/data/src/units/_c_units_setup.h.i b/.hg/store/data/src/units/_c_units_setup.h.i
new file mode 100644
index 0000000..fa93457
Binary files /dev/null and b/.hg/store/data/src/units/_c_units_setup.h.i differ
diff --git a/.hg/store/data/src/units/_i_time_zone_setup.ui.i b/.hg/store/data/src/units/_i_time_zone_setup.ui.i
new file mode 100644
index 0000000..43f7b07
Binary files /dev/null and b/.hg/store/data/src/units/_i_time_zone_setup.ui.i differ
diff --git a/.hg/store/data/src/units/_i_unit.cpp.i b/.hg/store/data/src/units/_i_unit.cpp.i
new file mode 100644
index 0000000..0469fed
Binary files /dev/null and b/.hg/store/data/src/units/_i_unit.cpp.i differ
diff --git a/.hg/store/data/src/units/_i_unit.h.i b/.hg/store/data/src/units/_i_unit.h.i
new file mode 100644
index 0000000..4b8f183
Binary files /dev/null and b/.hg/store/data/src/units/_i_unit.h.i differ
diff --git a/.hg/store/data/src/units/_i_units_setup.ui.i b/.hg/store/data/src/units/_i_units_setup.ui.i
new file mode 100644
index 0000000..0fed790
Binary files /dev/null and b/.hg/store/data/src/units/_i_units_setup.ui.i differ
diff --git a/.hg/store/data/src/version.h.i b/.hg/store/data/src/version.h.i
new file mode 100644
index 0000000..2c28541
Binary files /dev/null and b/.hg/store/data/src/version.h.i differ
diff --git a/.hg/store/data/templates/header.h.i b/.hg/store/data/templates/header.h.i
new file mode 100644
index 0000000..2aecac3
Binary files /dev/null and b/.hg/store/data/templates/header.h.i differ
diff --git a/.hg/store/data/templates/source.cpp.i b/.hg/store/data/templates/source.cpp.i
new file mode 100644
index 0000000..8a87a81
Binary files /dev/null and b/.hg/store/data/templates/source.cpp.i differ
diff --git a/.hg/store/fncache b/.hg/store/fncache
new file mode 100644
index 0000000..8d27e2e
--- /dev/null
+++ b/.hg/store/fncache
@@ -0,0 +1,1333 @@
+data/src/icons/cache/attributes/dis_Recommended_for_kids.svg.i
+data/src/icons/cache/attributes/yes_Takes_less_than_an_hour.svg.i
+data/src/units/CUnitImperial.h.i
+data/src/icons/MimeIMG.svg.i
+data/src/gis/ovl/IDetailsOvlArea.ui.i
+data/src/icons/cache/attributes/yes_Truck_Driver_RV.svg.i
+data/src/icons/48x48/Left.png.i
+data/src/icons/32x32/cancel.png.i
+data/src/icons/PathGreen.svg.i
+data/src/plot/CPlot.cpp.i
+data/src/icons/cache/attributes/dis_Bicycles.svg.i
+data/src/icons/16x16/SaveGIS.png.i
+data/src/icons/cache/32x32/earth.png.i
+data/src/cursors/wptHighlight.png.i
+data/src/icons/32x32/view.png.i
+data/src/icons/UnLock.svg.i
+data/src/grid/CGrid.h.i
+data/src/icons/16x16/mime_rmap.png.i
+data/src/icons/48x48/AddWpt.png.i
+data/src/CCanvas.h.i
+data/src/icons/cache/32x32/bluepin.png.i
+data/src/icons/cache/attributes/no_Medium_hike_(1km-10km).svg.i
+data/src/icons/cache/attributes/no_Abandoned_Structure.svg.i
+data/src/gis/wpt/CDetailsGeoCache.h.i
+data/src/IDrawObject.h.i
+data/src/helpers/CSelectCopyAction.h.i
+data/src/icons/48x48/Scale.png.i
+data/src/icons/TrkProfile.svg.i
+data/src/plot/CPlotDistance.h.i
+data/src/icons/AddTrk.svg.i
+data/src/icons/Map.svg.i
+data/src/icons/cache/32x32/cito.png.i
+data/src/icons/48x48/ToBottom.png.i
+data/src/icons/TextItalic.svg.i
+data/src/icons/48x48/Add.png.i
+data/src/GeoMath.h.i
+data/src/gis/CGisProject.h.i
+data/src/gis/prj/CDetailsPrj.h.i
+data/src/icons/cache/attributes/dis_Picnic_tables_nearby.svg.i
+data/src/icons/48x48/AddImage.png.i
+data/src/gis/trk/filter/IFilterDouglasPeuker.ui.i
+data/src/icons/16x16/Close.png.i
+data/src/grid/CGridSetup.cpp.i
+data/src/icons/32x32/NightDay.png.i
+data/src/gis/ovl/CScrOptOvlArea.cpp.i
+data/src/plot/IPlot.h.i
+data/src/icons/cache/32x32/halfstar.png.i
+data/src/icons/32x32/QmsProject.png.i
+data/src/helpers/CWptIconDialog.cpp.i
+data/src/icons/8x8/bullet_black.png.i
+data/src/gis/IGisWidget.ui.i
+data/src/gis/trk/filter/CFilterOffsetElevation.cpp.i
+data/src/gis/trk/filter/IFilterNewDate.ui.i
+data/src/locale/qmapshack_cs.ts.i
+data/src/icons/48x48/Route.png.i
+data/src/icons/16x16/SetupMapWorkspace.png.i
+data/src/gis/db/CSetupDB.cpp.i
+data/src/icons/ToTop.svg.i
+data/3rdparty/DBConverter/qlgt/CQlgtDiary.h.i
+data/src/icons/cache/attributes/dis_Fuel_Nearby.svg.i
+data/src/icons/waypoints/BoxGreen.svg.i
+data/src/icons/cache/wherigo.svg.i
+data/src/icons/cache/halfstar.svg.i
+data/.hgtags.i
+data/src/icons/Apply.svg.i
+data/src/icons/cache/letterbox.svg.i
+data/src/map/CMapDraw.cpp.i
+data/src/map/CGrid.cpp.i
+data/src/dem/CDemList.cpp.i
+data/src/icons/48x48/Close.png.i
+data/src/icons/MapRoom.svg.i
+data/src/icons/cache/attributes/yes_Dangerous_Animals.svg.i
+data/src/icons/48x48/AddArea.png.i
+data/src/gis/wpt/IScrOptWpt.ui.i
+data/src/gis/trk/filter/CFilterDouglasPeuker.h.i
+data/src/icons/48x48/Copy.png.i
+data/src/mouse/CScrOptUnclutter.cpp.i
+data/src/icons/Time.svg.i
+data/src/icons/waypoints/Default.svg.i
+data/src/dem/IDemProp.h.i
+data/src/gis/CGisDraw.cpp.i
+data/src/helpers/ISelectCopyAction.ui.i
+data/src/icons/32x32/mime_vrt.png.i
+data/src/icons/48x48/PathOrange.png.i
+data/src/icons/32x32/font.png.i
+data/src/icons/waypoints/BoxBlue.svg.i
+data/cmake_uninstall.cmake.in.i
+data/src/icons/Close.svg.i
+data/src/icons/32x32/2NavProject.png.i
+data/src/icons/cache/32x32/event.png.i
+data/src/icons/48x48/GisProject.png.i
+data/src/icons/waypoints/DiamondBlue.svg.i
+data/src/icons/cache/attributes/yes_Flashlight_required.svg.i
+data/src/helpers/ILinksDialog.ui.i
+data/src/icons/cache/star.svg.i
+data/src/icons/48x48/SelectColor.png.i
+data/src/icons/cache/attributes/yes_Stealth_required.svg.i
+data/src/icons/48x48/WptProj.png.i
+data/src/icons/MouseWheel.svg.i
+data/src/gis/trk/filter/CFilterNewDate.cpp.i
+data/src/icons/MimeTMS.svg.i
+data/src/map/garmin/CGarminStrTbl8.h.i
+data/src/gis/trk/filter/filter.cpp.i
+data/src/icons/FolderDEM.svg.i
+data/src/icons/32x32/MimeRMAP.png.i
+data/src/resources.qrc.i
+data/src/mouse/CMouseEditLine.cpp.i
+data/changelog.txt.i
+data/src/icons/icons.svg.save.i
+data/src/icons/32x32/Move.png.i
+data/src/icons/32x32/wizzard.png.i
+data/src/icons/32x32/Info.png.i
+data/src/qlgt/CQlgtWpt.cpp.i
+data/src/icons/cache/attributes/dis_Camping_available.svg.i
+data/src/gis/db/CDBItem.h.i
+data/src/icons/48x48/AddTrk.png.i
+data/src/icons/48x48/MimeWMTS.png.i
+data/src/icons/icons.svg.save.d
+data/src/dem/CDemPathSetup.cpp.i
+data/src/icons/32x32/GridWizzard.png.i
+data/src/map/garmin/CGarminStrTbl6.cpp.i
+data/src/icons/16x16/deleteAll.png.i
+data/src/icons/cache/attributes/dis_May_require_wading.svg.i
+data/src/canvas/IDrawObject.h.i
+data/src/icons/cache/32x32/needs_maintenance.png.i
+data/src/icons/32x32/icons.svg.save.i
+data/src/icons/cache/attributes/dis_Available_at_all_times.svg.i
+data/src/map/garmin/CGarminTyp.cpp.i
+data/src/icons/16x16/SelectRange.png.i
+data/src/icons/48x48/Database.png.i
+data/src/pics/about.png.i
+data/src/map/wmts/CDiskCache.cpp.i
+data/src/icons/8x8/bullet_dark_green.png.i
+data/src/icons/16x16/toolTip.png.i
+data/src/icons/cache/greenpin.svg.i
+data/src/icons/cache/attributes/yes_Park_and_Grab.svg.i
+data/src/icons/48x48/SaveGIS.png.i
+data/src/icons/Grid.svg.i
+data/src/icons/16x16/map.png.i
+data/src/icons/QMapShack.svg.i
+data/src/icons/cache/attributes/dis_Cliff___falling_rocks.svg.i
+data/src/gis/rte/CGisItemRte.cpp.i
+data/src/icons/cache/attributes/yes_Medium_hike_(1km-10km).svg.i
+data/src/mouse/CMouseMoveWpt.cpp.i
+data/src/icons/32x32/Image.png.i
+data/call_Uncrustify.sh.i
+data/src/icons/48x48/ReloadImage.png.i
+data/src/icons/Check.svg.i
+data/src/mouse/CScrOptEditLine.cpp.i
+data/src/icons/cache/attributes/dis_Field_Puzzle.svg.i
+data/src/plot/CPlotProfile.h.i
+data/src/icons/PointShow.svg.i
+data/src/map/cache/IDiskCache.cpp.i
+data/src/mouse/IScrOptWpt.ui.i
+data/src/gis/trk/filter/CFilterDelete.cpp.i
+data/src/icons/32x32/Up.png.i
+data/src/gis/prj/IGisProject.cpp.i
+data/src/icons/cache/attributes/yes_Abandoned_Structure.svg.i
+data/src/icons/cache/attributes/yes_Available_during_winter.svg.i
+data/src/icons/32x32/Tainted.png.i
+data/src/icons/MimeJNX.svg.i
+data/src/icons/48x48/Paste.png.i
+data/src/icons/16x16/Font.png.i
+data/src/icons/32x32/TextRight.png.i
+data/src/icons/SaveView.svg.i
+data/src/icons/AddMapWorkspace.svg.i
+data/src/gis/CGisListDB.cpp.i
+data/src/icons/cache/32x32/pushpin.png.i
+data/src/icons/32x32/TextCenter.png.i
+data/src/icons/16x16/FromMap.png.i
+data/qmapshack.1.i
+data/src/mouse/IMouse.cpp.i
+data/src/icons/32x32/mime_jnx.png.i
+data/src/icons/48x48/Down.png.i
+data/src/gis-search/IGisSearchWidget.ui.i
+data/src/icons/cache/pushpin.svg.i
+data/src/icons/32x32/Reset.png.i
+data/src/icons/32x32/PathBlue.png.i
+data/src/helpers/CSelectProjectDialog.cpp.i
+data/src/icons/16x16/jnx.png.i
+data/src/gis/CGisListWks.h.i
+data/src/icons/48x48/2NavProject.png.i
+data/src/icons/32x32/GridSetup.png.i
+data/src/icons/16x16/FolderMap.png.i
+data/src/icons/waypoints/32x32/DiamondGreen.png.i
+data/src/icons/cache/attributes/dis_Scuba_gear.svg.i
+data/src/helpers/IInputDialog.ui.i
+data/src/icons/32x32/DeleteOne.png.i
+data/src/icons/cache/treasure.svg.i
+data/Doxyfile.i
+data/src/icons/48x48/Off.png.i
+data/src/icons/16x16/Copy.png.i
+data/src/icons/48x48/MimeRMAP.png.i
+data/src/icons/48x48/Pattern.png.i
+data/src/units/IUnitsSetup.ui.i
+data/src/icons/Cut.svg.i
+data/src/gis/ovl/CGisItemOvlArea.cpp.i
+data/3rdparty/DBConverter/CMainWindow.h.i
+data/src/helpers/CTextEditWidget.cpp.i
+data/src/icons/cache/attributes/yes_Difficult_climbing.svg.i
+data/src/icons/cache/attributes/no_Telephone_nearby.svg.i
+data/src/icons/32x32/to-top.png.i
+data/nsi/QMapShack.ico.i
+data/src/icons/32x32/AreaMove.png.i
+data/src/plot/CPlotProfile.cpp.i
+data/src/icons/cache/attributes/dis_Night_Cache.svg.i
+data/src/icons/32x32/mime_rmap.png.i
+data/src/cursors/cursorArrow.png.i
+data/src/icons/cache/attributes/no_Picnic_tables_nearby.svg.i
+data/src/icons/8x8/bullet_dark_gray.png.i
+data/src/icons/cache/attributes/no_Campfires.svg.i
+data/src/icons/cache/32x32/up_icon.png.i
+data/src/icons/waypoints/32x32/DiamondBlue.png.i
+data/src/icons/16x16/Off.png.i
+data/src/icons/32x32/Lock.png.i
+data/src/icons/48x48/SetEle.png.i
+data/src/map/wmts/IDiskCache.h.i
+data/src/icons/32x32/Undo.png.i
+data/src/icons/48x48/Area.png.i
+data/3rdparty/CGetOpt/CGetOpt.cpp.i
+data/src/icons/48x48/DatabaseSetup.png.i
+data/src/gis/ovl/IScrOptOvlArea.ui.i
+data/src/icons/32x32/MimeTMS.png.i
+data/src/icons/32x32/AddTrk.png.i
+data/src/gis/qms/CQmsProject.h.i
+data/src/icons/48x48/ToolTip.png.i
+data/src/icons/32x32/AddProject.png.i
+data/src/icons/cache/attributes/no_Stroller_accessible.svg.i
+data/src/icons/DeleteMultiple.svg.i
+data/src/helpers/CElevationDialog.h.i
+data/src/map/CMapTMS.cpp.i
+data/src/cursors/cursorMoveMap.png.i
+data/3rdparty/DBConverter/qlgt/IItem.h.i
+data/3rdparty/DBConverter/qlgt/IQlgtOverlay.cpp.i
+data/src/icons/16x16/gridWizard.png.i
+data/src/gis/trk/filter/CFilterMedian.cpp.i
+data/src/map/CMapVRT.cpp.i
+data/src/icons/32x32/PathOrange.png.i
+data/src/icons/cache/attributes/dis_Park_and_Grab.svg.i
+data/GpxExamples/COPYRIGHT.i
+data/src/icons/Down.svg.i
+data/src/canvas/CCanvas.cpp.i
+data/src/icons/cache/attributes/no_Camping_available.svg.i
+data/src/icons/waypoints/PinRed.svg.i
+data/src/icons/48x48/PathGreen.png.i
+data/src/icons/8x8/bullet_dark_magenta.png.i
+data/src/icons/32x32/SetupMapWorkspace.png.i
+data/src/mouse/CScrOptRangeTrk.h.i
+data/src/helpers/CLinksDialog.h.i
+data/src/icons/Track.svg.i
+data/src/icons/48x48/3DFix.png.i
+data/src/icons/16x16/icons.svg.save.i
+data/nsi/QMapShack_Installer32.nsi.i
+data/src/qlgt/CQlgtFolder.cpp.i
+data/src/icons/32x32/delete.png.i
+data/src/icons/32x32/PointMove.png.i
+data/src/map/CMapPropSetup.cpp.i
+data/src/units/CUnitsSetup.h.i
+data/src/icons/cache/32x32/SearchIcon.png.i
+data/src/icons/GridWizzard.svg.i
+data/src/device/CDeviceGarmin.cpp.i
+data/src/icons/16x16/Right.png.i
+data/src/icons/16x16/QMapShack.png.i
+data/src/icons/TextUnderlined.svg.i
+data/src/icons/48x48/VrtBuilder.png.i
+data/src/map/CMapMAP.cpp.i
+data/src/icons/DeleteOne.svg.i
+data/src/map/garmin/CGarminStrTbl6.h.i
+data/src/gis/CGisItemTrk.h.i
+data/src/icons/16x16/ToBottom.png.i
+data/src/gis/trk/filter/CFilterMedian.h.i
+data/src/map/garmin/CGarminStrTblUtf8.h.i
+data/src/gis/wpt/CDetailsGeoCache.cpp.i
+data/src/qlgt/CQlgtFolder.h.i
+data/src/grid/IProjWizard.ui.i
+data/src/icons/16x16/selectColor.png.i
+data/src/map/CMapJNX.h.i
+data/src/icons/2NavProject.svg.i
+data/src/helpers/CLinksDialog.cpp.i
+data/src/mouse/CScrOptRangeTrk.cpp.i
+data/src/icons/32x32/Cancel.png.i
+data/templates/source.cpp.i
+data/src/gis/db/CDBFolderLostFound.h.i
+data/src/icons/32x32/EditDetails.png.i
+data/src/icons/8x8/bullet_orange.png.i
+data/nsi/Help.ico.i
+data/3rdparty/DBConverter/qlgt/CQlgtRoute.h.i
+data/src/icons/32x32/LineMove.png.i
+data/src/icons/8x8/bullet_cyan.png.i
+data/src/icons/32x32/UnitSetup.png.i
+data/src/icons/32x32/DatabaseConvert.png.i
+data/src/icons/cache/corrected.svg.i
+data/src/cursors/cursorMoveWpt.png.i
+data/src/icons/16x16/AddWpt.png.i
+data/src/icons/48x48/TextLeft.png.i
+data/src/helpers/CInputDialog.h.i
+data/src/icons/32x32/Add.png.i
+data/src/icons/16x16/GridWizzard.png.i
+data/src/icons/16x16/MimeVRT.png.i
+data/src/helpers/ITextEditWidget.ui.i
+data/src/map/CMapRMAP.cpp.i
+data/src/icons/16x16/EditText.png.i
+data/src/icons/Error.svg.i
+data/src/gis/trk/filter/CFilterOffsetElevation.h.i
+data/src/gis/trk/filter/CFilterObscureDate.h.i
+data/src/gis/ovl/CDetailsOvlArea.cpp.i
+data/src/icons/16x16/GisProject.png.i
+data/src/icons/16x16/rmap.png.i
+data/nsi/konsole.ico.i
+data/src/icons/16x16/LineMove.png.i
+data/src/dem/CDem.cpp.i
+data/src/icons/32x32/map.png.i
+data/src/map/IMap.h.i
+data/src/icons/48x48/Help.png.i
+data/src/icons/cache/attributes/dis_Off-road_vehicles.svg.i
+data/src/icons/8x8/bullet_brown.png.i
+data/src/gis/CGisProject.cpp.i
+data/src/icons/16x16/EditDetails.png.i
+data/src/icons/TextRight.svg.i
+data/src/icons/cache/attributes/yes_Fuel_Nearby.svg.i
+data/src/icons/48x48/GridWizzard.png.i
+data/src/icons/48x48/Right.png.i
+data/src/icons/cache/virtual.svg.i
+data/src/mouse/CMouseRangeTrk.h.i
+data/src/icons/cache/attributes/yes_Climbing_gear.svg.i
+data/src/dem/CDemList.h.i
+data/src/helpers/CPositionDialog.h.i
+data/src/icons/48x48/DeleteMultiple.png.i
+data/src/gis/tnv/CTwoNavProject.cpp.i
+data/src/helpers/CAppOpts.h.i
+data/src/icons/32x32/UnLock.png.i
+data/src/gis/gpx/serialization.cpp.i
+data/src/gis/search/CSearchGoogle.cpp.i
+data/src/icons/TextJustified.svg.i
+data/src/gis/wpt/CProjWpt.cpp.i
+data/src/icons/cache/attributes/dis_Public_restrooms_nearby.svg.i
+data/src/icons/cache/unknown.svg.i
+data/src/icons/32x32/Paste.png.i
+data/src/icons/32x32/TrkCut.png.i
+data/src/icons/48x48/MapRoom.png.i
+data/src/icons/cache/attributes/no_Stealth_required.svg.i
+data/src/dem/CDemItem.cpp.i
+data/src/icons/cache/32x32/star.png.i
+data/src/icons/48x48/2DFix.png.i
+data/src/CMapDB.cpp.i
+data/src/icons/LoadView.svg.i
+data/src/icons/cache/attributes/yes_Off-road_vehicles.svg.i
+data/src/mouse/IMouse.h.i
+data/cmake/Modules/FindXercesC.cmake.i
+data/3rdparty/DBConverter/CQmsDb.cpp.i
+data/src/icons/16x16/WptProj.png.i
+data/src/icons/32x32/FromMap.png.i
+data/src/map/CMapList.cpp.i
+data/src/CFileExt.h.i
+data/src/icons/32x32/GisProject.png.i
+data/src/icons/32x32/Path.png.i
+data/src/mouse/CScrOptPoint.h.i
+data/src/icons/48x48/MimeDemVRT.png.i
+data/src/plot/CPlotTrack.h.i
+data/3rdparty/DBConverter/qlgt/IItem.cpp.i
+data/src/gis/rte/CScrOptRte.h.i
+data/src/icons/cache/attributes/yes_Parking_available.svg.i
+data/src/gis/wpt/CScrOptWpt.cpp.i
+data/src/pics/noMap256x256.png.i
+data/src/icons/Opacity.svg.i
+data/src/gis/CGisItemRte.cpp.i
+data/src/icons/16x16/TextBold.png.i
+data/src/helpers/CHistoryListWidget.h.i
+data/src/icons/cache/mega.svg.i
+data/src/gis/trk/filter/CFilterReplaceElevation.h.i
+data/src/icons/48x48/SaveGISAs.png.i
+data/src/icons/16x16/toBottom.png.i
+data/src/gis/db/CDBFolderProject.h.i
+data/src/gis/db/CDBItem.cpp.i
+data/src/icons/16x16/view.png.i
+data/src/gis/bin/serialization.cpp.i
+data/src/icons/WptProx.svg.i
+data/src/gis/IGisProject.cpp.i
+data/src/icons/16x16/ToTop.png.i
+data/src/icons/cache/attributes/no_Park_and_Grab.svg.i
+data/src/device/CDeviceWatcherWindows.h.i
+data/src/icons/16x16/NoFix.png.i
+data/src/icons/cache/SearchIcon.svg.i
+data/src/icons/cache/32x32/corrected.png.i
+data/src/icons/32x32/selectColor.png.i
+data/src/map/garmin/CGarminPoint.cpp.i
+data/src/icons/48x48/MouseWheel.png.i
+data/src/IDB.cpp.i
+data/src/cursors/COPYRIGHT.i
+data/src/icons/16x16/PointMove.png.i
+data/src/icons/cache/32x32/mega.png.i
+data/src/icons/32x32/Copy.png.i
+data/src/map/wmts/CDiskCache.h.i
+data/src/device/CDeviceWatcherWindows.cpp.i
+data/src/icons/cache/attributes/dis_Poison_plants.svg.i
+data/src/icons/cache/attributes/yes_Hunting.svg.i
+data/src/icons/cache/ftf.svg.i
+data/src/canvas/CCanvasSetup.h.i
+data/src/icons/cache/attributes/no_Public_restrooms_nearby.svg.i
+data/src/icons/48x48/TextCenter.png.i
+data/src/icons/cache/32x32/maxicon.png.i
+data/src/map/garmin/Garmin.h.i
+data/src/icons/cache/attributes/yes_Boat.svg.i
+data/src/icons/cache/bluepin.svg.i
+data/src/gis/db/ISetupDatabase.ui.i
+data/src/icons/16x16/MimeJNX.png.i
+data/src/icons/cache/attributes/dis_Dangerous_area.svg.i
+data/src/icons/cache/attributes/dis_Drinking_water_nearby.svg.i
+data/src/icons/cache/32x32/log.png.i
+data/GpxExamples/qlandkarte.gpx.i
+data/src/icons/cache/attributes/dis_Available_during_winter.svg.i
+data/src/icons/cache/attributes/dis_Campfires.svg.i
+data/src/icons/48x48/PointShow.png.i
+data/src/helpers/IWptIconDialog.ui.i
+data/src/icons/32x32/toBottom.png.i
+data/src/icons/SaveGIS.svg.i
+data/src/icons/48x48/FolderDEM.png.i
+data/src/mouse/CScrOptEditLine.h.i
+data/src/icons/16x16/down.png.i
+data/src/icons/32x32/MimeMAP.png.i
+data/src/icons/cache/earth.svg.i
+data/src/mouse/IScrOpt.h.i
+data/src/icons/cache/attributes/dis_Parking_available.svg.i
+data/src/plot/CPlotData.cpp.i
+data/src/icons/32x32/AddMapWorkspace.png.i
+data/src/icons/cache/attributes/yes_Access_or_parking_fee.svg.i
+data/src/helpers/CPhotoViewer.h.i
+data/src/icons/Database.svg.i
+data/src/gis/ovl/CScrOptOvlArea.h.i
+data/src/icons/cache/COPYRIGHT.i
+data/src/icons/Device.svg.i
+data/src/icons/32x32/PointShow.png.i
+data/src/gis/trk/filter/CFilterNewDate.h.i
+data/src/icons/cache/32x32/wherigo.png.i
+data/qmapshack.desktop.i
+data/src/icons/cache/attributes/yes_Long_Hike_(+10km).svg.i
+data/src/icons/32x32/ToTop.png.i
+data/src/animation/COPYRIGHT.i
+data/src/icons/16x16/TrkCut.png.i
+data/src/units/CTimeZoneSetup.cpp.i
+data/src/icons/cache/attributes/yes_Snowshoes.svg.i
+data/src/icons/cache/attributes/no_Fuel_Nearby.svg.i
+data/3rdparty/DBConverter/qlgt/CQlb.cpp.i
+data/src/device/CDeviceTwoNav.h.i
+data/src/helpers/CSelectCopyAction.cpp.i
+data/src/icons/cache/attributes/dis_Long_Hike_(+10km).svg.i
+data/src/icons/cache/attributes/no_Night_Cache.svg.i
+data/CMakeLists.txt.i
+data/src/icons/cache/32x32/treasure.png.i
+data/src/icons/cache/maxicon.svg.i
+data/src/helpers/CTextEditWidget.h.i
+data/src/icons/16x16/DeleteOne.png.i
+data/src/icons/48x48/MimeJNX.png.i
+data/src/gis/db/ISetupDB.ui.i
+data/src/resources.rc.i
+data/src/icons/48x48/PathBlue.png.i
+data/src/mouse/CScrOptPoint.cpp.i
+data/src/icons/48x48/TextItalic.png.i
+data/src/icons/GisProject.svg.i
+data/src/icons/waypoints/32x32/FlagBlue.png.i
+data/src/icons/48x48/Print.png.i
+data/src/icons/48x48/gridWizard.png.i
+data/src/icons/cache/32x32/other.png.i
+data/GpxExamples/basecamp.gpx.i
+data/src/map/IMapPropSetup.cpp.i
+data/src/icons/PointHide.svg.i
+data/src/dem/IDemPropSetup.ui.i
+data/src/gis/db/CSetupWorkspace.cpp.i
+data/src/mouse/CScrOptRange.h.i
+data/src/icons/cache/minicon.svg.i
+data/src/mouse/IScrOptRange.ui.i
+data/src/gis/wpt/CDetailsWpt.cpp.i
+data/src/icons/32x32/MouseWheel.png.i
+data/src/grid/mitab.cpp.i
+data/src/icons/32x32/AddImage.png.i
+data/src/icons/Reverse.svg.i
+data/src/qlgt/IItem.h.i
+data/src/icons/LineMove.svg.i
+data/src/icons/32x32/nightDay.png.i
+data/3rdparty/CGetOpt/CMakeLists.txt.i
+data/src/icons/cache/attributes/yes_Special_Tool_Required.svg.i
+data/src/units/CUnitsSetup.cpp.i
+data/src/gis/IGisLine.h.i
+data/src/icons/32x32/SaveGIS.png.i
+data/src/map/mapsforge/types.cpp.i
+data/src/icons/cache/32x32/found.png.i
+data/src/icons/32x32/CutHistory.png.i
+data/src/icons/48x48/SetupMapWorkspace.png.i
+data/src/icons/16x16/Info.png.i
+data/src/dem/CDemItem.h.i
+data/cmake/Modules/COPYING-CMAKE-SCRIPTS.i
+data/src/icons/48x48/AreaMove.png.i
+data/src/icons/16x16/Lock.png.i
+data/src/icons/waypoints/Residence.svg.i
+data/mkfile.i
+data/maproom.desktop.i
+data/src/icons/32x32/rmap.png.i
+data/src/qlgt/IQlgtOverlay.cpp.i
+data/src/icons/16x16/MouseWheel.png.i
+data/src/dem/CDemPropSetup.cpp.i
+data/cmake/Modules/FindJPEG.cmake.i
+data/3rdparty/CGetOpt/classGetOpt.html.i
+data/src/map/garmin/CGarminStrTblUtf8.cpp.i
+data/src/icons/32x32/Time.png.i
+data/src/icons/16x16/SelectColor.png.i
+data/src/gis/trk/filter/CFilterReplaceElevation.cpp.i
+data/src/animation/README.i
+data/src/icons/48x48/AddMapWorkspace.png.i
+data/src/icons/cache/attributes/yes_Scenic_view.svg.i
+data/src/icons/32x32/Print.png.i
+data/src/icons/32x32/TextBold.png.i
+data/src/icons/cache/attributes/yes_Cross_Country_Skis.svg.i
+data/src/icons/Pattern.svg.i
+data/src/gis/db/CLostFoundProject.h.i
+data/src/icons/cache/attributes/yes_Bicycles.svg.i
+data/src/icons/cache/attributes/yes_Cliff___falling_rocks.svg.i
+data/src/icons/16x16/fromMap.png.i
+data/src/icons/32x32/DatabaseSetup.png.i
+data/src/icons/32x32/3DFix.png.i
+data/src/icons/48x48/UnLock.png.i
+data/src/cursors/cursorMove.png.i
+data/src/icons/cache/webcam.svg.i
+data/src/icons/32x32/QMapShack.png.i
+data/src/icons/32x32/TextItalic.png.i
+data/src/icons/cache/attributes/dis_Quads.svg.i
+data/src/icons/48x48/gridSetup.png.i
+data/src/icons/cache/down_icon.svg.i
+data/src/icons/MimeWMTS.svg.i
+data/src/icons/cache/attributes/dis_Dangerous_Animals.svg.i
+data/src/icons/16x16/poiText.png.i
+data/src/gis/db/CDBFolderLostFound.cpp.i
+data/src/icons/ToolTip.svg.i
+data/3rdparty/DBConverter/converter.cpp.i
+data/src/grid/mitab.h.i
+data/src/icons/cache/attributes/yes_Dogs.svg.i
+data/src/grid/CGridSetup.h.i
+data/src/icons/16x16/TextJustified.png.i
+data/src/icons/AddProject.svg.i
+data/src/icons/48x48/Check.png.i
+data/src/icons/cache/DistIcon.svg.i
+data/src/icons/16x16/DeleteMultiple.png.i
+data/src/map/CMapPropSetup.h.i
+data/src/icons/8x8/bullet_white.png.i
+data/src/map/CMapJNX.cpp.i
+data/src/CCanvas.cpp.i
+data/src/gis/db/CDBFolderProject.cpp.i
+data/src/icons/16x16/scale.png.i
+data/src/icons/SelectColor.svg.i
+data/src/device/IDevice.h.i
+data/src/icons/waypoints/BoxRed.svg.i
+data/src/icons/AddWpt.svg.i
+data/src/icons/AddArea.svg.i
+data/src/icons/cache/attributes/no_Recommended_for_kids.svg.i
+data/src/icons/32x32/Left.png.i
+data/src/icons/cache/waypoint-flag-red.svg.i
+data/src/icons/cache/attributes/yes_Drinking_water_nearby.svg.i
+data/src/icons/waypoints/FlagRed.svg.i
+data/src/icons/32x32/WptProx.png.i
+data/3rdparty/CGetOpt/getopt.pro.i
+data/src/icons/2DFix.svg.i
+data/src/icons/cache/attributes/yes_Wheelchair_accessible.svg.i
+data/src/CAbout.cpp.i
+data/src/icons/DelImage.svg.i
+data/src/helpers/IPhotoAlbum.ui.i
+data/src/icons/cache/attributes/yes_Camping_available.svg.i
+data/src/gis/trk/filter/IFilterReset.ui.i
+data/templates/header.h.i
+data/src/icons/32x32/Start.png.i
+data/src/icons/waypoints/32x32/BoxBlue.png.i
+data/src/gis/db/CDBFolderGroup.cpp.i
+data/src/gis/CGisItemWpt.h.i
+data/src/units/CUnitImperial.cpp.i
+data/src/icons/cache/attributes/no_Recommended_at_night.svg.i
+data/src/gis/trk/CScrOptTrk.h.i
+data/src/map/IMapProp.h.i
+data/src/helpers/CHistoryListWidget.cpp.i
+data/src/map/garmin/IGarminStrTbl.cpp.i
+data/src/locale/qmapshack_es.ts.i
+data/src/units/CUnitNautic.cpp.i
+data/src/icons/GpxProject.svg.i
+data/src/icons/48x48/Up.png.i
+data/src/map/IMapProp.ui.i
+data/src/map/CMapWMTS.h.i
+data/src/mouse/CMouseEditArea.cpp.i
+data/src/icons/16x16/MimeWMTS.png.i
+data/src/icons/cache/attributes/yes_Watch_for_livestock.svg.i
+data/src/icons/NoFix.svg.i
+data/src/gis/CGisItemRte.h.i
+data/src/icons/32x32/jnx.png.i
+data/src/gis/db/CDBFolderOther.cpp.i
+data/src/pics/compass.svg.i
+data/src/gis/trk/filter/CFilterObscureDate.cpp.i
+data/src/icons/waypoints/DiamondRed.svg.i
+data/src/plot/CPlotAxis.h.i
+data/src/icons/cache/attributes/yes_Thorns.svg.i
+data/src/icons/Paste.svg.i
+data/src/icons/8x8/bullet_dark_cyan.png.i
+data/src/gis/IGisItem.cpp.i
+data/cmake/CMakeLists.txt.i
+data/src/icons/32x32/DeleteMultiple.png.i
+data/src/map/CGrid.h.i
+data/src/canvas/ICanvasSetup.ui.i
+data/3rdparty/DBConverter/CQlgtDb.h.i
+data/src/IDB.h.i
+data/src/icons/16x16/TextRight.png.i
+data/src/gis/db/CSetupDB.h.i
+data/src/icons/cache/attributes/dis_Stroller_accessible.svg.i
+data/src/IMainWindow.ui.i
+data/src/icons/16x16/Cut.png.i
+data/src/icons/cache/attributes/dis_May_require_swimming.svg.i
+data/src/icons/16x16/gridSetup.png.i
+data/src/icons/32x32/AddArea.png.i
+data/src/icons/waypoints/32x32/DiamondRed.png.i
+data/maproom.1.i
+data/src/icons/cache/attributes/yes_Snowmobiles.svg.i
+data/src/icons/16x16/flipDirection.png.i
+data/src/icons/32x32/fromMap.png.i
+data/src/cursors/cursorMoveLine.png.i
+data/src/icons/32x32/POIText.png.i
+data/src/dem/CDemVRT.cpp.i
+data/src/grid/CProjWizard.cpp.i
+data/src/icons/32x32/Track.png.i
+data/src/icons/48x48/TextUnderlined.png.i
+data/src/icons/cache/32x32/traditional.png.i
+data/src/icons/cache/attributes/no_Long_Hike_(+10km).svg.i
+data/src/icons/48x48/EditText.png.i
+data/src/icons/48x48/Track.png.i
+data/src/icons/cache/attributes/yes_Poison_plants.svg.i
+data/src/icons/cache/attributes/yes_Stroller_accessible.svg.i
+data/src/icons/cache/attributes/dis_Stealth_required.svg.i
+data/src/icons/48x48/PointHide.png.i
+data/src/locale/qmapshack_de.ts.i
+data/src/icons/WptProj.svg.i
+data/src/icons/cache/32x32/write_note.png.i
+data/src/icons/cache/attributes/dis_Abandoned_mines.svg.i
+data/src/pics/splash.png.i
+data/src/icons/16x16/3DFix.png.i
+data/src/icons/16x16/NightDay.png.i
+data/src/icons/DatabaseConvert.svg.i
+data/src/icons/CutHistory.svg.i
+data/src/icons/cache/attributes/yes_Significant_Hike.svg.i
+data/src/map/CMapPathSetup.h.i
+data/src/icons/waypoints/FlagGreen.svg.i
+data/src/gis/db/CSetupDatabase.cpp.i
+data/src/gis/wpt/CProjWpt.h.i
+data/src/gis-search/CSearchGoogle.cpp.i
+data/src/gis-search/CGisSearchWidget.h.i
+data/src/icons/16x16/Scale.png.i
+data/src/icons/cache/attributes/dis_Motorcycles.svg.i
+data/src/icons/32x32/TimeZoneSetup.png.i
+data/src/icons/32x32/FolderMap.png.i
+data/src/gis/trk/filter/IFilterOffsetElevation.ui.i
+data/src/gis/trk/IDetailsTrk.ui.i
+data/src/icons/16x16/mime_img.png.i
+data/src/icons/48x48/NoFix.png.i
+data/src/icons/waypoints/Waypoint.svg.i
+data/src/dem/CDemDraw.h.i
+data/src/CAppOpts.h.i
+data/src/icons/Off.svg.i
+data/src/icons/48x48/FromMap.png.i
+data/src/map/CMapVrtBuilder.cpp.i
+data/nsi/kfm_home.ico.i
+data/src/icons/Lock.svg.i
+data/src/icons/48x48/Cut.png.i
+data/src/map/CMapIMG.cpp.i
+data/src/icons/AreaMove.svg.i
+data/src/units/ITimeZoneSetup.ui.i
+data/src/units/IUnit.cpp.i
+data/src/icons/16x16/font.png.i
+data/src/gis/trk/filter/IFilterReplaceElevation.ui.i
+data/src/icons/32x32/Link.png.i
+data/src/icons/32x32/NoFix.png.i
+data/src/icons/cache/restore.svg.i
+data/src/icons/48x48/NightDay.png.i
+data/src/icons/16x16/ToolTip.png.i
+data/src/icons/PointMove.svg.i
+data/src/icons/16x16/MimeDemVRT.png.i
+data/src/map/IMap.cpp.i
+data/src/map/mapsforge/types.h.i
+data/src/gis/trk/filter/CFilterSpeed.h.i
+data/src/icons/cache/attributes/dis_Scenic_view.svg.i
+data/src/icons/cache/32x32/dnf.png.i
+data/src/gis/db/CLostFoundProject.cpp.i
+data/src/gis-search/CSearchGoogle.h.i
+data/src/gis/IGisProject.h.i
+data/src/icons/cache/attributes/no_Wheelchair_accessible.svg.i
+data/src/icons/48x48/AddProject.png.i
+data/src/icons/cache/attributes/dis_Needs_maintenance.svg.i
+data/src/qlgt/CQlgtDiary.cpp.i
+data/src/map/CMapList.h.i
+data/src/plot/CPlotSpeed.h.i
+data/src/gis-search/IGisSearch.cpp.i
+data/src/dem/CDem.h.i
+data/src/icons/48x48/PointMove.png.i
+data/src/icons/cache/attributes/dis_Telephone_nearby.svg.i
+data/src/mouse/IScrOptRangeTrk.ui.i
+data/src/icons/32x32/Area.png.i
+data/src/icons/cache/found.svg.i
+data/src/icons/32x32/WptProj.png.i
+data/src/icons/cache/32x32/waypoint-flag-red.png.i
+data/src/map/CMapWMTS.cpp.autosave.i
+data/src/helpers/CInputDialog.cpp.i
+data/src/icons/waypoints/32x32/FlagGreen.png.i
+data/src/icons/16x16/UnLock.png.i
+data/src/icons/32x32/check.png.i
+data/src/icons/32x32/PathGreen.png.i
+data/src/icons/16x16/2DFix.png.i
+data/src/icons/cache/attributes/no_Available_during_winter.svg.i
+data/src/gis/trk/filter/CFilterDelete.h.i
+data/src/icons/cache/attributes/no_Motorcycles.svg.i
+data/src/gis/trk/filter/CFilterReset.h.i
+data/src/icons/Image.svg.i
+data/src/icons/Start.svg.i
+data/src/mouse/CMouseEditArea.h.i
+data/src/icons/48x48/Move.png.i
+data/src/icons/SetupMapWorkspace.svg.i
+data/src/mouse/CMouseRangeTrk.cpp.i
+data/src/icons/32x32/EditText.png.i
+data/src/qlgt/IQlgtOverlay.h.i
+data/src/icons/16x16/wizzard.png.i
+data/src/icons/32x32/scale.png.i
+data/src/gis/trk/CCombineTrk.cpp.i
+data/src/icons/48x48/FolderMap.png.i
+data/src/icons/48x48/Info.png.i
+data/src/icons/cache/cito.svg.i
+data/src/icons/waypoints/32x32/PinRed.png.i
+data/src/icons/MimeDemVRT.svg.i
+data/src/icons/16x16/AddMapWorkspace.png.i
+data/src/icons/32x32/ToolTip.png.i
+data/src/icons/cache/attributes/yes_Night_Cache.svg.i
+data/src/icons/48x48/QMapShack.png.i
+data/src/icons/cache/attributes/dis_Cross_Country_Skis.svg.i
+data/src/gis/prj/IGisProject.h.i
+data/src/qlgt/CQlgtTrack.h.i
+data/src/mouse/CScrOptWpt.h.i
+data/src/icons/cache/write_note.svg.i
+data/src/icons/8x8/bullet_red.png.i
+data/src/gis/WptIcons.cpp.i
+data/src/icons/cache/attributes/dis_Access_or_parking_fee.svg.i
+data/src/icons/48x48/Font.png.i
+data/src/icons/16x16/nightDay.png.i
+data/src/icons/cache/attributes/no_Horses.svg.i
+data/3rdparty/DBConverter/CQmsDb.h.i
+data/src/animation/loader.gif.i
+data/src/icons/Font.svg.i
+data/src/icons/Add.svg.i
+data/src/icons/EditText.svg.i
+data/cmake/Modules/DefineCMakeDefaults.cmake.i
+data/src/icons/cache/attributes/yes_Dangerous_area.svg.i
+data/src/map/CMap.cpp.i
+data/src/icons/48x48/Time.png.i
+data/src/icons/48x48/UnitSetup.png.i
+data/src/icons/cache/event.svg.i
+data/src/animation/WTFPL-2.i
+data/src/icons/PathOrange.svg.i
+data/src/icons/16x16/mime_jnx.png.i
+data/src/icons/Left.svg.i
+data/src/dem/IDem.h.i
+data/src/CSettings.h.i
+data/src/icons/32x32/FolderDEM.png.i
+data/src/gis/wpt/IProjWpt.ui.i
+data/src/gis/gpx/CGisProject.cpp.i
+data/src/icons/48x48/SaveView.png.i
+data/src/icons/48x48/Apply.png.i
+data/src/icons/SetEle.svg.i
+data/src/dem/IDem.cpp.i
+data/src/icons/16x16/up.png.i
+data/src/map/cache/CDiskCache.cpp.i
+data/src/icons/32x32/SetEle.png.i
+data/src/icons/cache/attributes/dis_Food_Nearby.svg.i
+data/cmake/Modules/FindQextSerialPort.cmake.i
+data/3rdparty/DBConverter/CMakeLists.txt.i
+data/src/icons/32x32/gridSetup.png.i
+data/src/icons/SaveGISAs.svg.i
+data/src/icons/32x32/Off.png.i
+data/src/icons/waypoints/PinGreen.svg.i
+data/src/Platform.h.i
+data/src/icons/cache/attributes/dis_Public_transportation.svg.i
+data/src/icons/cache/attributes/no_Snowmobiles.svg.i
+data/src/icons/32x32/Check.png.i
+data/src/map/IMapPropSetup.ui.i
+data/src/icons/16x16/MimeMAP.png.i
+data/src/helpers/ISelectProjectDialog.ui.i
+data/src/icons/16x16/TextLeft.png.i
+data/src/gis/db/CSetupWorkspace.h.i
+data/src/icons/cache/attributes/dis_Short_hike_(less_than_1km).svg.i
+data/src/map/IMapPathSetup.ui.i
+data/src/icons/48x48/GridSetup.png.i
+data/src/mouse/CScrOptWpt.cpp.i
+data/src/qlgt/CQlgtTrack.cpp.i
+data/src/icons/48x48/Combine.png.i
+data/src/icons/cache/attributes/yes_Picnic_tables_nearby.svg.i
+data/src/icons/cache/up_icon.svg.i
+data/src/icons/16x16/delete.png.i
+data/src/icons/Info.svg.i
+data/src/icons/AddArea.svg.d
+data/src/gis/trk/IScrOptTrk.ui.i
+data/src/qlgt/CQlgtRoute.h.i
+data/src/icons/waypoints/PinBlue.svg.i
+data/src/gis/CGisItemTrk.cpp.i
+data/src/icons/48x48/Link.png.i
+data/src/helpers/CSelectProjectDialog.h.i
+data/src/icons/32x32/DelImage.png.i
+data/src/mouse/CMouseEditTrk.cpp.i
+data/src/icons/Print.svg.i
+data/src/icons/16x16/Reset.png.i
+data/src/cursors/cursorAdd.png.i
+data/src/icons/32x32/reset.png.i
+data/src/icons/48x48/SearchGoogle.png.i
+data/src/helpers/CElevationDialog.cpp.i
+data/src/helpers/CSettings.h.i
+data/src/dem/CDemVRT.h.i
+data/src/icons/Cancel.svg.i
+data/src/gis/trk/CGisItemTrk.h.i
+data/3rdparty/DBConverter/qlgt/IQlgtOverlay.h.i
+data/src/gis/wpt/IDetailsGeoCache.ui.i
+data/src/gis/CGisItemWpt.cpp.i
+data/src/icons/32x32/Empty.png.i
+data/src/helpers/CFileExt.h.i
+data/src/map/CMapVRT.h.i
+data/src/canvas/CCanvas.h.i
+data/src/icons/cache/attributes/no_Quads.svg.i
+data/src/icons/32x32/up.png.i
+data/src/map/garmin/CGarminPolygon.h.i
+data/src/gis/gpx/CGpxProject.cpp.i
+data/src/icons/cache/attributes/dis_Wireless_Beacon.svg.i
+data/src/icons/16x16/redGlow.png.i
+data/src/icons/16x16/Track.png.i
+data/src/icons/PathBlue.svg.i
+data/src/icons/cache/32x32/OCMLogoSmall.png.i
+data/src/map/CMapWMTS.cpp.i
+data/src/icons/48x48/Redo.png.i
+data/src/icons/16x16/Help.png.i
+data/src/icons/cache/attributes/yes_May_require_wading.svg.i
+data/src/map/CMapDraw.h.i
+data/src/map/IMapPropSetup.h.i
+data/src/icons/SearchGoogle.svg.i
+data/src/icons/16x16/add.png.i
+data/src/grid/CProjWizard.h.i
+data/src/helpers/CWptIconDialog.h.i
+data/src/mouse/CMouseNormal.h.i
+data/src/map/CMapIMG.h.i
+data/src/mouse/IScrOpt.cpp.i
+data/src/icons/16x16/TextItalic.png.i
+data/src/icons/8x8/bullet_blue.png.i
+data/src/icons/cache/32x32/multi.png.i
+data/src/icons/VrtBuilder.svg.i
+data/src/icons/32x32/ReloadImage.png.i
+data/src/icons/cache/32x32/ftf.png.i
+data/src/plot/CPlotAxis.cpp.i
+data/src/icons/32x32/Route.png.i
+data/src/main.cpp.i
+data/src/helpers/Platform.h.i
+data/src/icons/16x16/TimeZoneSetup.png.i
+data/cmake/Modules/FindGDAL.cmake.i
+data/src/icons/Tainted.svg.i
+data/src/icons/waypoints/32x32/FlagRed.png.i
+data/src/icons/cache/attributes/dis_Dogs.svg.i
+data/src/helpers/IPositionDialog.ui.i
+data/src/icons/cache/multi.svg.i
+data/src/helpers/IElevationDialog.ui.i
+data/src/icons/16x16/pathMap.png.i
+data/src/icons/cache/32x32/unknown.png.i
+data/3rdparty/DBConverter/IMainWindow.ui.i
+data/3rdparty/DBConverter/qlgt/CQlb.h.i
+data/src/icons/cache/32x32/down_icon.png.i
+data/nsi/copyfiles.bat.i
+data/src/pics/compass.png.i
+data/src/icons/cache/attributes/no_Drinking_water_nearby.svg.i
+data/src/icons/cache/attributes/yes_Ticks.svg.i
+data/src/icons/cache/attributes/yes_Available_at_all_times.svg.i
+data/src/gis/prj/IDetailsPrj.ui.i
+data/src/icons/cache/32x32/OCMLogo.png.i
+data/src/gis/trk/CGisItemTrk.cpp.i
+data/3rdparty/DBConverter/resources.qrc.i
+data/src/icons/Help.svg.i
+data/src/icons/TimeZoneSetup.svg.i
+data/src/icons/TextCenter.svg.i
+data/src/icons/cache/32x32/minicon.png.i
+data/src/icons/48x48/SelectRange.png.i
+data/src/mouse/IMouseEditLine.h.i
+data/src/icons/cache/attributes/no_Dogs.svg.i
+data/src/qlgt/CQlgtRoute.cpp.i
+data/src/mouse/CMouseMoveWpt.h.i
+data/src/icons/cache/attributes/yes_Wireless_Beacon.svg.i
+data/src/qlgt/CImportDatabase.h.i
+data/src/gis/bin/CBinProject.h.i
+data/README.md.i
+data/nsi/copyfiles32.bat.i
+data/src/icons/32x32/Help.png.i
+data/src/icons/cache/attributes/no_Food_Nearby.svg.i
+data/src/icons/48x48/TextBold.png.i
+data/src/IDrawContext.h.i
+data/src/icons/16x16/Paste.png.i
+data/src/gis/tnv/CTwoNavProject.h.i
+data/src/icons/32x32/TextUnderlined.png.i
+data/src/device/CDeviceWatcherLinux.cpp.i
+data/src/dem/CDemPropSetup.h.i
+data/src/qlgt/CQmsDb.h.i
+data/src/gis/rte/CScrOptRte.cpp.i
+data/src/gis/wpt/CGisItemWpt.h.i
+data/src/plot/ITrack.cpp.i
+data/src/icons/cache/attributes/no_Parking_available.svg.i
+data/src/icons/8x8/bullet_dark_yellow.png.i
+data/src/icons/48x48/MimeIMG.png.i
+data/src/mouse/CMouseEditLine.h.i
+data/src/icons/SelectRange.svg.i
+data/src/gis/ovl/CDetailsOvlArea.h.i
+data/src/gis/WptIcons.h.i
+data/src/device/IDeviceWatcher.h.i
+data/src/icons/cache/32x32/star_empty.png.i
+data/src/gis/CGisSerialization.h.i
+data/src/icons/waypoints/32x32/PinBlue.png.i
+data/src/icons/32x32/Device.png.i
+data/src/icons/32x32/Grid.png.i
+data/src/icons/cache/attributes/no_Truck_Driver_RV.svg.i
+data/src/icons/32x32/MapRoom.png.i
+data/src/icons/16x16/Redo.png.i
+data/src/gis/db/ISetupWorkspace.ui.i
+data/src/icons/32x32/Scale.png.i
+data/src/icons/DBProject.svg.i
+data/src/icons/waypoints/32x32/Residence.png.i
+data/src/cursors/cursorMoveArea.png.i
+data/src/icons/16x16/Map.png.i
+data/src/gis/IGisLine.cpp.i
+data/src/icons/32x32/GpxProject.png.i
+data/src/icons/32x32/SaveAllGIS.png.i
+data/src/gis/search/CSearchGoogle.h.i
+data/nsi/QMapShack_Installer.nsi.i
+data/src/qlgt/converter.cpp.i
+data/src/icons/48x48/Device.png.i
+data/src/icons/32x32/deleteAll.png.i
+data/src/icons/32x32/poiText.png.i
+data/src/plot/CPlotSpeed.cpp.i
+data/src/icons/ReloadImage.svg.i
+data/src/icons/cache/32x32/restore.png.i
+data/src/icons/cache/attributes/yes_Quads.svg.i
+data/src/icons/32x32/down.png.i
+data/src/icons/8x8/bullet_gray.png.i
+data/src/dem/CDemPathSetup.h.i
+data/src/qlgt/CQlgtWpt.h.i
+data/src/icons/cache/attributes/dis_Flashlight_required.svg.i
+data/src/dem/IDemPathSetup.ui.i
+data/src/map/CMapPathSetup.cpp.i
+data/src/units/CTimeZoneSetup.h.i
+data/src/gis/bin/CBinProject.cpp.i
+data/src/canvas/IDrawObject.cpp.i
+data/src/mouse/CMouseEditTrk.h.i
+data/src/gis/gpx/CGisProject.h.i
+data/src/map/CMap.h.i
+data/src/cursors/wptHighlight.svg.i
+data/src/helpers/CPositionDialog.cpp.i
+data/src/qlgt/CQmsDb.cpp.i
+data/src/plot/CPlotDistance.cpp.i
+data/src/icons/48x48/POIText.png.i
+data/src/device/IDeviceWatcher.cpp.i
+data/src/map/garmin/CGarminStrTbl8.cpp.i
+data/src/icons/icons.svg.d
+data/src/icons/48x48/Map.png.i
+data/src/gis/db/CDBFolderDatabase.h.i
+data/src/icons/icons.svg.i
+data/src/icons/TextLeft.svg.i
+data/src/map/cache/IDiskCache.h.i
+data/3rdparty/DBConverter/qlgt/CQlgtRoute.cpp.i
+data/src/icons/TrkCut.svg.i
+data/src/icons/cache/attributes/dis_UV_Light_Required.svg.i
+data/src/units/CUnitMetric.h.i
+data/src/gis/IGisItem.h.i
+data/3rdparty/DBConverter/CMainWindow.cpp.i
+data/src/icons/48x48/CutHistory.png.i
+data/src/icons/DatabaseSetup.svg.i
+data/src/icons/16x16/Tainted.png.i
+data/src/icons/48x48/pathMap.png.i
+data/src/canvas/IDrawContext.h.i
+data/src/icons/cache/attributes/dis_Thorns.svg.i
+data/src/gis/bin/CGisSerialization.h.i
+data/src/device/CDeviceWatcherLinux.h.i
+data/src/icons/TextBold.svg.i
+data/cmake/Modules/DefineInstallationPaths.cmake.i
+data/src/icons/32x32/WptMove.png.i
+data/src/icons/16x16/GridSetup.png.i
+data/src/gis/db/macros.h.i
+data/src/plot/CPlotData.h.i
+data/src/gis/trk/filter/CFilterReset.cpp.i
+data/src/gis/db/CDBFolderGroup.h.i
+data/src/icons/32x32/Close.png.i
+data/src/icons/32x32/Down.png.i
+data/src/icons/cache/32x32/trailhead.png.i
+data/3rdparty/DBConverter/qlgt/CQlgtTrack.cpp.i
+data/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake.i
+data/src/icons/48x48/TextJustified.png.i
+data/src/icons/48x48/LineMove.png.i
+data/src/icons/cache/attributes/dis_Medium_hike_(1km-10km).svg.i
+data/src/icons/Redo.svg.i
+data/src/icons/cache/attributes/yes_Horses.svg.i
+data/src/icons/32x32/TextJustified.png.i
+data/cmake/Modules/FindGPSD.cmake.i
+data/src/icons/waypoints/32x32/BoxGreen.png.i
+data/src/map/CMapRMAP.h.i
+data/src/icons/32x32/addCanvas.png.i
+data/src/icons/16x16/Up.png.i
+data/nsi/gdalicon.ico.i
+data/src/icons/16x16/FolderDEM.png.i
+data/3rdparty/DBConverter/CQlgtDb.cpp.i
+data/src/icons/cache/attributes/no_Available_at_all_times.svg.i
+data/src/icons/48x48/TrkCut.png.i
+data/src/gis/db/IDB.cpp.i
+data/src/icons/SaveAllGIS.svg.i
+data/src/icons/32x32/pathMap.png.i
+data/src/icons/32x32/mime_img.png.i
+data/src/icons/16x16/grid.png.i
+data/src/icons/Copy.svg.i
+data/src/map/CMapMAP.h.i
+data/src/icons/NightDay.svg.i
+data/src/gis/trk/filter/IFilterDelete.ui.i
+data/src/icons/16x16/Add.png.i
+data/src/icons/48x48/TimeZoneSetup.png.i
+data/src/icons/waypoints/DiamondGreen.svg.i
+data/src/gis/CGisListWks.cpp.i
+data/src/gis/bin/CGisSerialization.cpp.i
+data/src/icons/cache/trailhead.svg.i
+data/src/gis/wpt/IDetailsWpt.ui.i
+data/src/map/garmin/CGarminTyp.h.i
+data/src/icons/48x48/help.png.i
+data/src/qlgt/CImportDatabase.cpp.i
+data/src/mouse/IScrOptPoint.ui.i
+data/src/icons/cache/attributes/yes_May_require_swimming.svg.i
+data/src/icons/Reset.svg.i
+data/src/icons/32x32/TextLeft.png.i
+data/src/gis/wpt/CGisItemWpt.cpp.i
+data/src/CAbout.h.i
+data/src/icons/32x32/Opacity.png.i
+data/src/units/CUnitMetric.cpp.i
+data/src/plot/CPlotAxisTime.h.i
+data/src/icons/cache/attributes/dis_Difficult_climbing.svg.i
+data/3rdparty/CGetOpt/main.cpp.i
+data/src/icons/32x32/gridWizard.png.i
+data/src/gis/db/CDBFolderOther.h.i
+data/src/icons/48x48/MimeMAP.png.i
+data/src/mouse/CScrOptRange.cpp.i
+data/src/icons/cache/attributes/dis_Special_Tool_Required.svg.i
+data/src/icons/cache/attributes/no_Short_hike_(less_than_1km).svg.i
+data/src/icons/32x32/MimeDemVRT.png.i
+data/cmake/Modules/FindEXIF.cmake.i
+data/src/locale/qmapshack_fr.ts.i
+data/src/icons/16x16/MimeRMAP.png.i
+data/src/icons/32x32/add.png.i
+data/src/icons/32x32/MimeJNX.png.i
+data/src/icons/cache/attributes/dis_Watch_for_livestock.svg.i
+data/src/icons/cache/traditional.svg.i
+data/src/gis/CGisSerialization.cpp.i
+data/src/icons/cache/attributes/dis_Recommended_at_night.svg.i
+data/src/icons/cache/attributes/yes_Needs_maintenance.svg.i
+data/src/icons/Combine.svg.i
+data/src/map/IMapVrtBuilder.ui.i
+data/src/icons/48x48/Grid.png.i
+data/src/icons/Undo.svg.i
+data/src/icons/cache/attributes/yes_Scuba_gear.svg.i
+data/src/icons/cache/star_empty.svg.i
+data/src/icons/16x16/Undo.png.i
+data/src/gis/trk/CCombineTrk.h.i
+data/src/version.h.i
+data/src/icons/32x32/SaveGISAs.png.i
+data/src/plot/CPlotTrack.cpp.i
+data/src/qlgt/CQlgtDb.cpp.i
+data/src/icons/cache/attributes/yes_UV_Light_Required.svg.i
+data/src/icons/waypoints/32x32/BoxRed.png.i
+data/src/icons/waypoints/32x32/Waypoint.png.i
+data/src/icons/waypoints/32x32/Default.png.i
+data/cmake/Modules/FindDMTX.cmake.i
+data/src/qlgt/CQlb.h.i
+data/src/canvas/IDrawContext.cpp.i
+data/src/icons/cache/32x32/virtual.png.i
+data/src/map/CMapTMS.h.i
+data/src/icons/32x32/Reverse.png.i
+data/CPackConfig.cmake.i
+data/src/icons/16x16/Route.png.i
+data/src/CMakeLists.txt.i
+data/src/icons/cache/dnf.svg.i
+data/src/icons/LoadGIS.svg.i
+data/src/icons/48x48/Cancel.png.i
+data/src/icons/32x32/Pattern.png.i
+data/src/icons/48x48/Reset.png.i
+data/src/icons/32x32/MimeWMTS.png.i
+data/src/icons/AddImage.svg.i
+data/src/icons/waypoints/makeicons.i
+data/src/CMainWindow.cpp.i
+data/src/icons/16x16/TextUnderlined.png.i
+data/src/units/IUnit.h.i
+data/src/map/IMapProp.cpp.i
+data/src/grid/IGridSetup.ui.i
+data/src/icons/EditDetails.svg.i
+data/src/gis/db/CDBFolderDatabase.cpp.i
+data/src/CMainWindow.h.i
+data/src/gis/db/CSetupDatabase.h.i
+data/src/plot/ITrack.h.i
+data/src/gis/trk/CDetailsTrk.cpp.i
+data/src/gis/db/IDB.h.i
+data/src/icons/cache/attributes/no_Significant_Hike.svg.i
+data/src/icons/cache/32x32/DistIcon.png.i
+data/cmake/Modules/MacroCopyFile.cmake.i
+data/src/icons/48x48/SaveAllGIS.png.i
+data/src/gis/CGisWidget.h.i
+data/src/pics/timezones.png.i
+data/src/icons/48x48/MimeVRT.png.i
+data/src/icons/cache/OCMLogoSmall.svg.i
+data/src/icons/cache/attributes/dis_Wheelchair_accessible.svg.i
+data/src/icons/48x48/Lock.png.i
+data/src/icons/48x48/LoadGIS.png.i
+data/src/icons/48x48/Opacity.png.i
+data/src/icons/32x32/Font.png.i
+data/src/gis/CGisWidget.cpp.i
+data/src/dem/IDemProp.cpp.i
+data/src/icons/48x48/GpxProject.png.i
+data/src/units/CUnitNautic.h.i
+data/src/CMapDB.h.i
+data/src/icons/48x48/DatabaseConvert.png.i
+data/src/icons/cache/attributes/no_Bicycles.svg.i
+data/src/icons/32x32/SaveView.png.i
+data/src/qlgt/CQlgtDiary.h.i
+data/src/icons/waypoints/FlagBlue.svg.i
+data/src/icons/FolderMap.svg.i
+data/src/icons/48x48/DeleteOne.png.i
+data/3rdparty/DBConverter/qlgt/CQlgtWpt.cpp.i
+data/src/icons/32x32/SelectRange.png.i
+data/src/icons/32x32/Apply.png.i
+data/nsi/MUI_HEADERIMAGE.bmp.i
+data/src/icons/Link.svg.i
+data/src/icons/makeicons.i
+data/src/icons/Move.svg.i
+data/src/animation/loader2.gif.i
+data/src/icons/cache/attributes/dis_Snowshoes.svg.i
+data/src/grid/CGrid.cpp.i
+data/src/gis/CGisDraw.h.i
+data/src/helpers/CPhotoAlbum.cpp.i
+data/src/icons/48x48/QmsProject.png.i
+data/src/icons/QmsProject.svg.i
+data/src/icons/32x32/SearchGoogle.png.i
+data/src/gis/rte/IScrOptRte.ui.i
+data/src/mouse/IMouseEditLine.cpp.i
+data/features.txt.i
+data/src/icons/48x48/ToTop.png.i
+data/src/cursors/cursorSelectRange.png.i
+data/src/gis/db/IDBFolder.h.i
+data/src/icons/48x48/TrkProfile.png.i
+data/cmake/Modules/FindPROJ.cmake.i
+data/src/icons/8x8/bullet_dark_red.png.i
+data/src/icons/cache/makeicons.i
+data/src/icons/48x48/Tainted.png.i
+data/src/icons/cache/attributes/dis_Takes_less_than_an_hour.svg.i
+data/src/icons/3DFix.svg.i
+data/src/gis/wpt/CDetailsWpt.h.i
+data/src/map/CMapItem.cpp.i
+data/3rdparty/DBConverter/qlgt/CQlgtTrack.h.i
+data/src/icons/cache/attributes/yes_Abandoned_mines.svg.i
+data/src/icons/8x8/bullet_green.png.i
+data/src/icons/cache/32x32/letterbox.png.i
+data/src/icons/UnitSetup.svg.i
+data/src/icons/32x32/LoadGIS.png.i
+data/src/icons/cache/attributes/no_Off-road_vehicles.svg.i
+data/src/icons/48x48/TextRight.png.i
+data/src/icons/32x32/AddWpt.png.i
+data/src/map/garmin/CGarminPoint.h.i
+data/src/device/CDeviceGarmin.h.i
+data/cmake/Modules/CMakeLists.txt.i
+data/src/icons/cache/attributes/yes_Public_transportation.svg.i
+data/src/IDrawContext.cpp.i
+data/cmake/Modules/DefineCompilerFlags.cmake.i
+data/src/gis/db/IDBFolder.cpp.i
+data/src/qlgt/CQlb.cpp.i
+data/src/icons/16x16/POIText.png.i
+data/src/gis/trk/CScrOptTrk.cpp.i
+data/src/gis/db/CDBProject.h.i
+data/src/gis/trk/filter/IFilterSpeed.ui.i
+data/src/icons/16x16/mime_map.png.i
+data/src/plot/CPlot.h.i
+data/src/plot/CPlotAxisTime.cpp.i
+data/src/IAbout.ui.i
+data/src/icons/waypoints/32x32/PinGreen.png.i
+data/src/map/wmts/IDiskCache.cpp.i
+data/src/icons/16x16/mime_vrt.png.i
+data/src/icons/32x32/toolTip.png.i
+data/src/icons/32x32/VrtBuilder.png.i
+data/src/icons/48x48/Image.png.i
+data/src/icons/48x48/EditDetails.png.i
+data/src/gis/trk/CDetailsTrk.h.i
+data/src/gis/trk/ICombineTrk.ui.i
+data/src/mouse/CMouseNormal.cpp.i
+data/src/icons/FromMap.svg.i
+data/src/icons/cache/attributes/yes_Campfires.svg.i
+data/src/icons/cache/needs_maintenance.svg.i
+data/src/gis/db/CSetupFolder.cpp.i
+data/config.h.cmake.i
+data/src/map/CMapItem.h.i
+data/src/icons/cache/attributes/no_Difficult_climbing.svg.i
+data/src/icons/32x32/MimeVRT.png.i
+data/src/icons/48x48/WptProx.png.i
+data/src/gis/trk/filter/CFilterDouglasPeuker.cpp.i
+data/src/icons/cache/attributes/yes_Motorcycles.svg.i
+data/src/gis/rte/CGisItemRte.h.i
+data/src/gis/ovl/CGisItemOvlArea.h.i
+data/src/icons/cache/attributes/no_Takes_less_than_an_hour.svg.i
+data/src/dem/CDemDraw.cpp.i
+data/src/icons/Right.svg.i
+data/src/icons/48x48/LoadView.png.i
+data/src/gis/db/ISetupFolder.ui.i
+data/src/icons/32x32/2DFix.png.i
+data/src/icons/cache/attributes/yes_Public_restrooms_nearby.svg.i
+data/src/icons/48x48/Undo.png.i
+data/src/icons/48x48/Path.png.i
+data/src/gis/tnv/serialization.cpp.i
+data/cmake/Modules/FindQtSoap.cmake.i
+data/src/gis/trk/filter/IFilterMedian.ui.i
+data/src/mouse/IScrOptEditLine.ui.i
+data/src/map/CMapVrtBuilder.h.i
+data/src/icons/48x48/Error.png.i
+data/src/icons/16x16/MimeIMG.png.i
+data/src/gis/qms/CQmsProject.cpp.i
+data/LICENSE.i
+data/src/icons/48x48/WptMove.png.i
+data/src/icons/cache/other.svg.i
+data/src/device/CDeviceTwoNav.cpp.i
+data/src/icons/16x16/Grid.png.i
+data/src/map/cache/CDiskCache.h.i
+data/src/icons/32x32/MimeIMG.png.i
+data/src/icons/cache/32x32/webcam.png.i
+data/src/map/garmin/IGarminStrTbl.h.i
+data/src/IDrawObject.cpp.i
+data/src/icons/48x48/DBProject.png.i
+data/src/icons/cache/attributes/no_Poison_plants.svg.i
+data/src/icons/16x16/Down.png.i
+data/src/icons/48x48/Start.png.i
+data/src/icons/Path.svg.i
+data/src/gis/db/CSetupFolder.h.i
+data/src/qlgt/CQlgtDb.h.i
+data/src/canvas/CCanvasSetup.cpp.i
+data/src/icons/16x16/LoadGIS.png.i
+data/src/device/IDevice.cpp.i
+data/src/icons/Route.svg.i
+data/src/map/garmin/CGarminPolygon.cpp.i
+data/src/icons/32x32/Database.png.i
+data/src/icons/cache/attributes/dis_Horses.svg.i
+data/src/qlgt/IImportDatabase.ui.i
+data/nsi/3rdparty.txt.i
+data/src/icons/cache/attributes/dis_Hunting.svg.i
+data/src/icons/16x16/MapRoom.png.i
+data/src/icons/8x8/bullet_yellow.png.i
+data/src/icons/16x16/TrkProfile.png.i
+data/src/icons/32x32/ToBottom.png.i
+data/3rdparty/DBConverter/qlgt/CQlgtDiary.cpp.i
+data/src/icons/MimeVRT.svg.i
+data/src/icons/32x32/Right.png.i
+data/src/icons/16x16/Check.png.i
+data/src/gis/db/CDBProject.cpp.i
+data/3rdparty/CGetOpt/CGetOpt.h.i
+data/src/map/IMapList.ui.i
+data/src/icons/MimeRMAP.svg.i
+data/src/gis/qms/serialization.cpp.i
+data/src/GeoMath.cpp.i
+data/src/icons/32x32/Error.png.i
+data/src/plot/IPlot.cpp.i
+data/src/icons/8x8/bullet_magenta.png.i
+data/src/icons/32x32/LoadView.png.i
+data/src/gis/CGisListDB.h.i
+data/src/icons/cache/attributes/yes_Recommended_at_night.svg.i
+data/src/icons/16x16/Cancel.png.i
+data/src/icons/Scale.svg.i
+data/src/dem/IDemList.ui.i
+data/src/icons/cache/OCMLogo.svg.i
+data/src/helpers/CPhotoAlbum.h.i
+data/src/icons/cache/attributes/yes_Short_hike_(less_than_1km).svg.i
+data/src/icons/16x16/TextCenter.png.i
+data/nsi/MUI_WELCOMEFINISHPAGE.bmp.i
+data/src/icons/32x32/DBProject.png.i
+data/src/icons/Empty.svg.i
+data/src/icons/MimeMAP.svg.i
+data/src/icons/Area.svg.i
+data/src/icons/32x32/grid.png.i
+data/3rdparty/DBConverter/qlgt/CQlgtWpt.h.i
+data/src/icons/48x48/DelImage.png.i
+data/src/gis/gpx/CGpxProject.h.i
+data/src/icons/32x32/Redo.png.i
+data/src/mouse/CScrOptUnclutter.h.i
+data/src/icons/16x16/WptMove.png.i
+data/src/icons/WptMove.svg.i
+data/src/icons/ToBottom.svg.i
+data/src/helpers/CPhotoViewer.cpp.i
+data/src/icons/cache/log.svg.i
+data/src/icons/32x32/mime_map.png.i
+data/src/icons/8x8/bullet_dark_blue.png.i
+data/src/icons/cache/attributes/yes_Food_Nearby.svg.i
+data/src/icons/cache/Apache-2.0.i
+data/call_Uncrustify.cfg.i
+data/src/icons/cache/attributes/dis_Truck_Driver_RV.svg.i
+data/src/icons/32x32/SelectColor.png.i
+data/src/icons/16x16/SaveAllGIS.png.i
+data/src/gis/trk/filter/CFilterSpeed.cpp.i
+data/src/icons/48x48/Reverse.png.i
+data/src/icons/cache/parking.svg.i
+data/src/icons/32x32/Combine.png.i
+data/src/gis/prj/CDetailsPrj.cpp.i
+data/src/icons/cache/attributes/dis_Abandoned_Structure.svg.i
+data/src/gis-search/CGisSearchWidget.cpp.i
+data/src/icons/cache/attributes/yes_Field_Puzzle.svg.i
+data/src/icons/32x32/Map.png.i
+data/src/icons/48x48/MimeTMS.png.i
+data/src/icons/cache/attributes/dis_Snowmobiles.svg.i
+data/src/icons/16x16/reset.png.i
+data/src/icons/cache/attributes/dis_Climbing_gear.svg.i
+data/src/pics/splash.png.d
+data/src/icons/POIText.svg.i
+data/ConfigureChecks.cmake.i
+data/src/icons/32x32/flipDirection.png.i
+data/src/gis-search/IGisSearch.h.i
+data/src/icons/48x48/Empty.png.i
+data/src/icons/GridSetup.svg.i
+data/src/icons/cache/attributes/dis_Boat.svg.i
+data/src/icons/32x32/TrkProfile.png.i
+data/3rdparty/DBConverter/main.cpp.i
+data/src/icons/cache/32x32/parking.png.i
+data/src/icons/16x16/addCanvas.png.i
+data/src/icons/cache/attributes/dis_Ticks.svg.i
+data/src/icons/cache/32x32/greenpin.png.i
+data/src/qlgt/IItem.cpp.i
+data/src/gis/trk/filter/IFilterObscureDate.ui.i
+data/src/icons/32x32/PointHide.png.i
+data/src/icons/cache/attributes/dis_Significant_Hike.svg.i
+data/src/icons/cache/attributes/yes_Telephone_nearby.svg.i
+data/src/icons/Up.svg.i
+data/src/icons/Area.svg.d
+data/src/icons/32x32/Cut.png.i
+data/src/icons/cache/attributes/yes_Recommended_for_kids.svg.i
+data/src/gis/wpt/CScrOptWpt.h.i
diff --git a/.hg/store/phaseroots b/.hg/store/phaseroots
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/store/undo b/.hg/store/undo
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/store/undo.backup.fncache b/.hg/store/undo.backup.fncache
new file mode 100644
index 0000000..13ed7bc
--- /dev/null
+++ b/.hg/store/undo.backup.fncache
@@ -0,0 +1,1332 @@
+data/src/icons/cache/attributes/dis_Recommended_for_kids.svg.i
+data/src/icons/cache/attributes/yes_Takes_less_than_an_hour.svg.i
+data/src/units/CUnitImperial.h.i
+data/src/gis/CGisListDB.h.i
+data/src/icons/MimeIMG.svg.i
+data/src/gis/ovl/IDetailsOvlArea.ui.i
+data/src/icons/cache/attributes/yes_Truck_Driver_RV.svg.i
+data/src/icons/48x48/Left.png.i
+data/src/icons/32x32/cancel.png.i
+data/src/icons/PathGreen.svg.i
+data/src/plot/CPlot.cpp.i
+data/src/icons/cache/attributes/dis_Bicycles.svg.i
+data/src/icons/16x16/SaveGIS.png.i
+data/src/gis/wpt/CProjWpt.h.i
+data/src/cursors/wptHighlight.png.i
+data/src/icons/32x32/view.png.i
+data/src/icons/UnLock.svg.i
+data/src/grid/CGrid.h.i
+data/src/icons/16x16/mime_rmap.png.i
+data/src/icons/48x48/AddWpt.png.i
+data/src/CCanvas.h.i
+data/src/gis/trk/CDetailsTrk.cpp.i
+data/src/icons/cache/attributes/yes_Watch_for_livestock.svg.i
+data/src/icons/48x48/LoadView.png.i
+data/src/icons/cache/attributes/no_Medium_hike_(1km-10km).svg.i
+data/src/icons/cache/32x32/restore.png.i
+data/src/icons/cache/attributes/no_Abandoned_Structure.svg.i
+data/src/gis/wpt/CDetailsGeoCache.h.i
+data/cmake/Modules/FindGDAL.cmake.i
+data/src/icons/48x48/WptProx.png.i
+data/src/IDrawObject.h.i
+data/src/helpers/CSelectCopyAction.h.i
+data/src/icons/48x48/Scale.png.i
+data/src/icons/cache/attributes/no_Significant_Hike.svg.i
+data/src/icons/AddTrk.svg.i
+data/src/qlgt/IItem.h.i
+data/src/icons/Map.svg.i
+data/src/icons/cache/32x32/cito.png.i
+data/src/icons/cache/attributes/dis_Climbing_gear.svg.i
+data/src/icons/cache/attributes/yes_Available_at_all_times.svg.i
+data/src/icons/48x48/ToBottom.png.i
+data/src/icons/TextItalic.svg.i
+data/src/icons/48x48/Add.png.i
+data/src/GeoMath.h.i
+data/src/gis/CGisProject.h.i
+data/src/gis/prj/CDetailsPrj.h.i
+data/src/icons/cache/attributes/dis_Picnic_tables_nearby.svg.i
+data/src/icons/48x48/AddImage.png.i
+data/src/gis/trk/filter/IFilterDouglasPeuker.ui.i
+data/src/icons/16x16/Close.png.i
+data/src/grid/CGridSetup.cpp.i
+data/src/icons/32x32/NightDay.png.i
+data/src/gis/ovl/CScrOptOvlArea.cpp.i
+data/src/plot/IPlot.h.i
+data/src/icons/cache/32x32/halfstar.png.i
+data/src/icons/32x32/QmsProject.png.i
+data/src/helpers/CWptIconDialog.cpp.i
+data/src/icons/8x8/bullet_black.png.i
+data/src/gis/IGisWidget.ui.i
+data/src/gis/trk/filter/CFilterOffsetElevation.cpp.i
+data/src/locale/qmapshack_cs.ts.i
+data/src/icons/48x48/Route.png.i
+data/src/icons/16x16/SetupMapWorkspace.png.i
+data/src/gis/db/CSetupDB.cpp.i
+data/src/icons/48x48/Reset.png.i
+data/src/icons/ToTop.svg.i
+data/3rdparty/DBConverter/qlgt/CQlgtDiary.h.i
+data/src/icons/16x16/mime_img.png.i
+data/src/icons/cache/attributes/dis_Wheelchair_accessible.svg.i
+data/src/icons/cache/wherigo.svg.i
+data/src/icons/cache/halfstar.svg.i
+data/.hgtags.i
+data/src/icons/Help.svg.i
+data/src/icons/cache/letterbox.svg.i
+data/src/map/CMapDraw.cpp.i
+data/src/map/CGrid.cpp.i
+data/src/dem/CDemList.cpp.i
+data/src/icons/MapRoom.svg.i
+data/src/icons/cache/attributes/yes_Dangerous_Animals.svg.i
+data/src/icons/48x48/AddArea.png.i
+data/src/gis/wpt/IScrOptWpt.ui.i
+data/src/icons/48x48/Copy.png.i
+data/src/mouse/CScrOptUnclutter.cpp.i
+data/src/icons/Time.svg.i
+data/src/dem/IDemProp.h.i
+data/src/icons/cache/32x32/treasure.png.i
+data/src/helpers/ISelectCopyAction.ui.i
+data/src/icons/TimeZoneSetup.svg.i
+data/src/icons/48x48/PathOrange.png.i
+data/src/icons/cache/maxicon.svg.i
+data/cmake_uninstall.cmake.in.i
+data/src/icons/Close.svg.i
+data/src/icons/32x32/TimeZoneSetup.png.i
+data/src/icons/cache/32x32/event.png.i
+data/src/gis/qms/serialization.cpp.i
+data/src/icons/Off.svg.i
+data/src/icons/cache/attributes/yes_Flashlight_required.svg.i
+data/src/helpers/ILinksDialog.ui.i
+data/src/icons/cache/star.svg.i
+data/src/icons/48x48/SelectColor.png.i
+data/src/CMapDB.h.i
+data/src/icons/48x48/WptProj.png.i
+data/src/icons/48x48/MimeJNX.png.i
+data/src/icons/MimeTMS.svg.i
+data/src/map/garmin/CGarminStrTbl8.h.i
+data/src/gis/trk/filter/filter.cpp.i
+data/src/icons/FolderDEM.svg.i
+data/src/resources.qrc.i
+data/src/mouse/CMouseEditLine.cpp.i
+data/changelog.txt.i
+data/src/icons/icons.svg.save.i
+data/src/icons/32x32/Move.png.i
+data/src/icons/cache/attributes/no_Dogs.svg.i
+data/src/icons/32x32/Info.png.i
+data/src/icons/32x32/SaveView.png.i
+data/src/icons/cache/attributes/dis_Camping_available.svg.i
+data/src/gis/db/CDBItem.h.i
+data/src/icons/48x48/AddTrk.png.i
+data/src/icons/48x48/MimeWMTS.png.i
+data/src/icons/icons.svg.save.d
+data/src/dem/CDemPathSetup.cpp.i
+data/src/icons/32x32/GridWizzard.png.i
+data/src/map/garmin/CGarminStrTbl6.cpp.i
+data/src/icons/16x16/deleteAll.png.i
+data/src/icons/cache/attributes/dis_May_require_wading.svg.i
+data/src/canvas/IDrawObject.h.i
+data/src/icons/cache/32x32/needs_maintenance.png.i
+data/src/icons/32x32/icons.svg.save.i
+data/src/icons/cache/attributes/dis_Available_at_all_times.svg.i
+data/src/map/garmin/CGarminTyp.cpp.i
+data/src/qlgt/CQlgtRoute.cpp.i
+data/src/icons/48x48/Database.png.i
+data/src/pics/about.png.i
+data/src/icons/GisProject.svg.i
+data/src/icons/8x8/bullet_dark_green.png.i
+data/src/icons/16x16/toolTip.png.i
+data/src/icons/cache/attributes/yes_Park_and_Grab.svg.i
+data/src/icons/48x48/SaveGIS.png.i
+data/src/icons/Grid.svg.i
+data/src/icons/16x16/map.png.i
+data/src/icons/QMapShack.svg.i
+data/src/icons/cache/attributes/dis_Cliff___falling_rocks.svg.i
+data/src/gis/rte/CGisItemRte.cpp.i
+data/src/icons/48x48/SaveView.png.i
+data/src/mouse/CMouseMoveWpt.cpp.i
+data/src/icons/32x32/Image.png.i
+data/call_Uncrustify.sh.i
+data/cmake/Modules/DefineInstallationPaths.cmake.i
+data/src/icons/Check.svg.i
+data/README.md.i
+data/src/plot/CPlotProfile.h.i
+data/src/icons/PointShow.svg.i
+data/src/map/cache/IDiskCache.cpp.i
+data/src/mouse/IScrOptWpt.ui.i
+data/src/gis/trk/filter/CFilterDelete.cpp.i
+data/src/icons/32x32/Up.png.i
+data/src/gis/prj/IGisProject.cpp.i
+data/src/icons/cache/attributes/yes_Abandoned_Structure.svg.i
+data/src/icons/cache/attributes/yes_Available_during_winter.svg.i
+data/src/icons/32x32/Tainted.png.i
+data/src/icons/PointHide.svg.i
+data/src/icons/48x48/Paste.png.i
+data/src/icons/16x16/Font.png.i
+data/cmake/Modules/FindEXIF.cmake.i
+data/src/icons/SaveView.svg.i
+data/src/icons/AddMapWorkspace.svg.i
+data/src/gis/CGisListDB.cpp.i
+data/src/icons/cache/32x32/pushpin.png.i
+data/src/icons/32x32/TextCenter.png.i
+data/src/icons/16x16/FromMap.png.i
+data/src/icons/cache/attributes/yes_Campfires.svg.i
+data/qmapshack.1.i
+data/src/mouse/IMouse.cpp.i
+data/src/icons/48x48/Down.png.i
+data/src/icons/8x8/bullet_yellow.png.i
+data/src/gis-search/IGisSearchWidget.ui.i
+data/src/icons/32x32/Reset.png.i
+data/src/icons/32x32/NoFix.png.i
+data/src/helpers/CSelectProjectDialog.cpp.i
+data/src/icons/16x16/jnx.png.i
+data/src/gis/CGisListWks.h.i
+data/src/icons/48x48/2NavProject.png.i
+data/src/icons/32x32/GridSetup.png.i
+data/src/icons/16x16/FolderMap.png.i
+data/src/icons/waypoints/32x32/DiamondGreen.png.i
+data/src/icons/cache/attributes/dis_Scuba_gear.svg.i
+data/src/icons/Combine.svg.i
+data/src/helpers/IInputDialog.ui.i
+data/src/icons/32x32/DeleteOne.png.i
+data/src/icons/cache/attributes/yes_Picnic_tables_nearby.svg.i
+data/Doxyfile.i
+data/src/icons/16x16/Copy.png.i
+data/src/icons/48x48/MimeRMAP.png.i
+data/src/icons/48x48/Pattern.png.i
+data/src/units/IUnitsSetup.ui.i
+data/src/icons/Cut.svg.i
+data/src/gis/ovl/CGisItemOvlArea.cpp.i
+data/src/IDrawContext.h.i
+data/src/helpers/CTextEditWidget.cpp.i
+data/src/icons/16x16/ToolTip.png.i
+data/src/gis/wpt/CDetailsWpt.cpp.i
+data/src/icons/32x32/to-top.png.i
+data/nsi/QMapShack.ico.i
+data/src/icons/32x32/AreaMove.png.i
+data/src/icons/32x32/addCanvas.png.i
+data/src/helpers/CPhotoAlbum.cpp.i
+data/src/plot/CPlotProfile.cpp.i
+data/src/icons/cache/attributes/dis_Night_Cache.svg.i
+data/src/helpers/CSettings.h.i
+data/src/cursors/cursorArrow.png.i
+data/src/icons/cache/attributes/no_Picnic_tables_nearby.svg.i
+data/src/icons/cache/attributes/no_Campfires.svg.i
+data/src/icons/cache/32x32/up_icon.png.i
+data/src/icons/48x48/Empty.png.i
+data/src/icons/16x16/Off.png.i
+data/src/icons/32x32/Lock.png.i
+data/src/icons/48x48/SetEle.png.i
+data/src/map/wmts/IDiskCache.h.i
+data/src/icons/32x32/Undo.png.i
+data/src/icons/48x48/Area.png.i
+data/3rdparty/CGetOpt/CGetOpt.cpp.i
+data/src/icons/48x48/DatabaseSetup.png.i
+data/src/gis/ovl/IScrOptOvlArea.ui.i
+data/src/icons/32x32/MimeTMS.png.i
+data/src/icons/32x32/AddTrk.png.i
+data/src/gis/qms/CQmsProject.h.i
+data/src/icons/48x48/ToolTip.png.i
+data/src/pics/timezones.png.i
+data/src/icons/cache/attributes/no_Stroller_accessible.svg.i
+data/src/icons/DeleteMultiple.svg.i
+data/src/map/mapsforge/types.h.i
+data/src/cursors/cursorMoveMap.png.i
+data/3rdparty/DBConverter/qlgt/IItem.h.i
+data/3rdparty/DBConverter/qlgt/IQlgtOverlay.cpp.i
+data/src/icons/16x16/gridWizard.png.i
+data/src/gis/trk/filter/CFilterMedian.cpp.i
+data/src/map/CMapVRT.cpp.i
+data/src/icons/Reverse.svg.i
+data/src/icons/cache/attributes/dis_Park_and_Grab.svg.i
+data/src/icons/Down.svg.i
+data/src/canvas/CCanvas.cpp.i
+data/src/icons/cache/attributes/no_Camping_available.svg.i
+data/src/qlgt/CQmsDb.h.i
+data/src/icons/48x48/PathGreen.png.i
+data/src/icons/8x8/bullet_dark_magenta.png.i
+data/src/icons/32x32/SetupMapWorkspace.png.i
+data/src/mouse/CScrOptRangeTrk.h.i
+data/src/helpers/CLinksDialog.h.i
+data/src/icons/48x48/3DFix.png.i
+data/src/icons/16x16/icons.svg.save.i
+data/nsi/QMapShack_Installer32.nsi.i
+data/src/qlgt/CQlgtFolder.cpp.i
+data/src/icons/32x32/delete.png.i
+data/src/icons/32x32/PointMove.png.i
+data/src/map/CMapPropSetup.cpp.i
+data/src/units/CUnitsSetup.h.i
+data/src/icons/cache/32x32/SearchIcon.png.i
+data/src/icons/GridWizzard.svg.i
+data/src/device/CDeviceGarmin.cpp.i
+data/src/icons/16x16/Right.png.i
+data/src/icons/16x16/QMapShack.png.i
+data/src/icons/TextUnderlined.svg.i
+data/src/icons/48x48/VrtBuilder.png.i
+data/src/gis/rte/IScrOptRte.ui.i
+data/src/icons/DeleteOne.svg.i
+data/src/map/garmin/CGarminStrTbl6.h.i
+data/src/icons/16x16/ToBottom.png.i
+data/src/map/garmin/CGarminStrTblUtf8.h.i
+data/src/gis/wpt/CDetailsGeoCache.cpp.i
+data/src/qlgt/CQlgtFolder.h.i
+data/src/grid/IProjWizard.ui.i
+data/src/icons/16x16/selectColor.png.i
+data/src/mouse/CScrOptWpt.h.i
+data/src/map/CMapJNX.h.i
+data/src/icons/2NavProject.svg.i
+data/src/helpers/CLinksDialog.cpp.i
+data/src/mouse/CScrOptRangeTrk.cpp.i
+data/src/icons/32x32/Cancel.png.i
+data/src/icons/8x8/bullet_dark_yellow.png.i
+data/src/icons/cache/attributes/yes_Food_Nearby.svg.i
+data/src/icons/cache/attributes/dis_Snowmobiles.svg.i
+data/src/gis/db/CDBFolderLostFound.h.i
+data/src/icons/32x32/EditDetails.png.i
+data/src/icons/8x8/bullet_orange.png.i
+data/src/gis/wpt/IDetailsWpt.ui.i
+data/nsi/Help.ico.i
+data/3rdparty/DBConverter/qlgt/CQlgtRoute.h.i
+data/src/icons/32x32/LineMove.png.i
+data/src/icons/8x8/bullet_cyan.png.i
+data/src/icons/32x32/UnitSetup.png.i
+data/src/icons/32x32/DatabaseConvert.png.i
+data/src/mouse/CMouseEditLine.h.i
+data/src/cursors/cursorMoveWpt.png.i
+data/src/icons/16x16/AddWpt.png.i
+data/src/qlgt/CQmsDb.cpp.i
+data/src/icons/48x48/TextLeft.png.i
+data/src/helpers/CInputDialog.h.i
+data/src/icons/16x16/GridWizzard.png.i
+data/src/icons/16x16/MimeVRT.png.i
+data/src/helpers/ITextEditWidget.ui.i
+data/src/map/CMapRMAP.cpp.i
+data/src/icons/16x16/EditText.png.i
+data/src/icons/Error.svg.i
+data/src/gis/trk/filter/CFilterOffsetElevation.h.i
+data/src/gis/trk/filter/CFilterObscureDate.h.i
+data/src/gis/ovl/CDetailsOvlArea.cpp.i
+data/src/icons/UnitSetup.svg.i
+data/3rdparty/DBConverter/qlgt/CQlgtWpt.cpp.i
+data/src/icons/16x16/rmap.png.i
+data/src/device/IDeviceWatcher.h.i
+data/src/icons/16x16/LineMove.png.i
+data/src/dem/CDem.cpp.i
+data/src/icons/cache/attributes/yes_Public_transportation.svg.i
+data/src/icons/cache/32x32/star_empty.png.i
+data/src/icons/48x48/Help.png.i
+data/src/icons/cache/attributes/dis_Off-road_vehicles.svg.i
+data/src/icons/8x8/bullet_brown.png.i
+data/src/gis/CGisProject.cpp.i
+data/src/icons/16x16/EditDetails.png.i
+data/src/icons/TextRight.svg.i
+data/src/icons/cache/attributes/yes_Fuel_Nearby.svg.i
+data/src/icons/48x48/GridWizzard.png.i
+data/src/icons/48x48/Right.png.i
+data/src/icons/48x48/SetupMapWorkspace.png.i
+data/src/mouse/CMouseRangeTrk.h.i
+data/src/dem/CDemList.h.i
+data/src/icons/48x48/DeleteMultiple.png.i
+data/src/gis/tnv/CTwoNavProject.cpp.i
+data/src/helpers/CAppOpts.h.i
+data/src/icons/32x32/UnLock.png.i
+data/src/gis/gpx/serialization.cpp.i
+data/src/gis/search/CSearchGoogle.cpp.i
+data/src/icons/TextJustified.svg.i
+data/src/gis/wpt/CProjWpt.cpp.i
+data/src/icons/16x16/Info.png.i
+data/src/icons/cache/unknown.svg.i
+data/src/icons/32x32/Paste.png.i
+data/src/icons/32x32/TrkCut.png.i
+data/src/icons/48x48/MapRoom.png.i
+data/src/icons/32x32/Grid.png.i
+data/src/dem/CDemItem.cpp.i
+data/src/icons/48x48/2DFix.png.i
+data/src/CMapDB.cpp.i
+data/src/icons/cache/attributes/no_Truck_Driver_RV.svg.i
+data/src/mouse/IMouse.h.i
+data/cmake/Modules/FindXercesC.cmake.i
+data/3rdparty/DBConverter/CQmsDb.cpp.i
+data/src/icons/16x16/WptProj.png.i
+data/src/icons/32x32/FromMap.png.i
+data/src/dem/CDemItem.h.i
+data/src/CFileExt.h.i
+data/src/icons/32x32/GisProject.png.i
+data/src/icons/32x32/Path.png.i
+data/src/mouse/CScrOptPoint.h.i
+data/src/icons/48x48/MimeDemVRT.png.i
+data/src/plot/CPlotTrack.h.i
+data/3rdparty/DBConverter/qlgt/IItem.cpp.i
+data/src/icons/48x48/AreaMove.png.i
+data/src/icons/cache/attributes/yes_Parking_available.svg.i
+data/src/gis/wpt/CScrOptWpt.cpp.i
+data/src/pics/noMap256x256.png.i
+data/src/icons/Opacity.svg.i
+data/src/gis/CGisItemRte.cpp.i
+data/src/icons/16x16/TextBold.png.i
+data/src/helpers/CHistoryListWidget.h.i
+data/src/icons/cache/mega.svg.i
+data/src/gis/trk/filter/CFilterReplaceElevation.h.i
+data/src/icons/48x48/SaveGISAs.png.i
+data/src/icons/16x16/toBottom.png.i
+data/src/gis/db/CDBFolderProject.h.i
+data/src/gis/db/CDBItem.cpp.i
+data/src/icons/GpxProject.svg.i
+data/cmake/Modules/FindPROJ.cmake.i
+data/src/gis/bin/serialization.cpp.i
+data/src/icons/WptProx.svg.i
+data/src/gis/IGisProject.cpp.i
+data/src/icons/cache/attributes/no_Park_and_Grab.svg.i
+data/src/icons/cache/32x32/parking.png.i
+data/src/icons/16x16/NoFix.png.i
+data/src/icons/cache/32x32/corrected.png.i
+data/src/icons/48x48/TextRight.png.i
+data/src/icons/32x32/Reverse.png.i
+data/src/gis/wpt/IDetailsGeoCache.ui.i
+data/src/map/garmin/CGarminPoint.cpp.i
+data/src/icons/48x48/MouseWheel.png.i
+data/src/IDB.cpp.i
+data/src/cursors/COPYRIGHT.i
+data/src/icons/16x16/PointMove.png.i
+data/src/icons/cache/32x32/mega.png.i
+data/src/icons/32x32/Copy.png.i
+data/src/map/wmts/CDiskCache.h.i
+data/src/device/CDeviceWatcherWindows.cpp.i
+data/src/icons/cache/attributes/dis_Poison_plants.svg.i
+data/src/icons/cache/attributes/yes_Hunting.svg.i
+data/src/canvas/CCanvasSetup.h.i
+data/src/icons/cache/attributes/no_Public_restrooms_nearby.svg.i
+data/src/icons/48x48/TextCenter.png.i
+data/src/icons/cache/32x32/maxicon.png.i
+data/src/map/garmin/Garmin.h.i
+data/src/icons/cache/attributes/yes_Boat.svg.i
+data/src/icons/cache/bluepin.svg.i
+data/src/gis/db/ISetupDatabase.ui.i
+data/src/icons/16x16/MimeJNX.png.i
+data/src/qlgt/IQlgtOverlay.cpp.i
+data/src/icons/cache/attributes/dis_Drinking_water_nearby.svg.i
+data/src/icons/cache/32x32/log.png.i
+data/GpxExamples/qlandkarte.gpx.i
+data/src/icons/cache/attributes/dis_Available_during_winter.svg.i
+data/src/icons/48x48/PointShow.png.i
+data/src/helpers/IWptIconDialog.ui.i
+data/src/icons/32x32/toBottom.png.i
+data/src/icons/SaveGIS.svg.i
+data/src/icons/48x48/FolderDEM.png.i
+data/src/mouse/CScrOptEditLine.h.i
+data/src/icons/16x16/down.png.i
+data/src/icons/32x32/MimeMAP.png.i
+data/src/mouse/IScrOpt.h.i
+data/src/icons/cache/attributes/dis_Parking_available.svg.i
+data/src/icons/48x48/Device.png.i
+data/src/icons/32x32/AddMapWorkspace.png.i
+data/src/icons/cache/attributes/yes_Access_or_parking_fee.svg.i
+data/src/helpers/CPhotoViewer.h.i
+data/src/icons/Database.svg.i
+data/src/icons/32x32/toolTip.png.i
+data/src/icons/cache/COPYRIGHT.i
+data/src/icons/Device.svg.i
+data/src/icons/32x32/PointShow.png.i
+data/src/gis/trk/filter/CFilterNewDate.h.i
+data/src/icons/cache/32x32/wherigo.png.i
+data/qmapshack.desktop.i
+data/src/icons/cache/attributes/yes_Long_Hike_(+10km).svg.i
+data/src/icons/32x32/ToTop.png.i
+data/src/animation/COPYRIGHT.i
+data/src/icons/16x16/TrkCut.png.i
+data/src/units/CTimeZoneSetup.cpp.i
+data/src/icons/cache/attributes/yes_Snowshoes.svg.i
+data/src/icons/cache/attributes/no_Fuel_Nearby.svg.i
+data/3rdparty/DBConverter/qlgt/CQlb.cpp.i
+data/src/device/CDeviceTwoNav.h.i
+data/src/helpers/CSelectCopyAction.cpp.i
+data/src/icons/cache/attributes/dis_Long_Hike_(+10km).svg.i
+data/src/icons/32x32/down.png.i
+data/src/icons/WptProj.svg.i
+data/src/icons/cache/attributes/no_Night_Cache.svg.i
+data/CMakeLists.txt.i
+data/src/gis/CGisDraw.cpp.i
+data/src/icons/waypoints/BoxBlue.svg.i
+data/src/qlgt/CQlgtTrack.cpp.i
+data/src/icons/16x16/DeleteOne.png.i
+data/src/gis/trk/filter/CFilterNewDate.cpp.i
+data/src/gis/db/ISetupDB.ui.i
+data/src/resources.rc.i
+data/src/icons/48x48/PathBlue.png.i
+data/src/icons/16x16/wizzard.png.i
+data/src/icons/48x48/TextItalic.png.i
+data/src/map/wmts/CDiskCache.cpp.i
+data/src/icons/waypoints/32x32/FlagBlue.png.i
+data/src/icons/48x48/Print.png.i
+data/src/icons/48x48/gridWizard.png.i
+data/src/icons/cache/32x32/other.png.i
+data/GpxExamples/basecamp.gpx.i
+data/src/icons/MimeJNX.svg.i
+data/src/dem/IDemPropSetup.ui.i
+data/src/gis/db/CSetupWorkspace.cpp.i
+data/src/icons/16x16/gridSetup.png.i
+data/src/mouse/CScrOptRange.h.i
+data/src/icons/cache/minicon.svg.i
+data/src/mouse/IScrOptRange.ui.i
+data/src/icons/cache/attributes/no_Telephone_nearby.svg.i
+data/src/icons/32x32/MouseWheel.png.i
+data/src/grid/mitab.cpp.i
+data/src/icons/32x32/AddImage.png.i
+data/src/icons/32x32/PathOrange.png.i
+data/src/icons/48x48/GisProject.png.i
+data/src/icons/LineMove.svg.i
+data/src/icons/32x32/nightDay.png.i
+data/3rdparty/CGetOpt/CMakeLists.txt.i
+data/src/icons/DatabaseConvert.svg.i
+data/src/icons/cache/attributes/yes_Special_Tool_Required.svg.i
+data/src/units/CUnitsSetup.cpp.i
+data/src/gis/IGisLine.h.i
+data/src/icons/32x32/SaveGIS.png.i
+data/src/icons/32x32/TextBold.png.i
+data/src/icons/48x48/Info.png.i
+data/src/icons/32x32/VrtBuilder.png.i
+data/src/icons/cache/virtual.svg.i
+data/src/icons/cache/attributes/dis_Public_restrooms_nearby.svg.i
+data/src/map/CMapList.cpp.i
+data/cmake/Modules/COPYING-CMAKE-SCRIPTS.i
+data/src/gis/rte/CScrOptRte.h.i
+data/src/icons/Pattern.svg.i
+data/src/icons/waypoints/Residence.svg.i
+data/src/gis/db/CLostFoundProject.h.i
+data/src/icons/32x32/rmap.png.i
+data/src/icons/cache/attributes/dis_Dangerous_area.svg.i
+data/src/icons/16x16/MouseWheel.png.i
+data/src/icons/LoadView.svg.i
+data/src/dem/CDemPropSetup.cpp.i
+data/cmake/Modules/FindJPEG.cmake.i
+data/src/icons/cache/attributes/yes_Bicycles.svg.i
+data/src/icons/32x32/Time.png.i
+data/src/icons/16x16/SelectColor.png.i
+data/src/gis/trk/filter/CFilterReplaceElevation.cpp.i
+data/src/animation/README.i
+data/src/icons/48x48/AddMapWorkspace.png.i
+data/src/icons/32x32/Print.png.i
+data/3rdparty/DBConverter/qlgt/CQlb.h.i
+data/src/map/mapsforge/types.cpp.i
+data/src/icons/cache/attributes/yes_Cross_Country_Skis.svg.i
+data/src/icons/16x16/Lock.png.i
+data/maproom.desktop.i
+data/3rdparty/CGetOpt/classGetOpt.html.i
+data/src/gis/trk/filter/IFilterSpeed.ui.i
+data/src/icons/16x16/fromMap.png.i
+data/src/icons/32x32/DatabaseSetup.png.i
+data/src/icons/32x32/3DFix.png.i
+data/src/icons/32x32/ToolTip.png.i
+data/src/cursors/cursorMove.png.i
+data/src/icons/32x32/QMapShack.png.i
+data/src/icons/32x32/TextItalic.png.i
+data/src/icons/cache/attributes/dis_Quads.svg.i
+data/src/icons/Empty.svg.i
+data/src/icons/48x48/gridSetup.png.i
+data/src/icons/cache/down_icon.svg.i
+data/src/icons/MimeWMTS.svg.i
+data/src/icons/cache/attributes/dis_Dangerous_Animals.svg.i
+data/src/gis/trk/filter/IFilterDelete.ui.i
+data/src/icons/16x16/poiText.png.i
+data/src/gis/db/CDBFolderLostFound.cpp.i
+data/src/icons/ToolTip.svg.i
+data/3rdparty/DBConverter/main.cpp.i
+data/src/icons/cache/log.svg.i
+data/src/icons/cache/attributes/yes_Dogs.svg.i
+data/src/grid/CGridSetup.h.i
+data/src/icons/16x16/TextJustified.png.i
+data/src/icons/AddProject.svg.i
+data/src/icons/48x48/Check.png.i
+data/src/icons/cache/DistIcon.svg.i
+data/src/icons/16x16/DeleteMultiple.png.i
+data/src/map/CMapPropSetup.h.i
+data/src/icons/8x8/bullet_white.png.i
+data/src/map/CMapJNX.cpp.i
+data/src/CCanvas.cpp.i
+data/src/gis/db/CDBFolderProject.cpp.i
+data/src/icons/16x16/scale.png.i
+data/src/icons/icons.svg.d
+data/src/device/IDevice.h.i
+data/src/icons/waypoints/BoxRed.svg.i
+data/src/icons/AddWpt.svg.i
+data/src/icons/AddArea.svg.i
+data/src/icons/cache/attributes/no_Recommended_for_kids.svg.i
+data/src/icons/32x32/Left.png.i
+data/src/icons/8x8/bullet_red.png.i
+data/src/icons/cache/attributes/yes_Drinking_water_nearby.svg.i
+data/src/icons/waypoints/FlagRed.svg.i
+data/src/icons/32x32/WptProx.png.i
+data/3rdparty/CGetOpt/getopt.pro.i
+data/src/icons/2DFix.svg.i
+data/src/icons/cache/attributes/yes_Wheelchair_accessible.svg.i
+data/src/icons/DelImage.svg.i
+data/src/helpers/IPhotoAlbum.ui.i
+data/src/icons/cache/attributes/yes_Camping_available.svg.i
+data/src/icons/48x48/TimeZoneSetup.png.i
+data/templates/header.h.i
+data/src/icons/32x32/Start.png.i
+data/src/icons/waypoints/32x32/BoxBlue.png.i
+data/src/gis/db/CDBFolderGroup.cpp.i
+data/src/gis/CGisItemWpt.h.i
+data/src/units/CUnitImperial.cpp.i
+data/src/icons/cache/attributes/no_Recommended_at_night.svg.i
+data/src/gis/trk/CScrOptTrk.h.i
+data/src/map/IMapProp.h.i
+data/src/helpers/CHistoryListWidget.cpp.i
+data/src/map/garmin/IGarminStrTbl.cpp.i
+data/src/icons/32x32/Close.png.i
+data/src/locale/qmapshack_es.ts.i
+data/src/gis/rte/CGisItemRte.h.i
+data/src/plot/CPlotSpeed.cpp.i
+data/src/icons/48x48/Up.png.i
+data/src/map/IMapProp.ui.i
+data/src/map/CMapWMTS.h.i
+data/src/mouse/CMouseEditArea.cpp.i
+data/src/icons/16x16/MimeWMTS.png.i
+data/src/icons/32x32/Link.png.i
+data/src/icons/NoFix.svg.i
+data/src/gis/CGisItemRte.h.i
+data/src/icons/32x32/jnx.png.i
+data/src/gis/db/CDBFolderOther.cpp.i
+data/src/pics/compass.svg.i
+data/src/gis/trk/filter/CFilterObscureDate.cpp.i
+data/src/icons/waypoints/DiamondRed.svg.i
+data/src/plot/CPlotAxis.h.i
+data/src/icons/cache/attributes/yes_Thorns.svg.i
+data/src/icons/Paste.svg.i
+data/src/icons/8x8/bullet_dark_cyan.png.i
+data/src/gis/IGisItem.cpp.i
+data/cmake/CMakeLists.txt.i
+data/src/icons/32x32/DeleteMultiple.png.i
+data/3rdparty/DBConverter/CQlgtDb.h.i
+data/src/gis/trk/IDetailsTrk.ui.i
+data/src/IDB.h.i
+data/src/icons/16x16/TextRight.png.i
+data/src/gis/db/CSetupDB.h.i
+data/src/icons/cache/attributes/dis_Stroller_accessible.svg.i
+data/src/IMainWindow.ui.i
+data/src/icons/16x16/Cut.png.i
+data/src/icons/Add.svg.i
+data/src/gis/wpt/CDetailsWpt.h.i
+data/src/icons/32x32/AddArea.png.i
+data/src/icons/waypoints/32x32/DiamondRed.png.i
+data/src/icons/EditText.svg.i
+data/src/icons/16x16/flipDirection.png.i
+data/src/units/ITimeZoneSetup.ui.i
+data/src/map/wmts/IDiskCache.cpp.i
+data/src/cursors/cursorMoveLine.png.i
+data/cmake/Modules/DefineCMakeDefaults.cmake.i
+data/src/dem/CDemVRT.cpp.i
+data/src/grid/CProjWizard.cpp.i
+data/src/icons/32x32/Track.png.i
+data/src/icons/48x48/TextUnderlined.png.i
+data/src/icons/cache/32x32/traditional.png.i
+data/src/icons/48x48/Undo.png.i
+data/src/icons/48x48/EditText.png.i
+data/src/icons/32x32/LoadView.png.i
+data/src/icons/cache/attributes/yes_Poison_plants.svg.i
+data/src/icons/cache/attributes/yes_Stroller_accessible.svg.i
+data/src/icons/cache/attributes/dis_Stealth_required.svg.i
+data/src/icons/48x48/PointHide.png.i
+data/src/gis/tnv/serialization.cpp.i
+data/src/icons/16x16/WptMove.png.i
+data/src/icons/cache/32x32/write_note.png.i
+data/src/icons/cache/attributes/dis_Abandoned_mines.svg.i
+data/src/pics/splash.png.i
+data/src/icons/16x16/3DFix.png.i
+data/src/icons/16x16/NightDay.png.i
+data/src/pics/splash.png.d
+data/src/icons/CutHistory.svg.i
+data/src/icons/cache/attributes/yes_Significant_Hike.svg.i
+data/src/map/CMapPathSetup.h.i
+data/src/canvas/IDrawContext.h.i
+data/src/gis/db/CSetupDatabase.cpp.i
+data/src/icons/cache/32x32/earth.png.i
+data/src/gis-search/CSearchGoogle.cpp.i
+data/src/gis-search/CGisSearchWidget.h.i
+data/src/gis/gpx/CGisProject.h.i
+data/src/icons/cache/attributes/dis_Motorcycles.svg.i
+data/src/grid/mitab.h.i
+data/src/icons/32x32/FolderMap.png.i
+data/src/gis/trk/filter/IFilterOffsetElevation.ui.i
+data/src/icons/32x32/mime_jnx.png.i
+data/src/icons/cache/attributes/dis_Fuel_Nearby.svg.i
+data/src/icons/48x48/NoFix.png.i
+data/src/icons/waypoints/Waypoint.svg.i
+data/src/dem/CDemDraw.h.i
+data/src/CAppOpts.h.i
+data/src/icons/waypoints/DiamondBlue.svg.i
+data/src/icons/48x48/FromMap.png.i
+data/src/map/CMapVrtBuilder.cpp.i
+data/src/icons/TextBold.svg.i
+data/src/icons/Lock.svg.i
+data/src/icons/48x48/Cut.png.i
+data/src/map/CMapIMG.cpp.i
+data/src/icons/AreaMove.svg.i
+data/src/gis/trk/filter/IFilterNewDate.ui.i
+data/src/icons/cache/event.svg.i
+data/src/icons/16x16/font.png.i
+data/src/icons/32x32/wizzard.png.i
+data/src/gis/trk/filter/IFilterReplaceElevation.ui.i
+data/src/icons/32x32/pathMap.png.i
+data/src/icons/48x48/Opacity.png.i
+data/src/icons/32x32/PathBlue.png.i
+data/src/icons/cache/restore.svg.i
+data/src/icons/48x48/NightDay.png.i
+data/src/icons/MouseWheel.svg.i
+data/src/icons/PointMove.svg.i
+data/src/icons/16x16/MimeDemVRT.png.i
+data/src/map/IMap.cpp.i
+data/src/map/CMapTMS.cpp.i
+data/src/plot/CPlotData.h.i
+data/src/icons/cache/attributes/dis_Scenic_view.svg.i
+data/src/icons/cache/32x32/dnf.png.i
+data/src/gis/db/CLostFoundProject.cpp.i
+data/src/gis-search/CSearchGoogle.h.i
+data/src/gis/IGisProject.h.i
+data/src/icons/cache/attributes/no_Wheelchair_accessible.svg.i
+data/src/icons/cache/attributes/dis_Needs_maintenance.svg.i
+data/src/qlgt/CQlgtDiary.cpp.i
+data/src/map/CMapList.h.i
+data/src/plot/CPlotSpeed.h.i
+data/src/gis-search/IGisSearch.cpp.i
+data/src/dem/CDem.h.i
+data/src/icons/48x48/PointMove.png.i
+data/src/icons/EditDetails.svg.i
+data/src/gis-search/IGisSearch.h.i
+data/src/icons/cache/attributes/dis_Telephone_nearby.svg.i
+data/src/icons/32x32/FolderDEM.png.i
+data/src/icons/32x32/Area.png.i
+data/src/icons/32x32/WptProj.png.i
+data/src/icons/cache/32x32/waypoint-flag-red.png.i
+data/src/device/CDeviceTwoNav.cpp.i
+data/src/icons/waypoints/32x32/FlagGreen.png.i
+data/src/icons/16x16/UnLock.png.i
+data/src/gis/wpt/IProjWpt.ui.i
+data/src/icons/32x32/PathGreen.png.i
+data/src/icons/16x16/2DFix.png.i
+data/src/icons/cache/attributes/no_Available_during_winter.svg.i
+data/src/gis/trk/filter/CFilterDelete.h.i
+data/src/icons/48x48/Cancel.png.i
+data/src/icons/8x8/bullet_dark_blue.png.i
+data/src/gis/trk/filter/CFilterReset.h.i
+data/src/icons/Image.svg.i
+data/src/icons/Start.svg.i
+data/src/mouse/CMouseEditArea.h.i
+data/src/icons/48x48/Move.png.i
+data/src/icons/SetupMapWorkspace.svg.i
+data/src/mouse/CMouseRangeTrk.cpp.i
+data/src/icons/32x32/EditText.png.i
+data/src/qlgt/IQlgtOverlay.h.i
+data/src/mouse/CScrOptPoint.cpp.i
+data/src/qlgt/CQlgtDb.cpp.i
+data/src/icons/48x48/TextJustified.png.i
+data/src/gis/trk/CCombineTrk.cpp.i
+data/src/icons/48x48/FolderMap.png.i
+data/src/icons/32x32/CutHistory.png.i
+data/src/icons/cache/cito.svg.i
+data/src/icons/waypoints/32x32/PinRed.png.i
+data/src/icons/MimeDemVRT.svg.i
+data/src/icons/16x16/AddMapWorkspace.png.i
+data/src/icons/48x48/UnLock.png.i
+data/src/icons/cache/attributes/yes_Night_Cache.svg.i
+data/src/icons/cache/attributes/dis_Cross_Country_Skis.svg.i
+data/src/gis/prj/IGisProject.h.i
+data/src/qlgt/CQlgtTrack.h.i
+data/src/gis/CGisItemTrk.h.i
+data/src/icons/32x32/Error.png.i
+data/src/icons/cache/waypoint-flag-red.svg.i
+data/src/gis/WptIcons.cpp.i
+data/src/icons/cache/attributes/dis_Access_or_parking_fee.svg.i
+data/src/icons/48x48/Font.png.i
+data/src/icons/16x16/nightDay.png.i
+data/src/icons/cache/attributes/no_Horses.svg.i
+data/src/icons/16x16/Down.png.i
+data/src/icons/32x32/TextJustified.png.i
+data/src/mouse/CMouseNormal.cpp.i
+data/src/icons/cache/attributes/dis_May_require_swimming.svg.i
+data/src/icons/cache/attributes/yes_Snowmobiles.svg.i
+data/src/icons/32x32/POIText.png.i
+data/src/map/CMap.cpp.i
+data/src/icons/waypoints/32x32/BoxGreen.png.i
+data/src/icons/48x48/help.png.i
+data/src/icons/48x48/UnitSetup.png.i
+data/src/units/IUnit.cpp.i
+data/src/animation/WTFPL-2.i
+data/src/icons/16x16/mime_jnx.png.i
+data/src/icons/Left.svg.i
+data/src/dem/IDem.h.i
+data/src/mouse/IScrOptRangeTrk.ui.i
+data/src/icons/Path.svg.i
+data/src/icons/32x32/check.png.i
+data/src/gis/gpx/CGisProject.cpp.i
+data/src/icons/48x48/QMapShack.png.i
+data/src/icons/48x48/Apply.png.i
+data/src/icons/SetEle.svg.i
+data/src/icons/32x32/SetEle.png.i
+data/src/icons/16x16/up.png.i
+data/src/map/cache/CDiskCache.cpp.i
+data/nsi/MUI_HEADERIMAGE.bmp.i
+data/src/dem/IDem.cpp.i
+data/src/icons/cache/attributes/dis_Food_Nearby.svg.i
+data/cmake/Modules/FindQextSerialPort.cmake.i
+data/3rdparty/DBConverter/CMakeLists.txt.i
+data/src/icons/32x32/gridSetup.png.i
+data/src/icons/SaveGISAs.svg.i
+data/src/icons/32x32/Off.png.i
+data/src/icons/waypoints/PinGreen.svg.i
+data/src/Platform.h.i
+data/src/icons/cache/attributes/no_Snowmobiles.svg.i
+data/src/icons/32x32/Check.png.i
+data/src/map/IMapPropSetup.ui.i
+data/src/icons/16x16/MimeMAP.png.i
+data/src/helpers/ISelectProjectDialog.ui.i
+data/src/icons/16x16/TextLeft.png.i
+data/src/gis/db/CSetupWorkspace.h.i
+data/src/icons/cache/attributes/dis_Short_hike_(less_than_1km).svg.i
+data/src/map/IMapPathSetup.ui.i
+data/src/icons/48x48/GridSetup.png.i
+data/src/mouse/CScrOptWpt.cpp.i
+data/src/icons/cache/attributes/yes_Medium_hike_(1km-10km).svg.i
+data/src/icons/48x48/Combine.png.i
+data/src/map/CMapWMTS.cpp.autosave.i
+data/cmake/Modules/FindDMTX.cmake.i
+data/src/icons/16x16/delete.png.i
+data/src/icons/AddArea.svg.d
+data/src/plot/ITrack.h.i
+data/src/qlgt/CQlgtRoute.h.i
+data/src/icons/16x16/Route.png.i
+data/src/gis/CGisItemTrk.cpp.i
+data/src/icons/48x48/Link.png.i
+data/src/helpers/CSelectProjectDialog.h.i
+data/src/icons/32x32/DelImage.png.i
+data/src/icons/16x16/Reset.png.i
+data/src/cursors/cursorAdd.png.i
+data/src/icons/32x32/reset.png.i
+data/src/icons/48x48/SearchGoogle.png.i
+data/src/icons/Area.svg.i
+data/src/gis/prj/IDetailsPrj.ui.i
+data/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake.i
+data/src/dem/CDemVRT.h.i
+data/src/gis/trk/CGisItemTrk.h.i
+data/src/locale/qmapshack_fr.ts.i
+data/3rdparty/DBConverter/qlgt/IQlgtOverlay.h.i
+data/src/map/garmin/CGarminStrTblUtf8.cpp.i
+data/src/gis/CGisItemWpt.cpp.i
+data/src/icons/32x32/Empty.png.i
+data/src/helpers/CFileExt.h.i
+data/src/map/CMapVRT.h.i
+data/src/canvas/CCanvas.h.i
+data/src/icons/cache/attributes/no_Quads.svg.i
+data/src/icons/32x32/up.png.i
+data/src/map/garmin/CGarminPolygon.h.i
+data/src/gis/gpx/CGpxProject.cpp.i
+data/src/icons/cache/attributes/dis_Wireless_Beacon.svg.i
+data/src/icons/16x16/redGlow.png.i
+data/src/icons/16x16/Track.png.i
+data/src/icons/PathBlue.svg.i
+data/src/icons/cache/32x32/OCMLogoSmall.png.i
+data/src/map/CMapWMTS.cpp.i
+data/src/icons/48x48/Redo.png.i
+data/src/icons/16x16/Help.png.i
+data/src/icons/cache/attributes/yes_May_require_wading.svg.i
+data/src/map/CMapDraw.h.i
+data/src/map/IMapPropSetup.h.i
+data/src/icons/SearchGoogle.svg.i
+data/src/icons/16x16/add.png.i
+data/src/icons/waypoints/32x32/Default.png.i
+data/src/icons/cache/attributes/dis_Snowshoes.svg.i
+data/src/helpers/CWptIconDialog.h.i
+data/src/mouse/CMouseNormal.h.i
+data/src/map/CMapIMG.h.i
+data/src/mouse/IScrOpt.cpp.i
+data/src/device/CDeviceWatcherLinux.cpp.i
+data/src/icons/16x16/TextItalic.png.i
+data/src/icons/8x8/bullet_blue.png.i
+data/src/icons/cache/32x32/multi.png.i
+data/src/icons/VrtBuilder.svg.i
+data/src/icons/32x32/ReloadImage.png.i
+data/src/icons/cache/32x32/ftf.png.i
+data/src/plot/CPlotAxis.cpp.i
+data/src/icons/32x32/Route.png.i
+data/src/main.cpp.i
+data/src/helpers/Platform.h.i
+data/src/icons/16x16/TimeZoneSetup.png.i
+data/mkfile.i
+data/src/icons/Tainted.svg.i
+data/src/icons/waypoints/32x32/FlagRed.png.i
+data/src/icons/cache/attributes/dis_Dogs.svg.i
+data/src/helpers/IPositionDialog.ui.i
+data/src/icons/cache/multi.svg.i
+data/src/helpers/IElevationDialog.ui.i
+data/src/icons/16x16/pathMap.png.i
+data/src/icons/cache/32x32/unknown.png.i
+data/3rdparty/DBConverter/IMainWindow.ui.i
+data/src/icons/48x48/AddProject.png.i
+data/src/icons/cache/32x32/down_icon.png.i
+data/nsi/copyfiles.bat.i
+data/src/pics/compass.png.i
+data/src/icons/cache/attributes/no_Drinking_water_nearby.svg.i
+data/src/icons/cache/attributes/yes_Ticks.svg.i
+data/src/map/CGrid.h.i
+data/src/icons/32x32/selectColor.png.i
+data/src/icons/cache/32x32/OCMLogo.png.i
+data/src/gis/trk/CGisItemTrk.cpp.i
+data/src/icons/Apply.svg.i
+data/src/icons/32x32/mime_vrt.png.i
+data/src/icons/TextCenter.svg.i
+data/src/icons/cache/32x32/minicon.png.i
+data/src/icons/48x48/SelectRange.png.i
+data/src/mouse/IMouseEditLine.h.i
+data/src/icons/QmsProject.svg.i
+data/src/icons/waypoints/DiamondGreen.svg.i
+data/src/icons/16x16/SelectRange.png.i
+data/src/mouse/CMouseMoveWpt.h.i
+data/src/icons/cache/attributes/yes_Wireless_Beacon.svg.i
+data/src/qlgt/CImportDatabase.h.i
+data/src/icons/cache/trailhead.svg.i
+data/src/icons/cache/attributes/dis_Field_Puzzle.svg.i
+data/nsi/copyfiles32.bat.i
+data/src/icons/32x32/Help.png.i
+data/src/icons/cache/attributes/no_Food_Nearby.svg.i
+data/src/icons/48x48/TextBold.png.i
+data/3rdparty/DBConverter/CMainWindow.h.i
+data/src/icons/16x16/Paste.png.i
+data/src/gis/tnv/CTwoNavProject.h.i
+data/src/icons/32x32/TextUnderlined.png.i
+data/src/plot/CPlotDistance.h.i
+data/src/dem/CDemPropSetup.h.i
+data/src/icons/waypoints/PinRed.svg.i
+data/src/gis/rte/CScrOptRte.cpp.i
+data/src/icons/cache/attributes/dis_Watch_for_livestock.svg.i
+data/src/plot/ITrack.cpp.i
+data/src/icons/cache/attributes/no_Parking_available.svg.i
+data/templates/source.cpp.i
+data/src/icons/48x48/MimeIMG.png.i
+data/src/icons/cache/corrected.svg.i
+data/src/icons/SelectRange.svg.i
+data/src/gis/ovl/CDetailsOvlArea.h.i
+data/src/gis/WptIcons.h.i
+data/nsi/konsole.ico.i
+data/src/map/IMap.h.i
+data/src/gis/CGisSerialization.h.i
+data/src/dem/CDemDraw.cpp.i
+data/src/icons/waypoints/32x32/PinBlue.png.i
+data/src/icons/32x32/Device.png.i
+data/src/icons/cache/attributes/no_Stealth_required.svg.i
+data/src/plot/CPlotAxisTime.h.i
+data/src/icons/32x32/MapRoom.png.i
+data/src/icons/16x16/Redo.png.i
+data/src/gis/db/ISetupWorkspace.ui.i
+data/src/icons/32x32/Scale.png.i
+data/src/icons/16x16/grid.png.i
+data/src/icons/waypoints/32x32/Residence.png.i
+data/src/cursors/cursorMoveArea.png.i
+data/src/icons/16x16/Map.png.i
+data/src/gis/IGisLine.cpp.i
+data/src/icons/32x32/GpxProject.png.i
+data/src/icons/cache/attributes/yes_Short_hike_(less_than_1km).svg.i
+data/src/gis/search/CSearchGoogle.h.i
+data/nsi/QMapShack_Installer.nsi.i
+data/src/qlgt/converter.cpp.i
+data/src/plot/CPlotData.cpp.i
+data/src/icons/16x16/MimeRMAP.png.i
+data/src/icons/32x32/poiText.png.i
+data/src/helpers/CElevationDialog.cpp.i
+data/src/icons/ReloadImage.svg.i
+data/src/helpers/CTextEditWidget.h.i
+data/src/icons/cache/attributes/yes_Quads.svg.i
+data/src/icons/Print.svg.i
+data/src/icons/8x8/bullet_gray.png.i
+data/src/dem/CDemPathSetup.h.i
+data/src/qlgt/CQlgtWpt.h.i
+data/src/icons/cache/attributes/dis_Flashlight_required.svg.i
+data/src/dem/IDemPathSetup.ui.i
+data/src/map/CMapPathSetup.cpp.i
+data/src/units/CTimeZoneSetup.h.i
+data/src/gis/bin/CBinProject.cpp.i
+data/src/icons/48x48/Start.png.i
+data/src/icons/32x32/MimeIMG.png.i
+data/src/mouse/CMouseEditTrk.h.i
+data/src/icons/cache/attributes/yes_Scenic_view.svg.i
+data/src/map/CMap.h.i
+data/src/cursors/wptHighlight.svg.i
+data/src/icons/cache/found.svg.i
+data/src/plot/CPlotDistance.cpp.i
+data/src/icons/48x48/POIText.png.i
+data/src/device/IDeviceWatcher.cpp.i
+data/src/map/garmin/CGarminStrTbl8.cpp.i
+data/src/icons/SelectColor.svg.i
+data/src/icons/48x48/Map.png.i
+data/src/gis/db/CDBFolderDatabase.h.i
+data/src/icons/icons.svg.i
+data/src/icons/TextLeft.svg.i
+data/src/map/cache/IDiskCache.h.i
+data/3rdparty/DBConverter/qlgt/CQlgtRoute.cpp.i
+data/src/icons/cache/attributes/dis_UV_Light_Required.svg.i
+data/src/units/CUnitMetric.h.i
+data/src/gis/IGisItem.h.i
+data/3rdparty/DBConverter/CMainWindow.cpp.i
+data/src/gis/qms/CQmsProject.cpp.i
+data/src/icons/48x48/CutHistory.png.i
+data/src/icons/DatabaseSetup.svg.i
+data/src/icons/16x16/Tainted.png.i
+data/src/icons/48x48/pathMap.png.i
+data/src/icons/waypoints/FlagGreen.svg.i
+data/src/icons/cache/attributes/dis_Thorns.svg.i
+data/src/gis/bin/CGisSerialization.h.i
+data/src/device/CDeviceWatcherLinux.h.i
+data/nsi/kfm_home.ico.i
+data/src/icons/cache/up_icon.svg.i
+data/src/icons/32x32/WptMove.png.i
+data/src/gis/db/macros.h.i
+data/src/gis/trk/filter/CFilterSpeed.h.i
+data/src/gis/trk/filter/CFilterReset.cpp.i
+data/src/gis/db/CDBFolderGroup.h.i
+data/src/icons/cache/pushpin.svg.i
+data/src/icons/cache/32x32/trailhead.png.i
+data/3rdparty/DBConverter/qlgt/CQlgtTrack.cpp.i
+data/src/icons/cache/attributes/dis_Campfires.svg.i
+data/src/icons/32x32/scale.png.i
+data/src/icons/48x48/LineMove.png.i
+data/src/icons/cache/attributes/dis_Medium_hike_(1km-10km).svg.i
+data/3rdparty/CGetOpt/main.cpp.i
+data/src/icons/cache/attributes/yes_Horses.svg.i
+data/src/animation/loader.gif.i
+data/cmake/Modules/FindGPSD.cmake.i
+data/src/icons/48x48/Time.png.i
+data/src/map/CMapRMAP.h.i
+data/src/icons/32x32/mime_img.png.i
+data/src/CAbout.cpp.i
+data/src/icons/16x16/Up.png.i
+data/src/icons/32x32/MimeVRT.png.i
+data/nsi/gdalicon.ico.i
+data/src/icons/16x16/FolderDEM.png.i
+data/3rdparty/DBConverter/CQlgtDb.cpp.i
+data/src/icons/48x48/MimeMAP.png.i
+data/src/icons/48x48/TrkCut.png.i
+data/src/gis/db/IDB.cpp.i
+data/src/icons/SaveAllGIS.svg.i
+data/src/icons/DBProject.svg.i
+data/src/icons/16x16/LoadGIS.png.i
+data/src/icons/48x48/Off.png.i
+data/src/icons/Copy.svg.i
+data/src/map/CMapMAP.h.i
+data/src/icons/NightDay.svg.i
+data/src/icons/32x32/font.png.i
+data/src/icons/16x16/Add.png.i
+data/src/icons/waypoints/PinBlue.svg.i
+data/src/icons/cache/greenpin.svg.i
+data/src/gis/CGisListWks.cpp.i
+data/src/gis/bin/CGisSerialization.cpp.i
+data/src/icons/16x16/GisProject.png.i
+data/src/icons/48x48/Close.png.i
+data/src/map/garmin/CGarminTyp.h.i
+data/src/icons/cache/32x32/star.png.i
+data/src/qlgt/CImportDatabase.cpp.i
+data/src/mouse/IScrOptPoint.ui.i
+data/src/icons/32x32/SelectRange.png.i
+data/src/icons/cache/attributes/yes_May_require_swimming.svg.i
+data/src/icons/Reset.svg.i
+data/src/icons/32x32/TextLeft.png.i
+data/src/mouse/CScrOptUnclutter.h.i
+data/src/CAbout.h.i
+data/src/units/CUnitMetric.cpp.i
+data/src/icons/32x32/TrkProfile.png.i
+data/src/icons/cache/attributes/dis_Difficult_climbing.svg.i
+data/src/icons/Redo.svg.i
+data/src/icons/32x32/gridWizard.png.i
+data/src/gis/db/CDBFolderOther.h.i
+data/src/icons/cache/attributes/no_Available_at_all_times.svg.i
+data/src/icons/48x48/Reverse.png.i
+data/src/mouse/CScrOptRange.cpp.i
+data/src/icons/cache/attributes/dis_Special_Tool_Required.svg.i
+data/src/icons/cache/attributes/no_Short_hike_(less_than_1km).svg.i
+data/src/icons/32x32/MimeDemVRT.png.i
+data/src/device/CDeviceWatcherWindows.h.i
+data/src/gis/CGisSerialization.cpp.i
+data/src/icons/cache/ftf.svg.i
+data/src/icons/32x32/add.png.i
+data/src/icons/32x32/MimeJNX.png.i
+data/src/icons/cache/webcam.svg.i
+data/src/icons/cache/traditional.svg.i
+data/src/grid/IGridSetup.ui.i
+data/src/icons/cache/attributes/dis_Recommended_at_night.svg.i
+data/src/icons/cache/attributes/yes_Needs_maintenance.svg.i
+data/src/icons/Font.svg.i
+data/src/map/IMapVrtBuilder.ui.i
+data/src/icons/Undo.svg.i
+data/src/icons/cache/attributes/yes_Scuba_gear.svg.i
+data/src/icons/cache/star_empty.svg.i
+data/src/icons/16x16/Undo.png.i
+data/src/gis/trk/CCombineTrk.h.i
+data/src/version.h.i
+data/src/icons/32x32/2NavProject.png.i
+data/src/icons/32x32/SaveGISAs.png.i
+data/src/plot/CPlotTrack.cpp.i
+data/cmake/Modules/CMakeLists.txt.i
+data/src/icons/cache/attributes/yes_UV_Light_Required.svg.i
+data/src/icons/waypoints/32x32/BoxRed.png.i
+data/src/icons/waypoints/32x32/Waypoint.png.i
+data/src/icons/16x16/Scale.png.i
+data/src/helpers/CPositionDialog.cpp.i
+data/src/qlgt/CQlb.h.i
+data/src/canvas/IDrawContext.cpp.i
+data/src/icons/cache/32x32/virtual.png.i
+data/src/map/CMapTMS.h.i
+data/src/map/garmin/IGarminStrTbl.h.i
+data/call_Uncrustify.cfg.i
+data/src/qlgt/IImportDatabase.ui.i
+data/src/CMakeLists.txt.i
+data/src/icons/cache/dnf.svg.i
+data/src/icons/LoadGIS.svg.i
+data/src/icons/16x16/GridSetup.png.i
+data/src/icons/32x32/Pattern.png.i
+data/src/icons/Info.svg.i
+data/src/icons/32x32/MimeWMTS.png.i
+data/src/icons/AddImage.svg.i
+data/src/icons/waypoints/makeicons.i
+data/src/CMainWindow.cpp.i
+data/src/icons/16x16/TextUnderlined.png.i
+data/src/units/IUnit.h.i
+data/src/map/IMapProp.cpp.i
+data/src/icons/cache/32x32/greenpin.png.i
+data/src/gis/db/CDBFolderDatabase.cpp.i
+data/src/CMainWindow.h.i
+data/src/gis/db/CSetupDatabase.h.i
+data/src/gis/trk/IScrOptTrk.ui.i
+data/src/icons/cache/32x32/bluepin.png.i
+data/src/gis/db/IDB.h.i
+data/src/icons/TrkProfile.svg.i
+data/src/icons/cache/32x32/DistIcon.png.i
+data/cmake/Modules/MacroCopyFile.cmake.i
+data/src/icons/48x48/SaveAllGIS.png.i
+data/src/gis/CGisWidget.h.i
+data/src/icons/cache/attributes/no_Motorcycles.svg.i
+data/src/icons/48x48/MimeVRT.png.i
+data/src/icons/cache/OCMLogoSmall.svg.i
+data/src/icons/waypoints/BoxGreen.svg.i
+data/src/icons/48x48/Lock.png.i
+data/src/icons/48x48/LoadGIS.png.i
+data/src/icons/48x48/Track.png.i
+data/src/gis/CGisWidget.cpp.i
+data/src/dem/IDemProp.cpp.i
+data/src/icons/48x48/GpxProject.png.i
+data/src/units/CUnitNautic.h.i
+data/src/icons/32x32/map.png.i
+data/src/icons/48x48/DatabaseConvert.png.i
+data/src/icons/cache/attributes/no_Bicycles.svg.i
+data/src/icons/32x32/Apply.png.i
+data/src/qlgt/CQlgtWpt.cpp.i
+data/src/qlgt/CQlgtDiary.h.i
+data/src/icons/waypoints/FlagBlue.svg.i
+data/src/icons/FolderMap.svg.i
+data/src/icons/48x48/DeleteOne.png.i
+data/src/gis/trk/filter/CFilterMedian.h.i
+data/src/icons/cache/attributes/yes_Dangerous_area.svg.i
+data/src/icons/32x32/TextRight.png.i
+data/src/icons/48x48/QmsProject.png.i
+data/src/icons/Link.svg.i
+data/src/icons/makeicons.i
+data/src/icons/Move.svg.i
+data/src/animation/loader2.gif.i
+data/src/icons/16x16/TrkProfile.png.i
+data/src/icons/16x16/Cancel.png.i
+data/src/mouse/CScrOptEditLine.cpp.i
+data/src/gis/CGisDraw.h.i
+data/src/icons/cache/attributes/yes_Off-road_vehicles.svg.i
+data/src/icons/cache/attributes/yes_Cliff___falling_rocks.svg.i
+data/nsi/3rdparty.txt.i
+data/src/icons/32x32/SearchGoogle.png.i
+data/src/qlgt/CQlgtDb.h.i
+data/src/map/CMapMAP.cpp.i
+data/src/mouse/IMouseEditLine.cpp.i
+data/src/cursors/cursorSelectRange.png.i
+data/src/gis/db/IDBFolder.h.i
+data/src/icons/48x48/TrkProfile.png.i
+data/src/icons/8x8/bullet_dark_gray.png.i
+data/src/icons/8x8/bullet_dark_red.png.i
+data/src/icons/cache/makeicons.i
+data/src/icons/48x48/Tainted.png.i
+data/src/icons/cache/attributes/dis_Takes_less_than_an_hour.svg.i
+data/src/icons/3DFix.svg.i
+data/src/helpers/CPositionDialog.h.i
+data/src/map/CMapItem.cpp.i
+data/3rdparty/DBConverter/qlgt/CQlgtTrack.h.i
+data/src/icons/cache/attributes/yes_Abandoned_mines.svg.i
+data/src/icons/8x8/bullet_green.png.i
+data/src/icons/cache/32x32/letterbox.png.i
+data/src/icons/32x32/mime_rmap.png.i
+data/src/icons/32x32/LoadGIS.png.i
+data/src/icons/cache/attributes/no_Off-road_vehicles.svg.i
+data/src/canvas/ICanvasSetup.ui.i
+data/src/icons/32x32/AddWpt.png.i
+data/src/map/garmin/CGarminPoint.h.i
+data/src/device/CDeviceGarmin.h.i
+data/src/icons/cache/32x32/found.png.i
+data/src/icons/32x32/deleteAll.png.i
+data/src/IDrawContext.cpp.i
+data/cmake/Modules/DefineCompilerFlags.cmake.i
+data/src/gis/db/IDBFolder.cpp.i
+data/src/qlgt/CQlb.cpp.i
+data/src/gis/trk/CScrOptTrk.cpp.i
+data/src/gis/db/CDBProject.h.i
+data/src/icons/32x32/MimeRMAP.png.i
+data/src/icons/16x16/mime_map.png.i
+data/src/plot/CPlot.h.i
+data/src/plot/CPlotAxisTime.cpp.i
+data/src/IAbout.ui.i
+data/src/icons/waypoints/32x32/PinGreen.png.i
+data/src/icons/32x32/AddProject.png.i
+data/src/icons/16x16/mime_vrt.png.i
+data/3rdparty/DBConverter/converter.cpp.i
+data/3rdparty/DBConverter/resources.qrc.i
+data/src/icons/48x48/Image.png.i
+data/src/icons/48x48/EditDetails.png.i
+data/src/gis/trk/ICombineTrk.ui.i
+data/src/icons/waypoints/Default.svg.i
+data/src/icons/FromMap.svg.i
+data/src/gis/trk/filter/CFilterDouglasPeuker.h.i
+data/src/icons/cache/needs_maintenance.svg.i
+data/src/gis/db/CSetupFolder.cpp.i
+data/config.h.cmake.i
+data/src/map/CMapItem.h.i
+data/src/icons/cache/attributes/no_Difficult_climbing.svg.i
+data/src/gis/trk/filter/IFilterReset.ui.i
+data/src/icons/16x16/ToTop.png.i
+data/src/gis/trk/filter/CFilterDouglasPeuker.cpp.i
+data/src/icons/cache/attributes/yes_Motorcycles.svg.i
+data/src/units/CUnitNautic.cpp.i
+data/src/gis/ovl/CGisItemOvlArea.h.i
+data/src/icons/cache/attributes/no_Takes_less_than_an_hour.svg.i
+data/src/icons/cache/earth.svg.i
+data/src/icons/Right.svg.i
+data/src/helpers/CElevationDialog.h.i
+data/src/gis/db/ISetupFolder.ui.i
+data/src/icons/32x32/2DFix.png.i
+data/src/icons/cache/attributes/yes_Public_restrooms_nearby.svg.i
+data/src/icons/cache/attributes/no_Long_Hike_(+10km).svg.i
+data/src/icons/48x48/Path.png.i
+data/src/locale/qmapshack_de.ts.i
+data/cmake/Modules/FindQtSoap.cmake.i
+data/src/gis/trk/filter/IFilterMedian.ui.i
+data/src/mouse/IScrOptEditLine.ui.i
+data/src/map/CMapVrtBuilder.h.i
+data/src/icons/48x48/Error.png.i
+data/src/icons/16x16/MimeIMG.png.i
+data/src/grid/CProjWizard.h.i
+data/LICENSE.i
+data/src/icons/48x48/WptMove.png.i
+data/src/icons/cache/other.svg.i
+data/src/helpers/CInputDialog.cpp.i
+data/src/icons/16x16/Grid.png.i
+data/src/map/cache/CDiskCache.h.i
+data/src/icons/16x16/POIText.png.i
+data/src/icons/cache/32x32/webcam.png.i
+data/src/CSettings.h.i
+data/src/IDrawObject.cpp.i
+data/src/icons/48x48/DBProject.png.i
+data/src/icons/cache/attributes/no_Poison_plants.svg.i
+data/src/icons/Track.svg.i
+data/src/icons/32x32/Opacity.png.i
+data/src/icons/waypoints/32x32/DiamondBlue.png.i
+data/src/gis/db/CSetupFolder.h.i
+data/src/map/IMapPropSetup.cpp.i
+data/src/canvas/CCanvasSetup.cpp.i
+data/src/icons/32x32/PointHide.png.i
+data/3rdparty/DBConverter/CQmsDb.h.i
+data/src/device/IDevice.cpp.i
+data/src/icons/Route.svg.i
+data/src/map/garmin/CGarminPolygon.cpp.i
+data/src/icons/32x32/Database.png.i
+data/src/icons/cache/attributes/dis_Horses.svg.i
+data/src/icons/PathOrange.svg.i
+data/src/icons/Cancel.svg.i
+data/src/icons/cache/attributes/dis_Hunting.svg.i
+data/src/icons/16x16/MapRoom.png.i
+data/src/icons/cache/attributes/dis_Public_transportation.svg.i
+data/src/gis/trk/CDetailsTrk.h.i
+data/src/icons/32x32/ToBottom.png.i
+data/3rdparty/DBConverter/qlgt/CQlgtDiary.cpp.i
+data/src/icons/MimeVRT.svg.i
+data/src/icons/32x32/Right.png.i
+data/src/icons/16x16/Check.png.i
+data/src/gis/db/CDBProject.cpp.i
+data/3rdparty/CGetOpt/CGetOpt.h.i
+data/src/map/IMapList.ui.i
+data/src/icons/MimeRMAP.svg.i
+data/src/icons/32x32/Font.png.i
+data/src/GeoMath.cpp.i
+data/src/icons/cache/write_note.svg.i
+data/src/plot/IPlot.cpp.i
+data/src/icons/8x8/bullet_magenta.png.i
+data/src/gis/wpt/CGisItemWpt.h.i
+data/maproom.1.i
+data/src/icons/cache/attributes/yes_Recommended_at_night.svg.i
+data/src/icons/cache/attributes/yes_Climbing_gear.svg.i
+data/src/icons/Scale.svg.i
+data/src/dem/IDemList.ui.i
+data/src/icons/cache/OCMLogo.svg.i
+data/src/helpers/CPhotoAlbum.h.i
+data/src/mouse/CMouseEditTrk.cpp.i
+data/nsi/MUI_WELCOMEFINISHPAGE.bmp.i
+data/src/icons/cache/parking.svg.i
+data/src/icons/MimeMAP.svg.i
+data/src/icons/32x32/Down.png.i
+data/src/icons/32x32/grid.png.i
+data/3rdparty/DBConverter/qlgt/CQlgtWpt.h.i
+data/src/icons/48x48/DelImage.png.i
+data/src/gis/gpx/CGpxProject.h.i
+data/src/gis/trk/filter/IFilterObscureDate.ui.i
+data/src/icons/32x32/Redo.png.i
+data/src/gis/wpt/CGisItemWpt.cpp.i
+data/src/icons/48x48/ReloadImage.png.i
+data/src/icons/WptMove.svg.i
+data/src/icons/ToBottom.svg.i
+data/src/helpers/CPhotoViewer.cpp.i
+data/src/gis/bin/CBinProject.h.i
+data/src/icons/32x32/mime_map.png.i
+data/src/icons/cache/SearchIcon.svg.i
+data/src/icons/48x48/Grid.png.i
+data/src/icons/cache/Apache-2.0.i
+data/CPackConfig.cmake.i
+data/src/icons/cache/attributes/dis_Truck_Driver_RV.svg.i
+data/src/icons/32x32/SelectColor.png.i
+data/src/icons/16x16/SaveAllGIS.png.i
+data/src/icons/cache/attributes/yes_Difficult_climbing.svg.i
+data/src/gis/trk/filter/CFilterSpeed.cpp.i
+data/src/icons/32x32/SaveAllGIS.png.i
+data/src/icons/32x32/Add.png.i
+data/src/icons/32x32/Combine.png.i
+data/src/gis/prj/CDetailsPrj.cpp.i
+data/src/icons/cache/attributes/dis_Abandoned_Structure.svg.i
+data/src/gis-search/CGisSearchWidget.cpp.i
+data/src/icons/cache/attributes/yes_Field_Puzzle.svg.i
+data/src/icons/32x32/Map.png.i
+data/src/icons/48x48/MimeTMS.png.i
+data/src/icons/cache/treasure.svg.i
+data/src/icons/16x16/reset.png.i
+data/src/icons/TrkCut.svg.i
+data/GpxExamples/COPYRIGHT.i
+data/src/icons/POIText.svg.i
+data/ConfigureChecks.cmake.i
+data/src/icons/32x32/flipDirection.png.i
+data/src/icons/16x16/view.png.i
+data/src/grid/CGrid.cpp.i
+data/src/icons/GridSetup.svg.i
+data/src/icons/32x32/Cut.png.i
+data/src/canvas/IDrawObject.cpp.i
+data/src/icons/32x32/fromMap.png.i
+data/src/icons/cache/attributes/yes_Stealth_required.svg.i
+data/src/icons/16x16/addCanvas.png.i
+data/src/icons/cache/attributes/dis_Ticks.svg.i
+data/src/icons/16x16/TextCenter.png.i
+data/src/qlgt/IItem.cpp.i
+data/src/icons/32x32/DBProject.png.i
+data/src/icons/48x48/ToTop.png.i
+data/src/icons/cache/attributes/dis_Significant_Hike.svg.i
+data/src/icons/cache/attributes/yes_Telephone_nearby.svg.i
+data/src/icons/Up.svg.i
+data/src/gis/ovl/CScrOptOvlArea.h.i
+data/src/icons/Area.svg.d
+data/src/icons/cache/attributes/dis_Boat.svg.i
+data/src/icons/cache/attributes/yes_Recommended_for_kids.svg.i
+data/src/gis/wpt/CScrOptWpt.h.i
diff --git a/.hg/store/undo.backup.phaseroots b/.hg/store/undo.backup.phaseroots
new file mode 100644
index 0000000..e638030
--- /dev/null
+++ b/.hg/store/undo.backup.phaseroots
@@ -0,0 +1 @@
+1 b96fdbd83951d4a66f63f06abd77e44aae3411cf
diff --git a/.hg/store/undo.backupfiles b/.hg/store/undo.backupfiles
new file mode 100644
index 0000000..ccd1f3b
Binary files /dev/null and b/.hg/store/undo.backupfiles differ
diff --git a/.hg/store/undo.phaseroots b/.hg/store/undo.phaseroots
new file mode 100644
index 0000000..e638030
--- /dev/null
+++ b/.hg/store/undo.phaseroots
@@ -0,0 +1 @@
+1 b96fdbd83951d4a66f63f06abd77e44aae3411cf
diff --git a/.hg/strip-backup/0b6003b46efb-amend-backup.hg b/.hg/strip-backup/0b6003b46efb-amend-backup.hg
new file mode 100644
index 0000000..4c5c731
Binary files /dev/null and b/.hg/strip-backup/0b6003b46efb-amend-backup.hg differ
diff --git a/.hg/strip-backup/0f0b575a1262-amend-backup.hg b/.hg/strip-backup/0f0b575a1262-amend-backup.hg
new file mode 100644
index 0000000..d66f83b
Binary files /dev/null and b/.hg/strip-backup/0f0b575a1262-amend-backup.hg differ
diff --git a/.hg/strip-backup/24c62e27d1de-amend-backup.hg b/.hg/strip-backup/24c62e27d1de-amend-backup.hg
new file mode 100644
index 0000000..aff8105
Binary files /dev/null and b/.hg/strip-backup/24c62e27d1de-amend-backup.hg differ
diff --git a/.hg/strip-backup/3c021f1e06e9-amend-backup.hg b/.hg/strip-backup/3c021f1e06e9-amend-backup.hg
new file mode 100644
index 0000000..ae44d3d
Binary files /dev/null and b/.hg/strip-backup/3c021f1e06e9-amend-backup.hg differ
diff --git a/.hg/strip-backup/3ccda84eee0e-amend-backup.hg b/.hg/strip-backup/3ccda84eee0e-amend-backup.hg
new file mode 100644
index 0000000..596a26a
Binary files /dev/null and b/.hg/strip-backup/3ccda84eee0e-amend-backup.hg differ
diff --git a/.hg/strip-backup/3ecf812bbbc8-amend-backup.hg b/.hg/strip-backup/3ecf812bbbc8-amend-backup.hg
new file mode 100644
index 0000000..738864d
Binary files /dev/null and b/.hg/strip-backup/3ecf812bbbc8-amend-backup.hg differ
diff --git a/.hg/strip-backup/544c0ced457b-amend-backup.hg b/.hg/strip-backup/544c0ced457b-amend-backup.hg
new file mode 100644
index 0000000..dcc6dc2
Binary files /dev/null and b/.hg/strip-backup/544c0ced457b-amend-backup.hg differ
diff --git a/.hg/strip-backup/56c4f41494a8-amend-backup.hg b/.hg/strip-backup/56c4f41494a8-amend-backup.hg
new file mode 100644
index 0000000..b430378
Binary files /dev/null and b/.hg/strip-backup/56c4f41494a8-amend-backup.hg differ
diff --git a/.hg/strip-backup/5fbc4f4870b6-amend-backup.hg b/.hg/strip-backup/5fbc4f4870b6-amend-backup.hg
new file mode 100644
index 0000000..a8f35d0
Binary files /dev/null and b/.hg/strip-backup/5fbc4f4870b6-amend-backup.hg differ
diff --git a/.hg/strip-backup/7bbcc4457124-amend-backup.hg b/.hg/strip-backup/7bbcc4457124-amend-backup.hg
new file mode 100644
index 0000000..4aad50f
Binary files /dev/null and b/.hg/strip-backup/7bbcc4457124-amend-backup.hg differ
diff --git a/.hg/strip-backup/8bac0b86bb20-amend-backup.hg b/.hg/strip-backup/8bac0b86bb20-amend-backup.hg
new file mode 100644
index 0000000..f55dd11
Binary files /dev/null and b/.hg/strip-backup/8bac0b86bb20-amend-backup.hg differ
diff --git a/.hg/strip-backup/978bd08f88e4-amend-backup.hg b/.hg/strip-backup/978bd08f88e4-amend-backup.hg
new file mode 100644
index 0000000..2352e07
Binary files /dev/null and b/.hg/strip-backup/978bd08f88e4-amend-backup.hg differ
diff --git a/.hg/strip-backup/9c07d44d56bf-amend-backup.hg b/.hg/strip-backup/9c07d44d56bf-amend-backup.hg
new file mode 100644
index 0000000..ee7ed77
Binary files /dev/null and b/.hg/strip-backup/9c07d44d56bf-amend-backup.hg differ
diff --git a/.hg/strip-backup/9d434cc76a02-amend-backup.hg b/.hg/strip-backup/9d434cc76a02-amend-backup.hg
new file mode 100644
index 0000000..b758774
Binary files /dev/null and b/.hg/strip-backup/9d434cc76a02-amend-backup.hg differ
diff --git a/.hg/strip-backup/9e48deeea8af-amend-backup.hg b/.hg/strip-backup/9e48deeea8af-amend-backup.hg
new file mode 100644
index 0000000..64bb2ef
Binary files /dev/null and b/.hg/strip-backup/9e48deeea8af-amend-backup.hg differ
diff --git a/.hg/strip-backup/a29a2f488ee7-amend-backup.hg b/.hg/strip-backup/a29a2f488ee7-amend-backup.hg
new file mode 100644
index 0000000..83a23f6
Binary files /dev/null and b/.hg/strip-backup/a29a2f488ee7-amend-backup.hg differ
diff --git a/.hg/strip-backup/a95a3c2b5131-amend-backup.hg b/.hg/strip-backup/a95a3c2b5131-amend-backup.hg
new file mode 100644
index 0000000..13ba424
Binary files /dev/null and b/.hg/strip-backup/a95a3c2b5131-amend-backup.hg differ
diff --git a/.hg/strip-backup/a9c335f06a1a-amend-backup.hg b/.hg/strip-backup/a9c335f06a1a-amend-backup.hg
new file mode 100644
index 0000000..35a27a3
Binary files /dev/null and b/.hg/strip-backup/a9c335f06a1a-amend-backup.hg differ
diff --git a/.hg/strip-backup/c4d53ff7e5ba-amend-backup.hg b/.hg/strip-backup/c4d53ff7e5ba-amend-backup.hg
new file mode 100644
index 0000000..0870d89
Binary files /dev/null and b/.hg/strip-backup/c4d53ff7e5ba-amend-backup.hg differ
diff --git a/.hg/strip-backup/ccf43c735898-amend-backup.hg b/.hg/strip-backup/ccf43c735898-amend-backup.hg
new file mode 100644
index 0000000..4ce766e
Binary files /dev/null and b/.hg/strip-backup/ccf43c735898-amend-backup.hg differ
diff --git a/.hg/strip-backup/d1262b768bcd-amend-backup.hg b/.hg/strip-backup/d1262b768bcd-amend-backup.hg
new file mode 100644
index 0000000..6bb9776
Binary files /dev/null and b/.hg/strip-backup/d1262b768bcd-amend-backup.hg differ
diff --git a/.hg/strip-backup/d64801f027e8-amend-backup.hg b/.hg/strip-backup/d64801f027e8-amend-backup.hg
new file mode 100644
index 0000000..e9140af
Binary files /dev/null and b/.hg/strip-backup/d64801f027e8-amend-backup.hg differ
diff --git a/.hg/strip-backup/ddafd5824cd1-amend-backup.hg b/.hg/strip-backup/ddafd5824cd1-amend-backup.hg
new file mode 100644
index 0000000..2be2527
Binary files /dev/null and b/.hg/strip-backup/ddafd5824cd1-amend-backup.hg differ
diff --git a/.hg/strip-backup/e9bd49cb6174-amend-backup.hg b/.hg/strip-backup/e9bd49cb6174-amend-backup.hg
new file mode 100644
index 0000000..aa750ab
Binary files /dev/null and b/.hg/strip-backup/e9bd49cb6174-amend-backup.hg differ
diff --git a/.hg/strip-backup/ee7c8b1a072e-amend-backup.hg b/.hg/strip-backup/ee7c8b1a072e-amend-backup.hg
new file mode 100644
index 0000000..f6fa45c
Binary files /dev/null and b/.hg/strip-backup/ee7c8b1a072e-amend-backup.hg differ
diff --git a/.hg/strip-backup/efe0aa4113af-amend-backup.hg b/.hg/strip-backup/efe0aa4113af-amend-backup.hg
new file mode 100644
index 0000000..98ba2a7
Binary files /dev/null and b/.hg/strip-backup/efe0aa4113af-amend-backup.hg differ
diff --git a/.hg/undo.bookmarks b/.hg/undo.bookmarks
new file mode 100644
index 0000000..e69de29
diff --git a/.hg/undo.branch b/.hg/undo.branch
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/.hg/undo.branch
@@ -0,0 +1 @@
+default
\ No newline at end of file
diff --git a/.hg/undo.desc b/.hg/undo.desc
new file mode 100644
index 0000000..b728fa0
--- /dev/null
+++ b/.hg/undo.desc
@@ -0,0 +1,3 @@
+798
+push-response
+https://kiozen@bitbucket.org/maproom/qmapshack
diff --git a/.hg/undo.dirstate b/.hg/undo.dirstate
new file mode 100644
index 0000000..812d128
Binary files /dev/null and b/.hg/undo.dirstate differ
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a63ad3a..95b1823 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,8 +19,8 @@ endif(WIN32)
 
 set(APPLICATION_NAME qmapshack)
 
-set(APPLICATION_VERSION_MAJOR "0")
-set(APPLICATION_VERSION_MINOR "12")
+set(APPLICATION_VERSION_MAJOR "1")
+set(APPLICATION_VERSION_MINOR "0")
 set(APPLICATION_VERSION_PATCH "0")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
index 6d3505a..9b29bd5 100644
--- a/CMakeLists.txt.user
+++ b/CMakeLists.txt.user
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.3.0, 2015-01-25T10:33:00. -->
+<!-- Written by QtCreator 3.2.2, 2015-03-07T12:00:05. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -58,12 +58,12 @@
  <data>
   <variable>ProjectExplorer.Project.Target.0</variable>
   <valuemap type="QVariantMap">
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.3.2</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.3.2</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{2f92db73-2408-4a53-964e-2415f5ea1157}</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.4 in Pfad (System)</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 4.8.4 in Pfad (System)</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b3896d75-6773-49ab-b85b-a90805c4269a}</value>
    <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
    <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
     <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
     <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/oeichler/Code/cpp/build_QMapShack</value>
@@ -72,7 +72,6 @@
       <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">-j8</value>
       <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
       <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
-      <value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
       <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
       <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -88,7 +87,6 @@
       <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
       <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
       <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
-      <value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
       <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
       <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -156,61 +154,10 @@
      <value type="int">13</value>
      <value type="int">14</value>
     </valuelist>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qlgt2qms</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
-    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
-    <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qlgt2qms (deaktiviert)</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qlgt2qms</value>
-    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
     <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qmapshack</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"> -d</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments">-d</value>
     <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory">/home/oeichler/Code/cpp/build_QMapShack</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory">/home/oeichler/Code/cpp/build_QMapShack/</value>
     <value type="int" key="PE.EnvironmentAspect.Base">2</value>
     <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmapshack</value>
@@ -223,7 +170,7 @@
     <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
    </valuemap>
-   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
   </valuemap>
  </data>
  <data>
@@ -232,10 +179,10 @@
  </data>
  <data>
   <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">18</value>
+  <value type="int">16</value>
  </data>
  <data>
   <variable>Version</variable>
-  <value type="int">18</value>
+  <value type="int">16</value>
  </data>
 </qtcreator>
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user.18
similarity index 99%
copy from CMakeLists.txt.user
copy to CMakeLists.txt.user.18
index 6d3505a..e4b3405 100644
--- a/CMakeLists.txt.user
+++ b/CMakeLists.txt.user.18
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.3.0, 2015-01-25T10:33:00. -->
+<!-- Written by QtCreator 3.3.0, 2015-02-06T19:12:10. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
diff --git a/CPackConfig.cmake b/CPackConfig.cmake
index a390d69..b03b04b 100644
--- a/CPackConfig.cmake
+++ b/CPackConfig.cmake
@@ -18,7 +18,7 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSI
 
 ### source package settings
 set(CPACK_SOURCE_GENERATOR "TGZ")
-set(CPACK_SOURCE_IGNORE_FILES "~$;[.]swp$;/[.]svn/;/[.]hg/;/[.]git/;.gitignore;/build/;tags;cscope.*")
+set(CPACK_SOURCE_IGNORE_FILES "~$;[.]swp$;/[.]svn/;/[.]git/;.gitignore;/build/;tags;cscope.*;[.]rej$;[.]orig$;svn-commit[.]")
 set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
 
 include(CPack)
diff --git a/changelog.txt b/changelog.txt
index fcde124..9ce9073 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,19 @@
+V 1.0.0
+* Update Czech, French, German and Spanish translation
+* Fix dialogs hiding behind main window
+* Fix various application crashes
+* Fix tile cache growing too large
+* Fix cliff polylines in Garmin maps
+* Add device support on Windows
+* Various little GUI optimizations
+
+V 1.0.beta1
+* Add support for TwoNav units
+* Load/Restore images attached to waypoints on devices
+* Add spoiler download to geocaches.
+* Add group update for projects on devices.
+* GUI cleanup and little fixes
+
 V 0.12.0
 * Fix: Workspace is not saved on Windows.
 * Fix: Bad track color names
diff --git a/features.txt b/features.txt
new file mode 100644
index 0000000..1fe3575
--- /dev/null
+++ b/features.txt
@@ -0,0 +1,38 @@
+Maps:
+* Garmin vector maps and *.jnx raster maps
+* Raster maps supported by GDAL
+* Online maps (TMS and WTMS (partially))
+* Display multiple maps in one view
+* Reproject maps on-the-fly to view's projection
+* Digital elevation model independent from maps
+* Hillshading and slope coloring
+
+GIS Data:
+* 100% project oriented data handling
+* Summarize project by a diary
+* Support for tracks, waypoints and areas
+* Simple geocache support
+* Store projects in a database
+* Support for multiple databases
+
+Planning:
+* Undo/redo history for all items
+* Track point edit mode to create/change tracks
+* Cut/copy/combine/reverse tracks
+* Various filter to enhance tracks
+
+GPS Devices:
+* Support for newer Garmin devices
+* Support for TwoNav devices
+* Project oriented data organization on devices
+* Synchronize your project with several devices attached 
+
+System:
+* License GPL3+
+* Runs on all *nix systems as well as on Windows
+  Probably on OS X, too, but so far no one volunteers to 
+  maintain a binary.
+* GUI has been translated to Czech, French, German and Spanish
+* Wiki dokumentation is English 
+* Needs Qt5, GDAL, Proj4 installed
+* For device support on Linux DBus and UDisk2 must be installed
diff --git a/qmapshack.desktop b/qmapshack.desktop
index 56dc9d1..155e082 100644
--- a/qmapshack.desktop
+++ b/qmapshack.desktop
@@ -1,7 +1,7 @@
 [Desktop Entry]
 Version=1.0
 Name=QMapShack
-Exec=qmapshack
+Exec=qmapshack %F
 Icon=QMapShack
 Terminal=false
 Type=Application
@@ -10,4 +10,4 @@ Categories=Qt;Utility;Geography;
 GenericName=GPS device mapping utility
 Keywords=map;GPS;geocaching;waypoints;tracks;
 MimeType=application/x-gpx;
-StartupNotify=true
\ No newline at end of file
+StartupNotify=true
diff --git a/src/CMainWindow.cpp b/src/CMainWindow.cpp
index 7fc456f..b269a1d 100644
--- a/src/CMainWindow.cpp
+++ b/src/CMainWindow.cpp
@@ -1,580 +1,671 @@
-/**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-**********************************************************************************************/
-
-#include "CAbout.h"
-#include "CMainWindow.h"
-#include "GeoMath.h"
-#include "canvas/CCanvas.h"
-#include "config.h"
-#include "dem/CDemDraw.h"
-#include "dem/CDemList.h"
-#include "gis/CGisWidget.h"
-#include "gis/WptIcons.h"
-#include "gis/db/CSetupWorkspace.h"
-#include "helpers/CSettings.h"
-#include "map/CMapDraw.h"
-#include "map/CMapList.h"
-#include "qlgt/CImportDatabase.h"
-#include "units/CTimeZoneSetup.h"
-#include "units/CUnitsSetup.h"
-#include "units/IUnit.h"
-#include "version.h"
-
-#include <QtGui>
-#include <QtSql>
-#include <QtWidgets>
-
-CMainWindow * CMainWindow::pSelf = 0;
-
-CMainWindow::CMainWindow()
-{
-    SETTINGS;
-
-    pSelf = this;
-    setupUi(this);
-    setWindowTitle(WHAT_STR);
-
-    initWptIcons();
-
-    IUnit::self().setUnitType((IUnit::type_e)cfg.value("MainWindow/units",IUnit::eTypeMetric).toInt(), this);
-
-    gisWidget = new CGisWidget(menuProject, this);
-    dockGis->setWidget(gisWidget);
-
-    // start ---- restore window geometry -----
-    if ( cfg.contains("MainWindow/geometry"))
-    {
-        restoreGeometry(cfg.value("MainWindow/geometry").toByteArray());
-    }
-    else
-    {
-        setGeometry(0,0,800,600);
-    }
-
-    if ( cfg.contains("MainWindow/state"))
-    {
-        restoreState(cfg.value("MainWindow/state").toByteArray());
-    }
-    // end ---- restore window geometry -----
-
-
-    connect(actionAbout, SIGNAL(triggered()), this, SLOT(slotAbout()));
-    connect(actionHelp, SIGNAL(triggered()), this, SLOT(slotHelp()));
-    connect(actionAddMapView, SIGNAL(triggered()), this, SLOT(slotAddCanvas()));
-    connect(actionShowScale, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
-    connect(actionShowGrid, SIGNAL(changed()), this, SLOT(update()));
-    connect(actionPOIText, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
-    connect(actionMapToolTip, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
-    connect(actionNightDay, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
-    connect(actionSetupMapFont, SIGNAL(triggered()), this, SLOT(slotSetupMapFont()));
-    connect(actionSetupGrid, SIGNAL(triggered()), this, SLOT(slotSetupGrid()));
-    connect(actionSetupMapPaths, SIGNAL(triggered()), this, SLOT(slotSetupMapPath()));
-    connect(actionSetupDEMPaths, SIGNAL(triggered()), this, SLOT(slotSetupDemPath()));
-    connect(actionSetupMapView, SIGNAL(triggered()), this, SLOT(slotSetupMapView()));
-    connect(actionSetupTimeZone, SIGNAL(triggered()), this, SLOT(slotSetupTimeZone()));
-    connect(actionSetupUnits, SIGNAL(triggered()), this, SLOT(slotSetupUnits()));
-    connect(actionSetupWorkspace, SIGNAL(triggered()), this, SLOT(slotSetupWorkspace()));
-    connect(actionImportDatabase, SIGNAL(triggered()), this, SLOT(slotImportDatabase()));
-    connect(actionSaveGISData, SIGNAL(triggered()), gisWidget, SLOT(slotSaveAll()));
-    connect(actionLoadGISData, SIGNAL(triggered()), this, SLOT(slotLoadGISData()));
-    connect(tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(slotTabCloseRequest(int)));
-
-
-    connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentTabCanvas(int)));
-    connect(tabMaps, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentTabMaps(int)));
-    connect(tabDem, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentTabDem(int)));
-
-    cfg.beginGroup("Canvas");
-    CMapDraw::loadMapPath(cfg);
-    CDemDraw::loadDemPath(cfg);
-    int N = cfg.value("numberOfCanvas").toInt();
-    for(int i = 0; i < N; i++)
-    {
-        CCanvas * canvas = new CCanvas(tabWidget);
-        tabWidget->addTab(canvas, canvas->objectName());
-        connect(canvas, SIGNAL(sigMousePosition(QPointF,qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
-
-        cfg.beginGroup(QString("Canvas%1").arg(i));
-        canvas->loadConfig(cfg);
-        cfg.endGroup();
-    }
-    if(N == 0)
-    {
-        CCanvas * canvas = new CCanvas(tabWidget);
-        tabWidget->addTab(canvas, canvas->objectName());
-        connect(canvas, SIGNAL(sigMousePosition(QPointF, qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
-    }
-
-    actionShowScale->setChecked(cfg.value("isScaleVisible", true).toBool());
-    actionShowGrid->setChecked(cfg.value("isGridVisible", true).toBool());
-    actionPOIText->setChecked(cfg.value("POIText", true).toBool());
-    actionMapToolTip->setChecked(cfg.value("MapToolTip", true).toBool());
-    actionNightDay->setChecked(cfg.value("isNight", false).toBool());
-    actionFlipMouseWheel->setChecked(cfg.value("flipMouseWheel", false).toBool());
-    mapFont = cfg.value("mapFont", font()).value<QFont>();
-    tabWidget->setCurrentIndex(cfg.value("visibleCanvas",0).toInt());
-    cfg.endGroup(); // Canvas
-
-    QByteArray tz;
-    IUnit::tz_mode_e tzmode;
-    tz = cfg.value("Units/timezone", "UTC").toByteArray();
-    tzmode = (IUnit::tz_mode_e)cfg.value("Units/timezone/mode", IUnit::eTZUtc).toInt();
-    IUnit::setTimeZoneSetup(tzmode, tz);
-
-
-    QStatusBar * status = statusBar();
-    lblPosWGS84 = new QLabel(status);
-    status->addPermanentWidget(lblPosWGS84);
-
-    lblElevation = new QLabel(status);
-    status->addPermanentWidget(lblElevation);
-
-    lblPosGrid = new QLabel(status);
-    status->addPermanentWidget(lblPosGrid);
-
-    menuWindow->addAction(dockMaps->toggleViewAction());
-    menuWindow->addAction(dockDem->toggleViewAction());
-    menuWindow->addAction(dockGis->toggleViewAction());
-
-    loadGISData(qlOpts->arguments);
-}
-
-CMainWindow::~CMainWindow()
-{
-    int cnt = 0;
-
-    SETTINGS;
-    cfg.setValue("MainWindow/state", saveState());
-    cfg.setValue("MainWindow/geometry", saveGeometry());
-    cfg.setValue("MainWindow/units", IUnit::self().type);
-
-
-    cfg.beginGroup("Canvas");
-    QList<CCanvas*> allCanvas;
-    for(int i = 0; i < tabWidget->count(); i++)
-    {
-        CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-        if(canvas == 0)
-        {
-            continue;
-        }
-        cnt++;
-        cfg.beginGroup(QString("Canvas%1").arg(i));
-        canvas->saveConfig(cfg);
-        cfg.endGroup();
-
-        allCanvas << canvas;
-    }
-
-    cfg.setValue("visibleCanvas", tabWidget->currentIndex());
-    cfg.setValue("numberOfCanvas", cnt);
-    cfg.setValue("isScaleVisible", actionShowScale->isChecked());
-    cfg.setValue("isGridVisible", actionShowGrid->isChecked());
-    cfg.setValue("POIText", actionPOIText->isChecked());
-    cfg.setValue("MapToolTip", actionMapToolTip->isChecked());
-    cfg.setValue("isNight", actionNightDay->isChecked());
-    cfg.setValue("flipMouseWheel", actionFlipMouseWheel->isChecked());
-    cfg.setValue("mapFont", mapFont);
-    CMapDraw::saveMapPath(cfg);
-    CDemDraw::saveDemPath(cfg);
-    cfg.endGroup(); // Canvas
-
-    /*
-        Delete all canvas objects now to make sure they are destroyed before all
-        other objects. This allows children of the canvas to access central objects
-        like CGisWidget safely uppon their destruction. (e.g. CMouseRangeTrk to reset
-        it's track's draw mode by key)
-     */
-    qDeleteAll(allCanvas);
-
-    QByteArray tz;
-    IUnit::tz_mode_e tzmode;
-    IUnit::getTimeZoneSetup(tzmode, tz);
-
-    cfg.setValue("Units/timezone", tz);
-    cfg.setValue("Units/timezone/mode", tzmode);
-}
-
-bool CMainWindow::isScaleVisible()
-{
-    return actionShowScale->isChecked();
-}
-
-bool CMainWindow::isGridVisible()
-{
-    return actionShowGrid->isChecked();
-}
-
-bool CMainWindow::isNight()
-{
-    return actionNightDay->isChecked();
-}
-
-bool CMainWindow::isPOIText()
-{
-    return actionPOIText->isChecked();
-}
-
-bool CMainWindow::isMapToolTip()
-{
-    return actionMapToolTip->isChecked();
-}
-
-bool CMainWindow::flipMouseWheel()
-{
-    return actionFlipMouseWheel->isChecked();
-}
-
-void CMainWindow::addMapList(CMapList * list, const QString &name)
-{
-    tabMaps->addTab(list,name);
-}
-
-void CMainWindow::addDemList(CDemList * list, const QString &name)
-{
-    tabDem->addTab(list,name);
-}
-
-void CMainWindow::addWidgetToTab(QWidget * w)
-{
-    if(tabWidget->indexOf(w) == -1)
-    {
-        tabWidget->addTab(w, w->objectName());
-    }
-    tabWidget->setCurrentWidget(w);
-}
-
-CCanvas * CMainWindow::getVisibleCanvas()
-{
-    return dynamic_cast<CCanvas*>(tabWidget->currentWidget());
-}
-
-void CMainWindow::zoomCanvasTo(const QRectF rect)
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->zoomTo(rect);
-    }
-}
-
-qreal CMainWindow::getEelevationAt(const QPointF& pos)
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        return canvas->getElevationAt(pos);
-    }
-    return NOFLOAT;
-}
-
-void CMainWindow::getEelevationAt(const QPolygonF &pos, QPolygonF& ele)
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->getElevationAt(pos, ele);
-    }
-    else
-    {
-        for(int i = 0; i < tabWidget->count(); i++)
-        {
-            canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-            if(canvas)
-            {
-                canvas->getElevationAt(pos, ele);
-                return;
-            }
-        }
-        ele.clear();
-    }
-}
-
-void CMainWindow::slotAbout()
-{
-    CAbout dlg(this);
-    dlg.exec();
-}
-
-void CMainWindow::slotHelp()
-{
-    QDesktopServices::openUrl(QUrl("https://bitbucket.org/maproom/qmapshack/wiki/DocMain"));
-}
-
-
-void CMainWindow::slotAddCanvas()
-{
-    int i, cnt = 0;
-    for(i = 0; i < tabWidget->count(); i++)
-    {
-        CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-        if(canvas == 0)
-        {
-            continue;
-        }
-        cnt++;
-    }
-
-    CCanvas * canvas = new CCanvas(tabWidget);
-    tabWidget->addTab(canvas, canvas->objectName());
-    connect(canvas, SIGNAL(sigMousePosition(QPointF, qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
-
-    SETTINGS;
-    cfg.beginGroup(QString("Canvas%1").arg(cnt));
-    canvas->loadConfig(cfg);
-    cfg.endGroup();
-
-    tabWidget->setCurrentWidget(canvas);
-}
-
-void CMainWindow::slotTabCloseRequest(int i)
-{
-    QWidget * w = tabWidget->widget(i);
-    tabWidget->removeTab(i);
-    delete w;
-}
-
-void CMainWindow::slotCurrentTabCanvas(int i)
-{
-    QString name = tabWidget->tabText(i);
-    for(int n = 0; n < tabMaps->count(); n++)
-    {
-        if(tabMaps->tabText(n) == name)
-        {
-            tabMaps->setCurrentIndex(n);
-            break;
-        }
-    }
-    for(int n = 0; n < tabDem->count(); n++)
-    {
-        if(tabDem->tabText(n) == name)
-        {
-            tabDem->setCurrentIndex(n);
-            break;
-        }
-    }
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
-    }
-}
-
-void CMainWindow::slotCurrentTabMaps(int i)
-{
-    QString name = tabMaps->tabText(i);
-    for(int n = 0; n < tabWidget->count(); n++)
-    {
-        if(tabWidget->tabText(n) == name)
-        {
-            tabWidget->setCurrentIndex(n);
-            break;
-        }
-    }
-    for(int n = 0; n < tabDem->count(); n++)
-    {
-        if(tabDem->tabText(n) == name)
-        {
-            tabDem->setCurrentIndex(n);
-            break;
-        }
-    }
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
-    }
-}
-
-void CMainWindow::slotCurrentTabDem(int i)
-{
-    QString name = tabMaps->tabText(i);
-    for(int n = 0; n < tabWidget->count(); n++)
-    {
-        if(tabWidget->tabText(n) == name)
-        {
-            tabWidget->setCurrentIndex(n);
-            break;
-        }
-    }
-    for(int n = 0; n < tabMaps->count(); n++)
-    {
-        if(tabMaps->tabText(n) == name)
-        {
-            tabMaps->setCurrentIndex(n);
-            break;
-        }
-    }
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
-    }
-}
-
-void CMainWindow::slotMousePosition(const QPointF& pos, qreal ele)
-{
-    QString str;
-    GPS_Math_Deg_To_Str(pos.x(), pos.y(), str);
-    lblPosWGS84->setText(str);
-
-    if(ele != NOFLOAT)
-    {
-        QString val, unit;
-        IUnit::self().meter2elevation(ele, val, unit);
-        lblElevation->setText(tr("Ele: %1%2").arg(val).arg(unit));
-        lblElevation->show();
-    }
-    else
-    {
-        lblElevation->hide();
-    }
-
-    if(actionShowGrid->isChecked())
-    {
-        CCanvas * canvas = getVisibleCanvas();
-        if(canvas)
-        {
-            QString str;
-            lblPosGrid->show();
-            canvas->convertGridPos2Str(pos, str);
-            lblPosGrid->setText(str);
-        }
-    }
-    else
-    {
-        lblPosGrid->hide();
-    }
-}
-
-void CMainWindow::slotUpdateCurrentWidget()
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
-        return;
-    }
-
-    QWidget * w = tabWidget->currentWidget();
-    if(w)
-    {
-        w->update();
-        return;
-    }
-}
-
-
-void CMainWindow::slotSetupMapFont()
-{
-    bool ok = false;
-    QFont f = QFontDialog::getFont(&ok, mapFont, this);
-    if(ok)
-    {
-        mapFont = f;
-        QWidget * w = tabWidget->currentWidget();
-        if(w)
-        {
-            w->update();
-        }
-    }
-}
-
-void CMainWindow::slotSetupGrid()
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas == 0)
-    {
-        return;
-    }
-    canvas->setupGrid();
-}
-
-void CMainWindow::slotSetupMapPath()
-{
-    CMapDraw::setupMapPath();
-}
-
-void CMainWindow::slotSetupDemPath()
-{
-    CDemDraw::setupDemPath();
-}
-
-void CMainWindow::slotSetupMapView()
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas == 0)
-    {
-        return;
-    }
-    canvas->setup();
-}
-
-void CMainWindow::slotSetupTimeZone()
-{
-    CTimeZoneSetup dlg(this);
-    dlg.exec();
-}
-
-void CMainWindow::slotSetupUnits()
-{
-    CUnitsSetup dlg(this);
-    dlg.exec();
-}
-
-void CMainWindow::slotSetupWorkspace()
-{
-    CSetupWorkspace dlg(this);
-    dlg.exec();
-}
-
-void CMainWindow::slotImportDatabase()
-{
-    CImportDatabase * widget = new CImportDatabase(this);
-    addWidgetToTab(widget);
-}
-
-void CMainWindow::slotLoadGISData()
-{
-    SETTINGS;
-    QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
-    QString filter = cfg.value("Paths/lastGisFilter", "GPS Exchange Format (*.gpx)").toString();
-
-
-    QStringList filenames = QFileDialog::getOpenFileNames(this, tr("Load GIS Data..."), path, "GPS Exchange Format (*.gpx);; QMapShack Binary (*.qms)", &filter);
-
-    if(filenames.isEmpty())
-    {
-        return;
-    }
-
-    loadGISData(filenames);
-
-    path = QFileInfo(filenames.first()).absolutePath();
-    cfg.setValue("Paths/lastGisPath", path);
-    cfg.setValue("Paths/lastGisFilter", filter);
-}
-
-void CMainWindow::loadGISData(const QStringList& filenames)
-{
-    foreach(const QString &filename, filenames)
-    {
-        gisWidget->loadGisProject(filename);
-    }
-}
-
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CAbout.h"
+#include "CMainWindow.h"
+#include "GeoMath.h"
+#include "canvas/CCanvas.h"
+#include "config.h"
+#include "dem/CDemDraw.h"
+#include "dem/CDemList.h"
+#include "gis/CGisWidget.h"
+#include "gis/WptIcons.h"
+#include "gis/db/CSetupWorkspace.h"
+#include "helpers/CSettings.h"
+#include "map/CMapDraw.h"
+#include "map/CMapList.h"
+#include "map/CMapVrtBuilder.h"
+#include "qlgt/CImportDatabase.h"
+#include "units/CTimeZoneSetup.h"
+#include "units/CUnitsSetup.h"
+#include "units/IUnit.h"
+#include "version.h"
+
+#include <QtGui>
+#include <QtSql>
+#include <QtWidgets>
+
+#ifdef WIN32
+#include "device/CDeviceWatcherWindows.h"
+#include <dbt.h>
+#include <guiddef.h>
+#include <initguid.h>
+#include <usbiodef.h>
+#include <windows.h>
+#endif // WIN32
+
+CMainWindow * CMainWindow::pSelf = 0;
+
+CMainWindow::CMainWindow()
+{
+    SETTINGS;
+
+    pSelf = this;
+    setupUi(this);
+    setWindowTitle(WHAT_STR);
+
+    initWptIcons();
+
+    IUnit::self().setUnitType((IUnit::type_e)cfg.value("MainWindow/units",IUnit::eTypeMetric).toInt(), this);
+
+    gisWidget = new CGisWidget(menuProject, this);
+    dockGis->setWidget(gisWidget);
+
+    // start ---- restore window geometry -----
+    if ( cfg.contains("MainWindow/geometry"))
+    {
+        restoreGeometry(cfg.value("MainWindow/geometry").toByteArray());
+    }
+    else
+    {
+        setGeometry(0,0,800,600);
+    }
+
+    if ( cfg.contains("MainWindow/state"))
+    {
+        restoreState(cfg.value("MainWindow/state").toByteArray());
+    }
+    // end ---- restore window geometry -----
+
+
+    connect(actionAbout, SIGNAL(triggered()), this, SLOT(slotAbout()));
+    connect(actionHelp, SIGNAL(triggered()), this, SLOT(slotHelp()));
+    connect(actionAddMapView, SIGNAL(triggered()), this, SLOT(slotAddCanvas()));
+    connect(actionShowScale, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
+    connect(actionShowGrid, SIGNAL(changed()), this, SLOT(update()));
+    connect(actionPOIText, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
+    connect(actionMapToolTip, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
+    connect(actionNightDay, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
+    connect(actionSetupMapFont, SIGNAL(triggered()), this, SLOT(slotSetupMapFont()));
+    connect(actionSetupGrid, SIGNAL(triggered()), this, SLOT(slotSetupGrid()));
+    connect(actionSetupMapPaths, SIGNAL(triggered()), this, SLOT(slotSetupMapPath()));
+    connect(actionSetupDEMPaths, SIGNAL(triggered()), this, SLOT(slotSetupDemPath()));
+    connect(actionSetupMapView, SIGNAL(triggered()), this, SLOT(slotSetupMapView()));
+    connect(actionSetupTimeZone, SIGNAL(triggered()), this, SLOT(slotSetupTimeZone()));
+    connect(actionSetupUnits, SIGNAL(triggered()), this, SLOT(slotSetupUnits()));
+    connect(actionSetupWorkspace, SIGNAL(triggered()), this, SLOT(slotSetupWorkspace()));
+    connect(actionImportDatabase, SIGNAL(triggered()), this, SLOT(slotImportDatabase()));
+    connect(actionSaveGISData, SIGNAL(triggered()), gisWidget, SLOT(slotSaveAll()));
+    connect(actionLoadGISData, SIGNAL(triggered()), this, SLOT(slotLoadGISData()));
+    connect(actionVrtBuilder, SIGNAL(triggered()), this, SLOT(slotBuildVrt()));
+    connect(tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(slotTabCloseRequest(int)));
+
+
+    connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentTabCanvas(int)));
+    connect(tabMaps, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentTabMaps(int)));
+    connect(tabDem, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentTabDem(int)));
+
+    cfg.beginGroup("Canvas");
+    CMapDraw::loadMapPath(cfg);
+    CDemDraw::loadDemPath(cfg);
+
+    cfg.beginGroup("Views");
+    QStringList names = cfg.childGroups();
+
+    foreach(const QString &name, names)
+    {
+        CCanvas * view = new CCanvas(tabWidget, name);
+        tabWidget->addTab(view, view->objectName());
+        connect(view, SIGNAL(sigMousePosition(QPointF,qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
+
+        cfg.beginGroup(name);
+        view->loadConfig(cfg);
+        cfg.endGroup(); // name
+    }
+    if(names.isEmpty())
+    {
+        CCanvas * view = new CCanvas(tabWidget,"");
+        tabWidget->addTab(view, view->objectName());
+        connect(view, SIGNAL(sigMousePosition(QPointF, qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
+    }
+    cfg.endGroup(); // Views
+
+    actionShowScale->setChecked(cfg.value("isScaleVisible", true).toBool());
+    actionShowGrid->setChecked(cfg.value("isGridVisible", true).toBool());
+    actionPOIText->setChecked(cfg.value("POIText", true).toBool());
+    actionMapToolTip->setChecked(cfg.value("MapToolTip", true).toBool());
+    actionNightDay->setChecked(cfg.value("isNight", false).toBool());
+    actionFlipMouseWheel->setChecked(cfg.value("flipMouseWheel", false).toBool());
+    mapFont = cfg.value("mapFont", font()).value<QFont>();
+    tabWidget->setCurrentIndex(cfg.value("visibleCanvas",0).toInt());
+    cfg.endGroup(); // Canvas
+
+    QByteArray tz;
+    IUnit::tz_mode_e tzmode;
+    tz = cfg.value("Units/timezone", "UTC").toByteArray();
+    tzmode = (IUnit::tz_mode_e)cfg.value("Units/timezone/mode", IUnit::eTZUtc).toInt();
+    IUnit::setTimeZoneSetup(tzmode, tz);
+
+
+    QStatusBar * status = statusBar();
+    lblPosWGS84 = new QLabel(status);
+    status->addPermanentWidget(lblPosWGS84);
+
+    lblElevation = new QLabel(status);
+    status->addPermanentWidget(lblElevation);
+
+    lblPosGrid = new QLabel(status);
+    status->addPermanentWidget(lblPosGrid);
+
+    menuWindow->addAction(dockMaps->toggleViewAction());
+    menuWindow->addAction(dockDem->toggleViewAction());
+    menuWindow->addAction(dockGis->toggleViewAction());
+
+    loadGISData(qlOpts->arguments);
+}
+
+CMainWindow::~CMainWindow()
+{
+    int cnt = 0;
+
+    SETTINGS;
+    cfg.setValue("MainWindow/state", saveState());
+    cfg.setValue("MainWindow/geometry", saveGeometry());
+    cfg.setValue("MainWindow/units", IUnit::self().type);
+
+
+    /*
+       The "Canvas" section will holf all settings global to all views
+       and "Views" section containing a subsection for each view.
+     */
+    cfg.beginGroup("Canvas");
+    QList<CCanvas*> allViews;
+
+    // save setup of all views
+    cfg.beginGroup("Views");
+    // remove all previous setups in this section first
+    cfg.remove("");
+
+    for(int i = 0; i < tabWidget->count(); i++)
+    {
+        CCanvas * view = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+        if(view == 0)
+        {
+            continue;
+        }
+        cnt++;
+        // save views
+        cfg.beginGroup(view->objectName());
+        view->saveConfig(cfg);
+        cfg.endGroup();
+
+        allViews << view;
+    }
+    cfg.endGroup(); // Views
+
+    cfg.setValue("visibleCanvas", tabWidget->currentIndex());
+    cfg.setValue("isScaleVisible", actionShowScale->isChecked());
+    cfg.setValue("isGridVisible", actionShowGrid->isChecked());
+    cfg.setValue("POIText", actionPOIText->isChecked());
+    cfg.setValue("MapToolTip", actionMapToolTip->isChecked());
+    cfg.setValue("isNight", actionNightDay->isChecked());
+    cfg.setValue("flipMouseWheel", actionFlipMouseWheel->isChecked());
+    cfg.setValue("mapFont", mapFont);
+    CMapDraw::saveMapPath(cfg);
+    CDemDraw::saveDemPath(cfg);
+    cfg.endGroup(); // Canvas
+
+    /*
+        Delete all canvas objects now to make sure they are destroyed before all
+        other objects. This allows children of the canvas to access central objects
+        like CGisWidget safely uppon their destruction. (e.g. CMouseRangeTrk to reset
+        it's track's draw mode by key)
+     */
+    qDeleteAll(allViews);
+
+    QByteArray tz;
+    IUnit::tz_mode_e tzmode;
+    IUnit::getTimeZoneSetup(tzmode, tz);
+
+    cfg.setValue("Units/timezone", tz);
+    cfg.setValue("Units/timezone/mode", tzmode);
+}
+
+bool CMainWindow::isScaleVisible()
+{
+    return actionShowScale->isChecked();
+}
+
+bool CMainWindow::isGridVisible()
+{
+    return actionShowGrid->isChecked();
+}
+
+bool CMainWindow::isNight()
+{
+    return actionNightDay->isChecked();
+}
+
+bool CMainWindow::isPOIText()
+{
+    return actionPOIText->isChecked();
+}
+
+bool CMainWindow::isMapToolTip()
+{
+    return actionMapToolTip->isChecked();
+}
+
+bool CMainWindow::flipMouseWheel()
+{
+    return actionFlipMouseWheel->isChecked();
+}
+
+void CMainWindow::addMapList(CMapList * list, const QString &name)
+{
+    tabMaps->addTab(list,name);
+}
+
+void CMainWindow::addDemList(CDemList * list, const QString &name)
+{
+    tabDem->addTab(list,name);
+}
+
+void CMainWindow::addWidgetToTab(QWidget * w)
+{
+    if(tabWidget->indexOf(w) == -1)
+    {
+        tabWidget->addTab(w, w->objectName());
+    }
+    tabWidget->setCurrentWidget(w);
+}
+
+CCanvas * CMainWindow::getVisibleCanvas()
+{
+    return dynamic_cast<CCanvas*>(tabWidget->currentWidget());
+}
+
+void CMainWindow::zoomCanvasTo(const QRectF rect)
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->zoomTo(rect);
+    }
+}
+
+qreal CMainWindow::getEelevationAt(const QPointF& pos)
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        return canvas->getElevationAt(pos);
+    }
+    return NOFLOAT;
+}
+
+void CMainWindow::getEelevationAt(const QPolygonF &pos, QPolygonF& ele)
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->getElevationAt(pos, ele);
+    }
+    else
+    {
+        for(int i = 0; i < tabWidget->count(); i++)
+        {
+            canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+            if(canvas)
+            {
+                canvas->getElevationAt(pos, ele);
+                return;
+            }
+        }
+        ele.clear();
+    }
+}
+
+void CMainWindow::slotAbout()
+{
+    CAbout dlg(this);
+    dlg.exec();
+}
+
+void CMainWindow::slotHelp()
+{
+    QDesktopServices::openUrl(QUrl("https://bitbucket.org/maproom/qmapshack/wiki/DocMain"));
+}
+
+
+void CMainWindow::slotAddCanvas()
+{
+    int i, cnt = 0;
+    for(i = 0; i < tabWidget->count(); i++)
+    {
+        CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+        if(canvas == 0)
+        {
+            continue;
+        }
+        cnt++;
+    }
+
+    CCanvas * canvas = new CCanvas(tabWidget,"");
+    tabWidget->addTab(canvas, canvas->objectName());
+    connect(canvas, SIGNAL(sigMousePosition(QPointF, qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
+
+    tabWidget->setCurrentWidget(canvas);
+}
+
+void CMainWindow::slotTabCloseRequest(int i)
+{
+    QWidget * w = tabWidget->widget(i);
+
+    delete w;
+}
+
+void CMainWindow::slotCurrentTabCanvas(int i)
+{
+    QString name = tabWidget->tabText(i);
+    for(int n = 0; n < tabMaps->count(); n++)
+    {
+        if(tabMaps->tabText(n) == name)
+        {
+            tabMaps->setCurrentIndex(n);
+            break;
+        }
+    }
+    for(int n = 0; n < tabDem->count(); n++)
+    {
+        if(tabDem->tabText(n) == name)
+        {
+            tabDem->setCurrentIndex(n);
+            break;
+        }
+    }
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+    }
+}
+
+void CMainWindow::slotCurrentTabMaps(int i)
+{
+    QString name = tabMaps->tabText(i);
+    for(int n = 0; n < tabWidget->count(); n++)
+    {
+        if(tabWidget->tabText(n) == name)
+        {
+            tabWidget->setCurrentIndex(n);
+            break;
+        }
+    }
+    for(int n = 0; n < tabDem->count(); n++)
+    {
+        if(tabDem->tabText(n) == name)
+        {
+            tabDem->setCurrentIndex(n);
+            break;
+        }
+    }
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+    }
+}
+
+void CMainWindow::slotCurrentTabDem(int i)
+{
+    QString name = tabMaps->tabText(i);
+    for(int n = 0; n < tabWidget->count(); n++)
+    {
+        if(tabWidget->tabText(n) == name)
+        {
+            tabWidget->setCurrentIndex(n);
+            break;
+        }
+    }
+    for(int n = 0; n < tabMaps->count(); n++)
+    {
+        if(tabMaps->tabText(n) == name)
+        {
+            tabMaps->setCurrentIndex(n);
+            break;
+        }
+    }
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+    }
+}
+
+void CMainWindow::slotMousePosition(const QPointF& pos, qreal ele)
+{
+    QString str;
+    GPS_Math_Deg_To_Str(pos.x(), pos.y(), str);
+    lblPosWGS84->setText(str);
+
+    if(ele != NOFLOAT)
+    {
+        QString val, unit;
+        IUnit::self().meter2elevation(ele, val, unit);
+        lblElevation->setText(tr("Ele: %1%2").arg(val).arg(unit));
+        lblElevation->show();
+    }
+    else
+    {
+        lblElevation->hide();
+    }
+
+    if(actionShowGrid->isChecked())
+    {
+        CCanvas * canvas = getVisibleCanvas();
+        if(canvas)
+        {
+            QString str;
+            lblPosGrid->show();
+            canvas->convertGridPos2Str(pos, str);
+            lblPosGrid->setText(str);
+        }
+    }
+    else
+    {
+        lblPosGrid->hide();
+    }
+}
+
+void CMainWindow::slotUpdateCurrentWidget()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
+        return;
+    }
+
+    QWidget * w = tabWidget->currentWidget();
+    if(w)
+    {
+        w->update();
+        return;
+    }
+}
+
+
+void CMainWindow::slotSetupMapFont()
+{
+    bool ok = false;
+    QFont f = QFontDialog::getFont(&ok, mapFont, this);
+    if(ok)
+    {
+        mapFont = f;
+        QWidget * w = tabWidget->currentWidget();
+        if(w)
+        {
+            w->update();
+        }
+    }
+}
+
+void CMainWindow::slotSetupGrid()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas == 0)
+    {
+        return;
+    }
+    canvas->setupGrid();
+}
+
+void CMainWindow::slotSetupMapPath()
+{
+    CMapDraw::setupMapPath();
+}
+
+void CMainWindow::slotSetupDemPath()
+{
+    CDemDraw::setupDemPath();
+}
+
+void CMainWindow::slotSetupMapView()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas == 0)
+    {
+        return;
+    }
+    canvas->setup();
+}
+
+void CMainWindow::slotSetupTimeZone()
+{
+    CTimeZoneSetup dlg(this);
+    dlg.exec();
+}
+
+void CMainWindow::slotSetupUnits()
+{
+    CUnitsSetup dlg(this);
+    dlg.exec();
+}
+
+void CMainWindow::slotSetupWorkspace()
+{
+    CSetupWorkspace dlg(this);
+    dlg.exec();
+}
+
+void CMainWindow::slotImportDatabase()
+{
+    CImportDatabase * widget = new CImportDatabase(this);
+    addWidgetToTab(widget);
+}
+
+void CMainWindow::slotBuildVrt()
+{
+    CMapVrtBuilder * widget = new CMapVrtBuilder(this);
+    addWidgetToTab(widget);
+}
+
+
+void CMainWindow::slotLoadGISData()
+{
+    SETTINGS;
+    QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
+    QString filter = cfg.value("Paths/lastGisFilter", "GPS Exchange Format (*.gpx)").toString();
+
+
+    QStringList filenames = QFileDialog::getOpenFileNames(this, tr("Load GIS Data..."), path, "GPS Exchange Format (*.gpx);; QMapShack Binary (*.qms)", &filter);
+
+    if(filenames.isEmpty())
+    {
+        return;
+    }
+
+    loadGISData(filenames);
+
+    path = QFileInfo(filenames.first()).absolutePath();
+    cfg.setValue("Paths/lastGisPath", path);
+    cfg.setValue("Paths/lastGisFilter", filter);
+}
+
+
+void CMainWindow::loadGISData(const QStringList& filenames)
+{
+    foreach(const QString &filename, filenames)
+    {
+        gisWidget->loadGisProject(filename);
+    }
+}
+
+#ifdef WIN32
+
+static void sendDeviceEvent(DWORD unitmask, bool add)
+{
+    for (char i = 0; i < 26; ++i)
+    {
+        if (unitmask & 0x1)
+        {
+            QString path = QString(i + 'A') + ":/";
+            qDebug() << "sendDeviceEvent" << path << add;
+            CEventDevice * event = new CEventDevice(path, add);
+            QCoreApplication::postEvent(CDeviceWatcherWindows::self(), event);
+            //qDebug() << "postEvent";
+        }
+        unitmask = unitmask >> 1;
+    }
+}
+
+
+bool CMainWindow::nativeEvent(const QByteArray & eventType, void * message, long * result)
+{
+    MSG* msg = (MSG*)message;
+    //qDebug() << "nativeEvent" << eventType << msg->message << msg->lParam << msg->wParam;
+
+    if (WM_DEVICECHANGE == msg->message)
+    {
+        //qDebug() << "WM_DEVICECHANGE";
+        PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR)msg->lParam;
+        switch (msg->wParam)
+        {
+        case DBT_DEVICEARRIVAL:
+        {
+            qDebug() << "DBT_DEVICEARRIVAL"<< pHdr->dbch_devicetype;
+            if (pHdr->dbch_devicetype == DBT_DEVTYP_VOLUME)
+            {
+                PDEV_BROADCAST_VOLUME pHdrv = (PDEV_BROADCAST_VOLUME)pHdr;
+                sendDeviceEvent(pHdrv->dbcv_unitmask, true);
+            }
+            break;
+        }
+
+        case  DBT_DEVICEREMOVECOMPLETE:
+        {
+            qDebug() << "DBT_DEVICEREMOVECOMPLETE" << pHdr->dbch_devicetype;
+            if (pHdr->dbch_devicetype == DBT_DEVTYP_VOLUME)
+            {
+                PDEV_BROADCAST_VOLUME pHdrv = (PDEV_BROADCAST_VOLUME)pHdr;
+                sendDeviceEvent(pHdrv->dbcv_unitmask, false);
+            }
+            break;
+        }
+
+        default:
+        {
+            break;
+        }
+        }
+    }
+
+    return QWidget::nativeEvent(eventType, message, result);
+}
+#endif // WIN32
\ No newline at end of file
diff --git a/src/CMainWindow.h b/src/CMainWindow.h
index 2fd675a..4527b7e 100644
--- a/src/CMainWindow.h
+++ b/src/CMainWindow.h
@@ -67,6 +67,10 @@ public:
      */
     CCanvas * getVisibleCanvas();
 
+#ifdef WIN32
+protected:
+    bool CMainWindow::nativeEvent(const QByteArray & eventType, void * message, long * result);
+#endif // WIN32
 
 private slots:
     void slotAbout();
@@ -88,6 +92,7 @@ private slots:
     void slotSetupWorkspace();
     void slotImportDatabase();
     void slotLoadGISData();
+    void slotBuildVrt();
 
 private:
     friend int main(int argc, char ** argv);
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 08c814c..8fa0edf 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -49,6 +49,7 @@ set( SRCS
     dem/CDemItem.cpp
     dem/CDemPathSetup.cpp
     dem/CDemPropSetup.cpp
+    map/CMapVrtBuilder.cpp
     map/IMap.cpp
     map/CMapDraw.cpp
     map/CMapItem.cpp
@@ -108,6 +109,8 @@ set( SRCS
     gis/gpx/serialization.cpp
     gis/qms/CQmsProject.cpp
     gis/qms/serialization.cpp
+    gis/tnv/CTwoNavProject.cpp
+    gis/tnv/serialization.cpp
     gis/db/IDB.cpp
     gis/db/CSetupDatabase.cpp
     gis/db/CSetupWorkspace.cpp
@@ -221,6 +224,7 @@ set( HDRS
     dem/CDemItem.h
     dem/CDemPathSetup.h
     dem/CDemPropSetup.h
+    map/CMapVrtBuilder.h
     map/IMap.h
     map/IMapProp.h
     map/CMapDraw.h
@@ -278,7 +282,8 @@ set( HDRS
     gis/CGisWidget.h
     gis/CGisListDB.h
     gis/CGisListWks.h
-    gis/qms/CQmsProject.cpp
+    gis/qms/CQmsProject.h
+    gis/tnv/CTwoNavProject.h
     gis/db/IDB.cpp
     gis/db/macros.h
     gis/db/CSetupDatabase.h
@@ -377,6 +382,7 @@ set( UIS
     map/IMapList.ui
     map/IMapPathSetup.ui
     map/IMapPropSetup.ui
+    map/IMapVrtBuilder.ui
     grid/IGridSetup.ui
     grid/IProjWizard.ui
     mouse/IScrOptPoint.ui
diff --git a/src/GeoMath.cpp b/src/GeoMath.cpp
index 7e0ed16..dcba192 100644
--- a/src/GeoMath.cpp
+++ b/src/GeoMath.cpp
@@ -81,26 +81,91 @@ void GPS_Math_Deg_To_Str(const qreal& x, const qreal& y, QString& str)
 }
 
 
+static QRegExp reCoord1("^\\s*([N|S]){1}\\W*([0-9]+)\\W*([0-9]+\\.[0-9]+)\\s+([E|W|O]){1}\\W*([0-9]+)\\W*([0-9]+\\.[0-9]+)\\s*$");
+
+static QRegExp reCoord2("^\\s*([N|S]){1}\\s*([0-9]+\\.[0-9]+)\\W*\\s+([E|W|O]){1}\\s*([0-9]+\\.[0-9]+)\\W*\\s*$");
+
+static QRegExp reCoord3("^\\s*([-0-9]+\\.[0-9]+)\\s+([-0-9]+\\.[0-9]+)\\s*$");
+
+static QRegExp reCoord4("^\\s*([N|S]){1}\\s*([0-9]+)\\W+([0-9]+)\\W+([0-9]+)\\W*([E|W|O]){1}\\W*([0-9]+)\\W+([0-9]+)\\W+([0-9]+)\\W*\\s*$");
+
+static QRegExp reCoord5("^\\s*([-0-9]+\\.[0-9]+)([N|S])\\s+([-0-9]+\\.[0-9]+)([W|E])\\s*$");
+
+
 bool GPS_Math_Str_To_Deg(const QString& str, qreal& lon, qreal& lat)
 {
-    QRegExp re("^\\s*([N|S]){1}\\W*([0-9]+)\\W*([0-9]+\\.[0-9]+)\\s+([E|W]){1}\\W*([0-9]+)\\W*([0-9]+\\.[0-9]+)\\s*$");
-    if(!re.exactMatch(str))
+    if(reCoord2.exactMatch(str))
     {
-        QMessageBox::warning(0,QObject::tr("Error"),QObject::tr("Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss"),QMessageBox::Abort,QMessageBox::Abort);
-        return false;
+        bool signLat    = reCoord2.cap(1) == "S";
+        float absLat    = reCoord2.cap(2).toDouble();
+        lat = signLat ? -absLat : absLat;
+
+        bool signLon    = reCoord2.cap(3) == "W";
+        float absLon    = reCoord2.cap(4).toDouble();
+        lon = signLon ? -absLon : absLon;
+    }
+    else if(reCoord1.exactMatch(str))
+    {
+        bool signLat    = reCoord1.cap(1) == "S";
+        int degLat      = reCoord1.cap(2).toInt();
+        float minLat    = reCoord1.cap(3).toDouble();
+
+        GPS_Math_DegMin_To_Deg(signLat, degLat, minLat, lat);
+
+        bool signLon    = reCoord1.cap(4) == "W";
+        int degLon      = reCoord1.cap(5).toInt();
+        float minLon    = reCoord1.cap(6).toDouble();
+
+        GPS_Math_DegMin_To_Deg(signLon, degLon, minLon, lon);
+    }
+    else if(reCoord3.exactMatch(str))
+    {
+        lat             = reCoord3.cap(1).toDouble();
+        lon             = reCoord3.cap(2).toDouble();
     }
+    else if(reCoord4.exactMatch(str))
+    {
+        bool signLat    = reCoord4.cap(1) == "S";
+        int degLat    = reCoord4.cap(2).toInt();
+        int minLat    = reCoord4.cap(3).toInt();
+        int secLat    = reCoord4.cap(4).toInt();
 
-    bool signLat    = re.cap(1) == "S";
-    qint32 degLat      = re.cap(2).toInt();
-    qreal minLat   = re.cap(3).toDouble();
+        GPS_Math_DegMinSec_To_Deg(signLat, degLat, minLat, secLat, lat);
 
-    GPS_Math_DegMin_To_Deg(signLat, degLat, minLat, lat);
+        bool signLon    = reCoord4.cap(5) == "W";
+        int degLon    = reCoord4.cap(6).toInt();
+        int minLon    = reCoord4.cap(7).toInt();
+        int secLon    = reCoord4.cap(8).toInt();
 
-    bool signLon    = re.cap(4) == "W";
-    qint32 degLon      = re.cap(5).toInt();
-    qreal minLon   = re.cap(6).toDouble();
+        GPS_Math_DegMinSec_To_Deg(signLon, degLon, minLon, secLon, lon);
+    }
+    else if(reCoord5.exactMatch(str))
+    {
+        bool signLon    = reCoord4.cap(4) == "W";
+        bool signLat    = reCoord4.cap(2) == "S";
+        lat             = reCoord5.cap(1).toDouble();
+        lon             = reCoord5.cap(3).toDouble();
 
-    GPS_Math_DegMin_To_Deg(signLon, degLon, minLon, lon);
+        if(signLon)
+        {
+            lon = -lon;
+        }
+        if(signLat)
+        {
+            lat = -lat;
+        }
+    }
+    else
+    {
+        QMessageBox::warning(0,QObject::tr("Error"),QObject::tr("Bad position format. Must be: \"[N|S] ddd mm.sss [W|E] ddd mm.sss\" or \"[N|S] ddd.ddd [W|E] ddd.ddd\""),QMessageBox::Ok,QMessageBox::NoButton);
+        return false;
+    }
+
+    if(fabs(lon) > 180.0 || fabs(lat) > 90.0)
+    {
+        QMessageBox::warning(0,QObject::tr("Error"),QObject::tr("Position values out of bounds. "),QMessageBox::Ok,QMessageBox::NoButton);
+        return false;
+    }
 
     return true;
 }
diff --git a/src/IMainWindow.ui b/src/IMainWindow.ui
index 15466d7..a172c7b 100644
--- a/src/IMainWindow.ui
+++ b/src/IMainWindow.ui
@@ -111,6 +111,7 @@
      <string>Tool</string>
     </property>
     <addaction name="actionImportDatabase"/>
+    <addaction name="actionVrtBuilder"/>
    </widget>
    <addaction name="menuFile"/>
    <addaction name="menuProject"/>
@@ -469,6 +470,18 @@
     <string>Import QLandkarte GT database</string>
    </property>
   </action>
+  <action name="actionVrtBuilder">
+   <property name="icon">
+    <iconset resource="resources.qrc">
+     <normaloff>:/icons/32x32/VrtBuilder.png</normaloff>:/icons/32x32/VrtBuilder.png</iconset>
+   </property>
+   <property name="text">
+    <string>VRT Builder</string>
+   </property>
+   <property name="toolTip">
+    <string>GUI front end to gdalbuildvrt</string>
+   </property>
+  </action>
  </widget>
  <resources>
   <include location="resources.qrc"/>
diff --git a/src/canvas/CCanvas.cpp b/src/canvas/CCanvas.cpp
index 85d0dae..4085713 100644
--- a/src/canvas/CCanvas.cpp
+++ b/src/canvas/CCanvas.cpp
@@ -46,23 +46,30 @@ QBrush CCanvas::brushBackWhite(QColor(255,255,255,255));
 QBrush CCanvas::brushBackYellow(QColor(0xff, 0xff, 0xcc, 0xE0));
 
 
-CCanvas::CCanvas(QWidget *parent)
+CCanvas::CCanvas(QWidget *parent, const QString &name)
     : QWidget(parent)
     , posFocus(12.00 * DEG_TO_RAD, 49.00 * DEG_TO_RAD)
     , plotTrackProfile(0)
 {
     setFocusPolicy(Qt::WheelFocus);
 
-    int count = 1;
-    while(1)
+    if(name.isEmpty())
     {
-        QString name = tr("View %1").arg(count);
-        if(CMainWindow::self().findChild<CCanvas*>(name) == 0)
+        int count = 1;
+        while(1)
         {
-            setObjectName(name);
-            break;
+            QString name = tr("View %1").arg(count);
+            if(CMainWindow::self().findChild<CCanvas*>(name) == 0)
+            {
+                setObjectName(name);
+                break;
+            }
+            count++;
         }
-        count++;
+    }
+    else
+    {
+        setObjectName(name);
     }
 
     setMouseTracking(true);
diff --git a/src/canvas/CCanvas.h b/src/canvas/CCanvas.h
index cd74e2d..e6428d9 100644
--- a/src/canvas/CCanvas.h
+++ b/src/canvas/CCanvas.h
@@ -61,7 +61,7 @@ class CCanvas : public QWidget
 {
     Q_OBJECT
 public:
-    CCanvas(QWidget * parent);
+    CCanvas(QWidget * parent, const QString& name);
     virtual ~CCanvas();
 
     void saveConfig(QSettings& cfg);
diff --git a/src/canvas/IDrawObject.cpp b/src/canvas/IDrawObject.cpp
index a5a9f18..4eccb2c 100644
--- a/src/canvas/IDrawObject.cpp
+++ b/src/canvas/IDrawObject.cpp
@@ -26,12 +26,6 @@ IDrawObject::IDrawObject(QObject *parent)
     , opacity(100)
     , minScale(NOFLOAT)
     , maxScale(NOFLOAT)
-    , showPolygons(true)
-    , showPolylines(true)
-    , showPOIs(true)
-    , cachePath(QDir::home().absoluteFilePath(".QMapShack"))
-    , cacheSizeMB(100)
-    , cacheExpiration(8)
 {
 }
 
@@ -44,12 +38,6 @@ void IDrawObject::saveConfig(QSettings& cfg)
     cfg.setValue("opacity", getOpacity());
     cfg.setValue("minScale", getMinScale());
     cfg.setValue("maxScale", getMaxScale());
-    cfg.setValue("showPolygons", getShowPolygons());
-    cfg.setValue("showPolylines", getShowPolylines());
-    cfg.setValue("showPOIs", getShowPOIs());
-    cfg.setValue("cachePath", cachePath);
-    cfg.setValue("cacheSizeMB", cacheSizeMB);
-    cfg.setValue("cacheExpiration", cacheExpiration);
 }
 
 void IDrawObject::loadConfig(QSettings& cfg)
@@ -57,12 +45,6 @@ void IDrawObject::loadConfig(QSettings& cfg)
     slotSetOpacity(cfg.value("opacity", getOpacity()).toDouble());
     setMinScale(cfg.value("minScale", getMinScale()).toDouble());
     setMaxScale(cfg.value("maxScale", getMaxScale()).toDouble());
-    slotSetShowPolygons(cfg.value("showPolygons", getShowPolygons()).toBool());
-    slotSetShowPolylines(cfg.value("showPolylines", getShowPolylines()).toBool());
-    slotSetShowPOIs(cfg.value("showPOIs", getShowPOIs()).toBool());
-    slotSetCachePath(cfg.value("cachePath", getCachePath()).toString());
-    slotSetCacheSize(cfg.value("cacheSizeMB", getCacheSize()).toInt());
-    slotSetCacheExpiration(cfg.value("cacheExpiration", getCacheExpiration()).toInt());
 
     emit sigPropertiesChanged();
 }
diff --git a/src/canvas/IDrawObject.h b/src/canvas/IDrawObject.h
index 1ef9adc..a220ec5 100644
--- a/src/canvas/IDrawObject.h
+++ b/src/canvas/IDrawObject.h
@@ -71,35 +71,6 @@ public:
      */
     void setMaxScale(qreal s);
 
-    bool getShowPolygons()
-    {
-        return showPolygons;
-    }
-
-    bool getShowPolylines()
-    {
-        return showPolylines;
-    }
-
-    bool getShowPOIs()
-    {
-        return showPOIs;
-    }
-
-    const QString& getCachePath()
-    {
-        return cachePath;
-    }
-
-    qint32 getCacheSize()
-    {
-        return cacheSizeMB;
-    }
-
-    qint32 getCacheExpiration()
-    {
-        return cacheExpiration;
-    }
 
     /**
        @brief Get QListWidgetItems to enable/disable map layers.
@@ -129,31 +100,6 @@ public slots:
         opacity = value;
     }
 
-    void slotSetShowPolygons(bool yes)
-    {
-        showPolygons = yes;
-    }
-    void slotSetShowPolylines(bool yes)
-    {
-        showPolylines = yes;
-    }
-    void slotSetShowPOIs(bool yes)
-    {
-        showPOIs = yes;
-    }
-
-    void slotSetCachePath(const QString& path)
-    {
-        cachePath = path; configureCache();
-    }
-    void slotSetCacheSize(qint32 size)
-    {
-        cacheSizeMB = size; configureCache();
-    }
-    void slotSetCacheExpiration(qint32 days)
-    {
-        cacheExpiration = days; configureCache();
-    }
 
 signals:
     /**
@@ -187,19 +133,6 @@ private:
     qreal minScale;
     /// the maximum scale a map is visible
     qreal maxScale;
-    /// vector maps only: hide/show polygons
-    bool showPolygons;
-    /// vector maps only: hide/show polylines
-    bool showPolylines;
-    /// vector maps only: hide/show point of interest
-    bool showPOIs;
-
-    /// streaming map only: path to cached tiles
-    QString cachePath;
-    /// streaming map only: maximum size of all tiles in cache [MByte]
-    qint32 cacheSizeMB;
-    /// streaming map only: maximum age of tiles in cache [days]
-    qint32 cacheExpiration;
 };
 
 #endif //IDRAWOBJECT_H
diff --git a/src/dem/CDemPathSetup.cpp b/src/dem/CDemPathSetup.cpp
index 8ecaa82..e613a70 100644
--- a/src/dem/CDemPathSetup.cpp
+++ b/src/dem/CDemPathSetup.cpp
@@ -16,13 +16,15 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "dem/CDemDraw.h"
 #include "dem/CDemPathSetup.h"
 
 #include <QtWidgets>
 
 CDemPathSetup::CDemPathSetup(QStringList &paths)
-    : paths(paths)
+    : QDialog(&CMainWindow::self())
+    , paths(paths)
 {
     setupUi(this);
 
diff --git a/src/dem/CDemVRT.cpp b/src/dem/CDemVRT.cpp
index 0e32a47..7a67e71 100644
--- a/src/dem/CDemVRT.cpp
+++ b/src/dem/CDemVRT.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "GeoMath.h"
 #include "canvas/CCanvas.h"
 #include "dem/CDemDraw.h"
@@ -41,14 +42,14 @@ CDemVRT::CDemVRT(const QString &filename, CDemDraw *parent)
     dataset = (GDALDataset*)GDALOpen(filename.toUtf8(),GA_ReadOnly);
     if(dataset == 0)
     {
-        QMessageBox::warning(0, tr("Error..."), tr("Failed to load file: %1").arg(filename));
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Failed to load file: %1").arg(filename));
         return;
     }
 
     if(dataset->GetRasterCount() != 1)
     {
         delete dataset; dataset = 0;
-        QMessageBox::warning(0, tr("Error..."), tr("DEM must have one band with 16bit or 32bit data."));
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("DEM must have one band with 16bit or 32bit data."));
         return;
     }
 
@@ -57,7 +58,7 @@ CDemVRT::CDemVRT(const QString &filename, CDemDraw *parent)
     if(pBand == 0)
     {
         delete dataset; dataset = 0;
-        QMessageBox::warning(0, tr("Error..."), tr("DEM must have one band with 16bit or 32bit data."));
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("DEM must have one band with 16bit or 32bit data."));
         return;
     }
 
diff --git a/src/dem/IDemList.ui b/src/dem/IDemList.ui
index 2dbefe9..1641da1 100644
--- a/src/dem/IDemList.ui
+++ b/src/dem/IDemList.ui
@@ -56,19 +56,19 @@
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <property name="spacing">
-      <number>8</number>
+      <number>3</number>
      </property>
      <property name="leftMargin">
-      <number>8</number>
+      <number>3</number>
      </property>
      <property name="topMargin">
-      <number>8</number>
+      <number>3</number>
      </property>
      <property name="rightMargin">
-      <number>8</number>
+      <number>3</number>
      </property>
      <property name="bottomMargin">
-      <number>8</number>
+      <number>3</number>
      </property>
      <item>
       <widget class="QLabel" name="labelIcon">
diff --git a/src/dem/IDemPropSetup.ui b/src/dem/IDemPropSetup.ui
index 2bbedff..508981a 100644
--- a/src/dem/IDemPropSetup.ui
+++ b/src/dem/IDemPropSetup.ui
@@ -109,6 +109,9 @@
    </item>
    <item>
     <layout class="QGridLayout" name="gridLayout_2">
+     <property name="spacing">
+      <number>3</number>
+     </property>
      <item row="0" column="0">
       <widget class="QCheckBox" name="checkHillshading">
        <property name="text">
diff --git a/src/device/CDeviceGarmin.cpp b/src/device/CDeviceGarmin.cpp
index 95aecaf..ec53f30 100644
--- a/src/device/CDeviceGarmin.cpp
+++ b/src/device/CDeviceGarmin.cpp
@@ -19,12 +19,17 @@
 #include "device/CDeviceGarmin.h"
 #include "gis/CGisListWks.h"
 #include "gis/gpx/CGpxProject.h"
+#include "gis/wpt/CGisItemWpt.h"
 
 #include <QtWidgets>
 #include <QtXml>
 
 CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QString &model, QTreeWidget *parent)
     : IDevice(path, key, parent)
+    , pathGpx("Garmin/GPX")
+    , pathPictures("Garmin/JPEG")
+    , pathSpoilers("Garmin/GeocachePhotos")
+    , cntImages(0)
 {
     setText(CGisListWks::eColumnName, "Garmin");
 
@@ -58,7 +63,7 @@ CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QStr
         const QDomNode& xmlPath     = xmlLocation.namedItem("Path");
 
         QString name = xmlName.toElement().text();
-        if(name == "UserDataSync")
+        if(name == "GPSData")
         {
             pathGpx = xmlPath.toElement().text();
         }
@@ -72,6 +77,10 @@ CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QStr
         }
     }
 
+    qDebug() << dir.absoluteFilePath(pathGpx);
+    qDebug() << dir.absoluteFilePath(pathPictures);
+    qDebug() << dir.absoluteFilePath(pathSpoilers);
+
     if(!dir.exists(pathGpx))
     {
         dir.mkpath(pathGpx);
@@ -106,7 +115,6 @@ CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QStr
             delete project;
         }
     }
-
 }
 
 CDeviceGarmin::~CDeviceGarmin()
@@ -115,7 +123,6 @@ CDeviceGarmin::~CDeviceGarmin()
 
 void CDeviceGarmin::insertCopyOfProject(IGisProject * project)
 {
-
     QString name = project->getName();
     name = name.remove(QRegExp("[^A-Za-z0-9_]"));
 
@@ -134,5 +141,159 @@ void CDeviceGarmin::insertCopyOfProject(IGisProject * project)
         delete gpx;
         return;
     }
+}
+
+void CDeviceGarmin::saveImages(CGisItemWpt& wpt)
+{
+    if(wpt.isGeocache())
+    {
+        QString name = wpt.getName();
+        quint32 size = name.size();
+        QString path = QString("%1/%2/%3").arg(name.at(size-1)).arg(name.at(size -2)).arg(name);
+
+        const QDir dirSpoilers(dir.absoluteFilePath(pathSpoilers));
+        const QDir dirCache(dirSpoilers.absoluteFilePath(path));
+        const QList<CGisItemWpt::image_t>& images = wpt.getImages();
+
+        if(!dirCache.exists())
+        {
+            dirCache.mkpath(dirCache.absolutePath());
+        }
+
+        QString filename;
+        foreach(const CGisItemWpt::image_t& image, images)
+        {
+            filename = image.info;
+            filename = filename.remove(QRegExp("[^A-Za-z0-9_]"));
+
+            if(!filename.endsWith("jpg"))
+            {
+                filename += ".jpg";
+            }
+            image.pixmap.save(dirCache.absoluteFilePath(filename));
+        }
+    }
+    else
+    {
+        const QDir dirImages(dir.absoluteFilePath(pathPictures));
+        const QString& key = wpt.getKey().project;
+        const QList<CGisItemWpt::image_t>& images = wpt.getImages();
+        QList<IGisItem::link_t> links;
+
+        QString filename;
+        foreach(const CGisItemWpt::image_t& image, images)
+        {
+            filename = QString("%1.%2.jpg").arg(key).arg(cntImages);
+            image.pixmap.save(dirImages.absoluteFilePath(filename));
+
+            IGisItem::link_t link;
+            link.uri  = pathPictures + "/" + filename;
+            link.text = QObject::tr("Picture%1").arg(cntImages);
+            link.type = "Garmin";
+
+            links << link;
+
+            cntImages++;
+        }
+
+        wpt.appendLinks(links);
+    }
+}
+
+void CDeviceGarmin::loadImages(CGisItemWpt& wpt)
+{
+    if(wpt.isGeocache())
+    {
+        QString name = wpt.getName();
+        quint32 size = name.size();
+        QString path = QString("%1/%2/%3").arg(name.at(size-1)).arg(name.at(size -2)).arg(name);
+
+        const QDir dirSpoilers(dir.absoluteFilePath(pathSpoilers));
+        const QDir dirCache(dirSpoilers.absoluteFilePath(path));
+
+        QList<CGisItemWpt::image_t> images;
+        QStringList entries = dirCache.entryList(QStringList("*.jpg"), QDir::Files);
+        foreach(const QString &file, entries)
+        {
+            CGisItemWpt::image_t image;
+            image.pixmap.load(dirCache.absoluteFilePath(file));
+
+            if(!image.pixmap.isNull())
+            {
+                image.fileName  = file;
+                image.info      = QFileInfo(file).baseName();
+                images << image;
+            }
+        }
+
+        if(!images.isEmpty())
+        {
+            wpt.appendImages(images);
+        }
+    }
+    else
+    {
+        const QList<IGisItem::link_t>& links = wpt.getLinks();
+        QList<CGisItemWpt::image_t> images;
+
+        foreach(const IGisItem::link_t& link, links)
+        {
+            if(link.type != "Garmin")
+            {
+                continue;
+            }
+            CGisItemWpt::image_t image;
+            image.fileName = link.text;
+            image.pixmap.load(dir.absoluteFilePath(link.uri.toString()));
 
+            images << image;
+        }
+
+        if(!images.isEmpty())
+        {
+            wpt.appendImages(images);
+            wpt.removeLinksByType("Garmin");
+        }
+    }
+}
+
+void CDeviceGarmin::startSavingProject(IGisProject * project)
+{
+    cntImages = 0;
+}
+
+void CDeviceGarmin::aboutToRemoveProject(IGisProject * project)
+{
+    // remove images attached to project
+    const QString& key = project->getKey();
+    const QDir dirImages(dir.absoluteFilePath(pathPictures));
+    QStringList entries = dirImages.entryList(QStringList("*.jpg"), QDir::Files);
+    foreach(const QString &entry, entries)
+    {
+        QString filename = dirImages.absoluteFilePath(entry);
+        QFileInfo fi(filename);
+
+        if(fi.baseName() == key)
+        {
+            QFile::remove(filename);
+        }
+    }
+
+    // remove geo cache spoiler images
+    const int N = project->childCount();
+    for(int n = 0; n < N; n++)
+    {
+        CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(project->child(n));
+        if(wpt && wpt->isGeocache())
+        {
+            QString name = wpt->getName();
+            quint32 size = name.size();
+            QString path = QString("%1/%2/%3").arg(name.at(size-1)).arg(name.at(size -2)).arg(name);
+
+            QDir dirSpoilers(dir.absoluteFilePath(pathSpoilers));
+            QDir dirCache(dirSpoilers.absoluteFilePath(path));
+
+            dirCache.removeRecursively();
+        }
+    }
 }
diff --git a/src/device/CDeviceGarmin.h b/src/device/CDeviceGarmin.h
index f35c8b4..73d2c53 100644
--- a/src/device/CDeviceGarmin.h
+++ b/src/device/CDeviceGarmin.h
@@ -29,13 +29,22 @@ public:
 
     void insertCopyOfProject(IGisProject * project);
 
+
+    void startSavingProject(IGisProject * project);
+    void saveImages(CGisItemWpt& wpt);
+    void loadImages(CGisItemWpt& wpt);
+    void aboutToRemoveProject(IGisProject * project);
+
+
 private:
     QString id;
     QString partno;
     QString description;
-    QString pathPictures;
     QString pathGpx;
+    QString pathPictures;
     QString pathSpoilers;
+
+    int cntImages;
 };
 
 #endif //CDEVICEGARMIN_H
diff --git a/src/device/CDeviceTwoNav.cpp b/src/device/CDeviceTwoNav.cpp
index f1ad502..a7104f7 100644
--- a/src/device/CDeviceTwoNav.cpp
+++ b/src/device/CDeviceTwoNav.cpp
@@ -18,19 +18,106 @@
 
 #include "device/CDeviceTwoNav.h"
 #include "gis/CGisListWks.h"
+#include "gis/gpx/CGpxProject.h"
+#include "gis/tnv/CTwoNavProject.h"
+
+#include <QtWidgets>
 
 CDeviceTwoNav::CDeviceTwoNav(const QString &path, const QString &key, const QString& model, QTreeWidget *parent)
     : IDevice(path, key, parent)
 {
     setText(CGisListWks::eColumnName, QString("TwoNav (%1)").arg(model));
     setToolTip(CGisListWks::eColumnName, QString("TwoNav (%1)").arg(model));
+
+    if(QFile::exists(dir.absoluteFilePath("TwoNav/RegInfo.ini")))
+    {
+        readReginfo(dir.absoluteFilePath("TwoNav/RegInfo.ini"));
+    }
+    else if(QFile::exists(dir.absoluteFilePath("TwoNavData/RegInfo.ini")))
+    {
+        readReginfo(dir.absoluteFilePath("TwoNavData/RegInfo.ini"));
+    }
+
+    pathData = "TwoNavData/Data/";
+
+    QDir dirData(dir.absoluteFilePath(pathData));
+    QStringList entries = dirData.entryList(QStringList("*.gpx"));
+    foreach(const QString &entry, entries)
+    {
+        IGisProject * project =  new CGpxProject(dirData.absoluteFilePath(entry), this);
+        if(!project->isValid())
+        {
+            delete project;
+        }
+    }
+
+    entries = dirData.entryList(QDir::NoDotAndDotDot|QDir::Dirs);
+    foreach(const QString &entry, entries)
+    {
+        IGisProject * project =  new CTwoNavProject(dirData.absoluteFilePath(entry), this);
+        if(!project->isValid())
+        {
+            delete project;
+        }
+    }
 }
 
 CDeviceTwoNav::~CDeviceTwoNav()
 {
 }
 
+void CDeviceTwoNav::readReginfo(const QString& filename)
+{
+    QString product, unittype;
+    QRegExp re("(.*)=(.*)");
+    QFile file(filename);
+    file.open(QIODevice::ReadOnly);
+
+    while(!file.atEnd())
+    {
+        QString line = file.readLine().simplified();
+
+        if(re.exactMatch(line))
+        {
+            QString tok = re.cap(1);
+            QString val = re.cap(2);
+
+            if(tok == "product")
+            {
+                product = val;
+            }
+            else if(tok == "unittype")
+            {
+                unittype = val;
+            }
+        }
+    }
+
+    if(!product.isEmpty() && !unittype.isEmpty())
+    {
+        setText(CGisListWks::eColumnName, QString("%1 (%2)").arg(product).arg(unittype));
+    }
+}
+
 void CDeviceTwoNav::insertCopyOfProject(IGisProject * project)
 {
+    QString name = project->getName();
+    name = name.remove(QRegExp("[^A-Za-z0-9_]"));
+
+    QDir dirData = dir.absoluteFilePath(pathData);
+    QString filename = dirData.absoluteFilePath(name);
+
+    CTwoNavProject * proj = new CTwoNavProject(filename, project, this);
+    if(!proj->isValid())
+    {
+        delete proj;
+        return;
+    }
 
+    if(!proj->save())
+    {
+        proj->remove();
+        delete proj;
+        return;
+    }
 }
diff --git a/src/device/CDeviceTwoNav.h b/src/device/CDeviceTwoNav.h
index 01d104d..7f6636f 100644
--- a/src/device/CDeviceTwoNav.h
+++ b/src/device/CDeviceTwoNav.h
@@ -28,6 +28,11 @@ public:
     virtual ~CDeviceTwoNav();
 
     void insertCopyOfProject(IGisProject * project);
+
+private:
+    void readReginfo(const QString& filename);
+
+    QString pathData;
 };
 
 #endif //CDEVICETWONAV_H
diff --git a/src/device/CDeviceWatcherWindows.cpp b/src/device/CDeviceWatcherWindows.cpp
index a6d8cfb..bc62d22 100644
--- a/src/device/CDeviceWatcherWindows.cpp
+++ b/src/device/CDeviceWatcherWindows.cpp
@@ -1,39 +1,74 @@
-/**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-**********************************************************************************************/
-
-#include "device/CDeviceWatcherWindows.h"
-#include "gis/CGisListWks.h"
-
-CDeviceWatcherWindows::CDeviceWatcherWindows(CGisListWks *parent)
-    : IDeviceWatcher(parent)
-{
-    /** @todo add code to detect devices pluged into the computer.
-
-        maybe a good point to start is looking at the code of:
-        http://qt-project.org/forums/viewthread/9605
-     */
-}
-
-CDeviceWatcherWindows::~CDeviceWatcherWindows()
-{
-}
-
-void CDeviceWatcherWindows::slotUpdate()
-{
-    /// @todo query the list of drived to detect already connected devices.
-}
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "device/CDeviceWatcherWindows.h"
+#include "gis/CGisListWks.h"
+
+#include "CMainWindow.h"
+#include <QtCore>
+
+CDeviceWatcherWindows * CDeviceWatcherWindows::pSelf = 0;
+
+CDeviceWatcherWindows::CDeviceWatcherWindows(CGisListWks *parent)
+    : IDeviceWatcher(parent)
+{
+    pSelf = this;
+}
+
+CDeviceWatcherWindows::~CDeviceWatcherWindows()
+{
+}
+
+void CDeviceWatcherWindows::slotUpdate()
+{
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    foreach(const QStorageInfo &storage, QStorageInfo::mountedVolumes())
+    {
+        if (storage.isValid() && storage.isReady())
+        {
+            probeForDevice(storage.rootPath(), storage.rootPath(), storage.name());
+        }
+    }
+    QApplication::restoreOverrideCursor();
+}
+
+bool CDeviceWatcherWindows::event(QEvent * e)
+{
+    if (e->type() == CEventDevice::eEvtDeviceWindows)
+    {
+        CEventDevice * evt = (CEventDevice*)e;
+        qDebug() << "CDeviceWatcherWindows::event()" << evt->path << evt->add;
+
+        if (evt->add)
+        {
+            QStorageInfo storage(evt->path);
+            if (storage.isValid() && storage.isReady())
+            {
+                QApplication::setOverrideCursor(Qt::WaitCursor);
+                probeForDevice(evt->path, evt->path, storage.name());
+                QApplication::restoreOverrideCursor();
+            }
+        }
+        else
+        {
+            listWks->removeDevice(evt->path);
+        }
+    }
+
+    return QObject::event(e);
+}
\ No newline at end of file
diff --git a/src/device/CDeviceWatcherWindows.h b/src/device/CDeviceWatcherWindows.h
index 02acd37..ac471dd 100644
--- a/src/device/CDeviceWatcherWindows.h
+++ b/src/device/CDeviceWatcherWindows.h
@@ -21,15 +21,45 @@
 
 #include "device/IDeviceWatcher.h"
 
+#include <QEvent>
+
+class CEventDevice : public QEvent
+{
+public:
+
+    enum event_types_e
+    {
+        eEvtDeviceWindows = QEvent::User + 200
+    };
+
+    CEventDevice(const QString& path, bool add) : QEvent(QEvent::Type(eEvtDeviceWindows)), add(add), path(path)
+    {
+    }
+
+    bool add;
+    QString path;
+};
+
 class CDeviceWatcherWindows : public IDeviceWatcher
 {
     Q_OBJECT
 public:
-    CDeviceWatcherWindows(CGisListWks *parent);
     virtual ~CDeviceWatcherWindows();
 
+    static CDeviceWatcherWindows * self()
+    {
+        return pSelf;
+    }
+
+    bool event(QEvent * e);
+
 private slots:
     void slotUpdate();
+
+private:
+    friend class CGisListWks;
+    CDeviceWatcherWindows(CGisListWks *parent);
+    static CDeviceWatcherWindows * pSelf;
 };
 
 #endif //CDEVICEWATCHERWINDOWS_H
diff --git a/src/device/IDevice.cpp b/src/device/IDevice.cpp
index 457144d..10541bc 100644
--- a/src/device/IDevice.cpp
+++ b/src/device/IDevice.cpp
@@ -15,20 +15,22 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 **********************************************************************************************/
-
+#include "CMainWindow.h"
 #include "device/IDevice.h"
 #include "gis/CGisListWks.h"
 #include "gis/prj/IGisProject.h"
 #include "helpers/CSelectCopyAction.h"
 
+#ifdef Q_OS_LINUX
 #include <QtDBus>
+#endif
 
 IDevice::IDevice(const QString &path, const QString &key, QTreeWidget *parent)
     : QTreeWidgetItem(parent)
     , dir(path)
     , key(key)
 {
-    setIcon(CGisListWks::eColumnName, QIcon("://icons/32x32/Device.png"));
+    setIcon(CGisListWks::eColumnIcon, QIcon("://icons/32x32/Device.png"));
 }
 
 IDevice::~IDevice()
@@ -81,7 +83,6 @@ IGisItem * IDevice::getItemByKey(const IGisItem::key_t& key)
     const int N = childCount();
     for(int n = 0; n < N; n++)
     {
-
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
         if(project)
         {
@@ -95,7 +96,6 @@ IGisItem * IDevice::getItemByKey(const IGisItem::key_t& key)
             {
                 break;
             }
-
         }
     }
     return item;
@@ -106,7 +106,6 @@ IGisProject * IDevice::getProjectByKey(const QString& key)
     const int N = childCount();
     for(int n = 0; n < N; n++)
     {
-
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
         if(project)
         {
@@ -119,7 +118,6 @@ IGisProject * IDevice::getProjectByKey(const QString& key)
         }
     }
     return 0;
-
 }
 
 void IDevice::editItemByKey(const IGisItem::key_t& key)
@@ -144,7 +142,7 @@ void IDevice::insertCopyOfProject(IGisProject * project, int& lastResult)
         int result = lastResult;
         if(lastResult == CSelectCopyAction::eResultNone)
         {
-            CSelectCopyAction dlg(project, project2, 0);
+            CSelectCopyAction dlg(project, project2, &CMainWindow::self());
             dlg.exec();
             result = dlg.getResult();
             if(dlg.allOthersToo())
@@ -170,12 +168,29 @@ void IDevice::insertCopyOfProject(IGisProject * project, int& lastResult)
         {
             return;
         }
-
     }
 
     insertCopyOfProject(project);
 }
 
+void IDevice::updateProject(IGisProject * project)
+{
+    IGisProject * project2 = getProjectByKey(project->getKey());
+    if(project2)
+    {
+        if(project2->remove())
+        {
+            delete project2;
+        }
+        else
+        {
+            return;
+        }
+
+        insertCopyOfProject(project);
+    }
+}
+
 void IDevice::drawItem(QPainter& p, const QPolygonF &viewport, QList<QRectF>& blockedAreas, CGisDraw * gis)
 {
     const int N = childCount();
diff --git a/src/device/IDevice.h b/src/device/IDevice.h
index dfb6b43..ec67adf 100644
--- a/src/device/IDevice.h
+++ b/src/device/IDevice.h
@@ -24,7 +24,7 @@
 
 #include "gis/IGisItem.h"
 class CGisDraw;
-
+class CGisItemWpt;
 
 class IDevice : public QTreeWidgetItem
 {
@@ -35,8 +35,14 @@ public:
     static void mount(const QString& path);
     static void umount(const QString &path);
 
-    void mount(){mount(key);}
-    void umount(){umount(key);}
+    void mount()
+    {
+        mount(key);
+    }
+    void umount()
+    {
+        umount(key);
+    }
 
     const QString& getKey() const
     {
@@ -54,8 +60,23 @@ public:
     void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
 
     void insertCopyOfProject(IGisProject * project, int& lastResult);
+    void updateProject(IGisProject * project);
+
+    virtual void startSavingProject(IGisProject * project)
+    {
+    }
+    virtual void saveImages(CGisItemWpt& wpt)
+    {
+    }
+    virtual void loadImages(CGisItemWpt& wpt)
+    {
+    }
+    virtual void aboutToRemoveProject(IGisProject * project)
+    {
+    }
+
 
-protected:    
+protected:
     virtual void insertCopyOfProject(IGisProject * project) = 0;
     IGisProject * getProjectByKey(const QString& key);
 
diff --git a/src/gis/CGisListDB.cpp b/src/gis/CGisListDB.cpp
index 2a369a3..f4fb544 100644
--- a/src/gis/CGisListDB.cpp
+++ b/src/gis/CGisListDB.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "config.h"
 #include "gis/CGisListDB.h"
 #include "gis/CGisWidget.h"
@@ -404,7 +405,7 @@ void CGisListDB::slotDelItem()
         if(last != QMessageBox::YesToAll)
         {
             QString msg = QObject::tr("Are you sure you want to delete '%1' from folder '%2'?").arg(dbItem->text(CGisListDB::eColumnName)).arg(folder->text(CGisListDB::eColumnName));
-            last = QMessageBox::question(0, QObject::tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
+            last = QMessageBox::question(&CMainWindow::self(), QObject::tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
         }
         if(last == QMessageBox::No)
         {
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index 5b81c11..fbaedc8 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "CMainWindow.h"
+#include "canvas/CCanvas.h"
 #include "config.h"
 #ifdef Q_OS_LINUX
 #include "device/CDeviceWatcherLinux.h"
@@ -43,6 +44,7 @@
 #include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSettings.h"
 
+#include <QApplication>
 #include <QtSql>
 #include <QtWidgets>
 
@@ -85,15 +87,27 @@ CGisListWks::CGisListWks(QWidget *parent)
     db.open();
     configDB();
 
-    menuProject     = new QMenu(this);
-    actionEditPrj   = menuProject->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
-    actionSaveAs    = menuProject->addAction(QIcon("://icons/32x32/SaveGISAs.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
-    actionSave      = menuProject->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save"), this, SLOT(slotSaveProject()));
-    actionCloseProj = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
-    actionDelProj   = menuProject->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteProject()));
+    menuProjectWks  = new QMenu(this);
+    actionEditPrj   = menuProjectWks->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
+    actionSaveAs    = menuProjectWks->addAction(QIcon("://icons/32x32/SaveGISAs.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
+    actionSave      = menuProjectWks->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save"), this, SLOT(slotSaveProject()));
+    actionSyncWksDev= menuProjectWks->addAction(QIcon("://icons/32x32/Device.png"),tr("Update Project on Devices"), this, SLOT(slotSyncWksDev()));
+    actionCloseProj = menuProjectWks->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
+
+    menuProjectDev  = new QMenu(this);
+    menuProjectDev->addAction(actionEditPrj);
+    menuProjectDev->addAction(actionSaveAs);
+    menuProjectDev->addAction(actionSave);
+    actionSyncWksDev= menuProjectDev->addAction(QIcon("://icons/32x32/Device.png"),tr("Update Project on Device"), this, SLOT(slotSyncDevWks()));
+    actionDelProj   = menuProjectDev->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteProject()));
+
+    menuProjectTrash= new QMenu(this);
+    menuProjectTrash->addAction(actionSaveAs);
+    menuProjectTrash->addAction(actionCloseProj);
 
     connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
     connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotItemDoubleClicked(QTreeWidgetItem*,int)));
+    connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(slotItemChanged(QTreeWidgetItem*,int)));
 
     menuItemTrk     = new QMenu(this);
     actionEditDetails = menuItemTrk->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
@@ -273,7 +287,7 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
             2.1) different parent -> copy
             3) go on with dragMoveEvent();
 
-        */
+         */
         CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(item1);
         CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(item2);
 
@@ -347,7 +361,7 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
             to store a project and it's items on a device. Moving it back to the
             workspace would conflict with the original project. To much hassle to
             reslove this properly.
-        */
+         */
         IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
         if(proj1 && proj1->isOnDevice())
         {
@@ -361,7 +375,7 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
         Test for other project, to change project order. But if other project
         is on a device block the request. A project has to be copied to the
         device via it's device item.
-    */
+     */
     IGisProject * proj2 = dynamic_cast<IGisProject*>(item2);
     if(proj2)
     {
@@ -385,7 +399,7 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
     /*
         Test for device as drop target. A device will copy the project into
         it's own supported format.
-    */
+     */
     IDevice * device = dynamic_cast<IDevice*>(item2);
     if(device)
     {
@@ -576,6 +590,8 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
 
 void CGisListWks::removeDevice(const QString& key)
 {
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     for(int i = 0; i < topLevelItemCount(); i++)
     {
         IDevice * device = dynamic_cast<IDevice*>(topLevelItem(i));
@@ -776,11 +792,14 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
         if(project != 0)
         {
-            bool isOnDevice = project->isOnDevice();
-            actionCloseProj->setVisible(!isOnDevice);
-            actionDelProj->setVisible(isOnDevice);
-            actionEditPrj->setVisible(false);           
-            menuProject->exec(p);
+            if(project->isOnDevice())
+            {
+                menuProjectDev->exec(p);
+            }
+            else
+            {
+                menuProjectWks->exec(p);
+            }
             return;
         }
 
@@ -800,19 +819,19 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         {
             if(project->getType() == IGisProject::eTypeLostFound)
             {
-                actionDelProj->setVisible(false);
-                actionSave->setVisible(false);
-                actionEditPrj->setVisible(false);
+                menuProjectTrash->exec(p);
             }
             else
             {
-                bool isOnDevice = project->isOnDevice();
-                actionCloseProj->setVisible(!isOnDevice);
-                actionDelProj->setVisible(isOnDevice);
-                actionSave->setVisible(true);
-                actionEditPrj->setVisible(true);
+                if(project->isOnDevice())
+                {
+                    menuProjectDev->exec(p);
+                }
+                else
+                {
+                    menuProjectWks->exec(p);
+                }
             }
-            menuProject->exec(p);
             return;
         }
 
@@ -875,7 +894,7 @@ void CGisListWks::slotDeleteProject()
         IGisProject * project = dynamic_cast<IGisProject*>(item);
         if(project != 0)
         {
-            int res = QMessageBox::question(0, QObject::tr("Delete project..."), QObject::tr("Do you really want to delete %1?").arg(project->getFilename()), QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok);
+            int res = QMessageBox::question(&CMainWindow::self(), QObject::tr("Delete project..."), QObject::tr("Do you really want to delete %1?").arg(project->getFilename()), QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok);
             if(res != QMessageBox::Ok)
             {
                 continue;
@@ -943,6 +962,15 @@ void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
     }
 }
 
+void CGisListWks::slotItemChanged(QTreeWidgetItem * item, int column)
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+    if(column == CGisListDB::eColumnCheckbox)
+    {
+        emit sigChanged();
+    }
+}
+
 void CGisListWks::slotEditItem()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
@@ -1163,6 +1191,81 @@ void CGisListWks::slotSearchGoogle(bool on)
     }
 }
 
+void CGisListWks::slotSyncWksDev()
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
+    IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
+    if(project == 0)
+    {
+        return;
+    }
+
+    CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+    const int N = topLevelItemCount();
+    for(int n = 0; n < N; n++)
+    {
+        IDevice * device = dynamic_cast<IDevice*>(topLevelItem(n));
+        if(device == 0)
+        {
+            continue;
+        }
+        if(canvas)
+        {
+            canvas->reportStatus("device", tr("<b>Update devices</b><p>Update %1<br/>Please wait...</p>").arg(device->text(CGisListWks::eColumnName)));
+            canvas->update();
+            qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
+        }
+
+        device->updateProject(project);
+    }
+    if(canvas)
+    {
+        canvas->reportStatus("device", "");
+    }
+    emit sigChanged();
+}
+
+void CGisListWks::slotSyncDevWks()
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
+    IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
+    if(project == 0)
+    {
+        return;
+    }
+
+    IDevice * device = dynamic_cast<IDevice*>(project->parent());
+    if(device == 0)
+    {
+        return;
+    }
+
+    QString key = project->getKey();
+
+    project = getProjectByKey(key);
+    if(project)
+    {
+        CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+        if(canvas)
+        {
+            canvas->reportStatus("device", tr("<b>Update devices</b><p>Update %1<br/>Please wait...</p>").arg(device->text(CGisListWks::eColumnName)));
+            canvas->update();
+            qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
+        }
+
+        device->updateProject(project);
+
+        if(canvas)
+        {
+            canvas->reportStatus("device", "");
+        }
+        emit sigChanged();
+    }
+}
+
+
 bool CGisListWks::event(QEvent * e)
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
diff --git a/src/gis/CGisListWks.h b/src/gis/CGisListWks.h
index bd4424c..493eb4c 100644
--- a/src/gis/CGisListWks.h
+++ b/src/gis/CGisListWks.h
@@ -40,6 +40,7 @@ public:
     enum column_e
     {
         eColumnDecoration = 0
+        ,eColumnIcon = 0
         ,eColumnName = 1
     };
 
@@ -71,6 +72,7 @@ private slots:
     void slotCloseProject();
     void slotDeleteProject();
     void slotItemDoubleClicked(QTreeWidgetItem * item, int);
+    void slotItemChanged(QTreeWidgetItem * item, int column);
     void slotEditItem();
     void slotDeleteItem();
     void slotProjWpt();
@@ -85,6 +87,8 @@ private slots:
     void slotCloseAllProjects();
     void slotSearchGoogle(bool on);
     void slotCopyItem();
+    void slotSyncWksDev();
+    void slotSyncDevWks();
 
 
 private:
@@ -94,12 +98,19 @@ private:
 
     QSqlDatabase db;
 
-    QMenu * menuProject;
+    QMenu * menuProjectWks;
     QAction  * actionSave;
     QAction  * actionSaveAs;
     QAction  * actionEditPrj;
     QAction  * actionCloseProj;
+    QAction  * actionSyncWksDev;
+
+
+    QMenu * menuProjectDev;
     QAction  * actionDelProj;
+    QAction  * actionSyncDevWks;
+
+    QMenu * menuProjectTrash;
 
     QMenu * menuItem;
     QMenu * menuItemTrk;
diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
index bd53e13..5034d0e 100644
--- a/src/gis/CGisWidget.cpp
+++ b/src/gis/CGisWidget.cpp
@@ -66,7 +66,7 @@ CGisWidget::~CGisWidget()
         Explicitely delete workspace here, as database projects use
         CGisWidget uppon destruction to signal the database their destruction.
 
-    */
+     */
     delete treeWks;
 }
 
@@ -204,7 +204,6 @@ void CGisWidget::getItemsByPos(const QPointF& pos, QList<IGisItem*>& items)
             device->getItemByPos(pos, items);
             continue;
         }
-
     }
 }
 
diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
index f5acdd8..894e56c 100644
--- a/src/gis/IGisItem.cpp
+++ b/src/gis/IGisItem.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "GeoMath.h"
 #include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
@@ -205,7 +206,7 @@ QString IGisItem::getNameEx() const
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
     if(project)
     {
-        str += " @ " + project->getName();               
+        str += " @ " + project->getName();
     }
     return str;
 }
@@ -280,6 +281,24 @@ void IGisItem::changed(const QString &what, const QString &icon)
     updateDecoration(eMarkChanged, eMarkNone);
 }
 
+void IGisItem::updateHistory()
+{
+    history_event_t& event = history.events[history.histIdxCurrent];
+    event.data.clear();
+
+    QDataStream stream(&event.data, QIODevice::WriteOnly);
+    stream.setByteOrder(QDataStream::LittleEndian);
+    stream.setVersion(QDataStream::Qt_5_2);
+
+    *this >> stream;
+
+    QCryptographicHash md5(QCryptographicHash::Md5);
+    md5.addData(event.data);
+    event.hash = md5.result().toHex();
+
+    updateDecoration(eMarkChanged, eMarkNone);
+}
+
 void IGisItem::setupHistory()
 {
     history.histIdxInitial = -1;
@@ -386,7 +405,7 @@ void IGisItem::setReadOnlyMode(bool readOnly)
         if(isReadOnly() && !readOnly)
         {
             QString str = QObject::tr("This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.");
-            if(QMessageBox::warning(0, QObject::tr("Read Only Mode..."), str, QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok) != QMessageBox::Ok)
+            if(QMessageBox::warning(&CMainWindow::self(), QObject::tr("Read Only Mode..."), str, QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok) != QMessageBox::Ok)
             {
                 return;
             }
@@ -401,6 +420,8 @@ void IGisItem::setReadOnlyMode(bool readOnly)
     {
         flags |= eFlagWriteAllowed;
     }
+
+    updateHistory();
 }
 
 
@@ -451,6 +472,11 @@ void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewp
     QPolygonF subline;
     const int size = line.size();
 
+    if(line.isEmpty())
+    {
+        return;
+    }
+
     pt = line[0];
     subline << pt;
 
diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
index fa13d44..a37f89f 100644
--- a/src/gis/IGisItem.h
+++ b/src/gis/IGisItem.h
@@ -195,7 +195,7 @@ public:
        @brief Get a short string with the items properties to be displayed in tool tips or similar
        @return A string object.
      */
-    virtual QString getInfo() const = 0;
+    virtual QString getInfo(bool allowEdit = false) const = 0;
 
     virtual const QString& getComment() const = 0;
     virtual const QString& getDescription() const = 0;
@@ -358,6 +358,8 @@ protected:
     virtual void genKey();
     /// setup the history structure right after the creation of the item
     void setupHistory();
+    /// update current history entry (e.g. to save the flags)
+    void updateHistory();
     /// convert a color string from GPX to a QT color
     QColor str2color(const QString& name);
     /// convertr a QT color to a string to be used in a GPX file
diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
index 5a74d07..72e5014 100644
--- a/src/gis/IGisWidget.ui
+++ b/src/gis/IGisWidget.ui
@@ -57,7 +57,7 @@
        <number>14</number>
       </property>
       <attribute name="headerDefaultSectionSize">
-       <number>40</number>
+       <number>100</number>
       </attribute>
       <column>
        <property name="text">
diff --git a/src/gis/db/CDBProject.cpp b/src/gis/db/CDBProject.cpp
index d3cf73e..6266932 100644
--- a/src/gis/db/CDBProject.cpp
+++ b/src/gis/db/CDBProject.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "gis/CGisWidget.h"
 #include "gis/db/CDBProject.h"
 #include "gis/db/macros.h"
@@ -33,14 +34,14 @@ CDBProject::CDBProject(CGisListWks * parent)
     : IGisProject(eTypeDb, "", parent)
     , id(0)
 {
-    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/DBProject.png"));
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/DBProject.png"));
 }
 
 CDBProject::CDBProject(const QString& dbName, quint64 id, CGisListWks *parent)
     : IGisProject(eTypeDb, dbName, parent)
     , id(id)
 {
-    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/DBProject.png"));
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/DBProject.png"));
     db = QSqlDatabase::database(dbName);
 
     QSqlQuery query(db);
@@ -122,7 +123,7 @@ bool CDBProject::saveAs()
     QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
 
     QString filter = "*.qms";
-    QString fn = QFileDialog::getSaveFileName(0, QObject::tr("Save GIS data to..."), path, "*.gpx;; *.qms", &filter);
+    QString fn = QFileDialog::getSaveFileName(&CMainWindow::self(), QObject::tr("Save GIS data to..."), path, "*.gpx;; *.qms", &filter);
 
     if(fn.isEmpty())
     {
diff --git a/src/gis/db/CLostFoundProject.cpp b/src/gis/db/CLostFoundProject.cpp
index 44be346..bf770de 100644
--- a/src/gis/db/CLostFoundProject.cpp
+++ b/src/gis/db/CLostFoundProject.cpp
@@ -33,7 +33,7 @@ CLostFoundProject::CLostFoundProject(const QString &dbName, CGisListWks * parent
 {
     type    = eTypeLostFound;
     db      = QSqlDatabase::database(dbName);
-    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/DeleteMultiple.png"));
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/DeleteMultiple.png"));
 
     filename        = dbName;
     metadata.name   = QObject::tr("Lost & Found");
diff --git a/src/gis/db/CSetupDatabase.cpp b/src/gis/db/CSetupDatabase.cpp
index 9eba01b..18a5f95 100644
--- a/src/gis/db/CSetupDatabase.cpp
+++ b/src/gis/db/CSetupDatabase.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "gis/CGisListDB.h"
 #include "gis/db/CSetupDatabase.h"
 #include "helpers/CSettings.h"
@@ -66,7 +67,7 @@ void CSetupDatabase::accept()
     name = lineName->text();
     if(list.hasDatabase(name))
     {
-        QMessageBox::warning(0, tr("Error..."), tr("There is already a database with name '%1'").arg(name), QMessageBox::Abort);
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("There is already a database with name '%1'").arg(name), QMessageBox::Abort);
         return;
     }
     filename = labelFilename->text();
@@ -78,7 +79,7 @@ void CSetupDatabase::accept()
 void CSetupDatabase::slotNewDB()
 {
     SETTINGS;
-    QString path = cfg.value("Paths/lastDatabasePath", QDir::homePath()).toString();
+    QString path = cfg.value("Database/lastDatabasePath", QDir::homePath()).toString();
 
     QString filename = QFileDialog::getSaveFileName(this, tr("New database..."), path, "Database (*.db)");
     if(filename.isEmpty())
@@ -93,7 +94,7 @@ void CSetupDatabase::slotNewDB()
     }
 
 
-    cfg.setValue("Paths/lastDatabasePath", fi.absolutePath());
+    cfg.setValue("Database/lastDatabasePath", fi.absolutePath());
 
     labelFilename->setText(filename);
 
@@ -103,7 +104,7 @@ void CSetupDatabase::slotNewDB()
 void CSetupDatabase::slotOpenDB()
 {
     SETTINGS;
-    QString path = cfg.value("Paths/lastDatabasePath", QDir::homePath()).toString();
+    QString path = cfg.value("Database/lastDatabasePath", QDir::homePath()).toString();
 
     QString filename = QFileDialog::getOpenFileName(this, tr("Open database..."), path, "Database (*.db)");
     if(filename.isEmpty())
@@ -118,7 +119,7 @@ void CSetupDatabase::slotOpenDB()
     }
 
 
-    cfg.setValue("Paths/lastDatabasePath", fi.absolutePath());
+    cfg.setValue("Database/lastDatabasePath", fi.absolutePath());
 
     labelFilename->setText(filename);
 
diff --git a/src/gis/db/IDB.cpp b/src/gis/db/IDB.cpp
index cd24a0f..1033cd8 100644
--- a/src/gis/db/IDB.cpp
+++ b/src/gis/db/IDB.cpp
@@ -27,39 +27,33 @@ IDB::IDB()
 
 IDB::~IDB()
 {
+    if(db.isOpen())
+    {
+        db.close();
+    }
 }
 
 bool IDB::setupDB(const QString& filename, const QString& connectionName)
 {
     db = QSqlDatabase::addDatabase("QSQLITE", connectionName);
     db.setDatabaseName(filename);
-    db.open();
-
-    QSqlQuery query(db);
-    if(!query.exec("PRAGMA locking_mode=EXCLUSIVE"))
-    {
-        return false;
-    }
-
-    if(!query.exec("PRAGMA synchronous=OFF"))
-    {
-        return false;
-    }
-
-    if(!query.exec("PRAGMA temp_store=MEMORY"))
+    if(!db.open())
     {
-        return false;
+        qDebug() << "failed to open database" << db.lastError();
     }
 
-    if(!query.exec("PRAGMA default_cache_size=50"))
-    {
-        return false;
-    }
+    QSqlQuery query(db);
 
-    if(!query.exec("PRAGMA page_size=8192"))
-    {
-        return false;
-    }
+    query.prepare("PRAGMA locking_mode=EXCLUSIVE");
+    QUERY_EXEC(return false);
+    query.prepare("PRAGMA temp_store=MEMORY");
+    QUERY_EXEC(return false);
+    query.prepare("PRAGMA default_cache_size=50");
+    QUERY_EXEC(return false);
+    query.prepare("PRAGMA page_size=8192");
+    QUERY_EXEC(return false);
+    query.prepare("PRAGMA synchronous=OFF");
+    QUERY_EXEC(return false);
 
     if(!query.exec("SELECT version FROM versioninfo"))
     {
diff --git a/src/gis/gpx/CGpxProject.cpp b/src/gis/gpx/CGpxProject.cpp
index 65b41e6..0fe5ba8 100644
--- a/src/gis/gpx/CGpxProject.cpp
+++ b/src/gis/gpx/CGpxProject.cpp
@@ -16,6 +16,8 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
+#include "device/CDeviceGarmin.h"
 #include "device/IDevice.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisListWks.h"
@@ -25,30 +27,29 @@
 #include "gis/rte/CGisItemRte.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CSettings.h"
 #include "helpers/CSelectCopyAction.h"
-
+#include "helpers/CSettings.h"
 
 #include <QtWidgets>
 
 CGpxProject::CGpxProject(const QString &filename, CGisListWks *parent)
     : IGisProject(eTypeGpx, filename, parent)
 {
-    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/GpxProject.png"));
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/GpxProject.png"));
     loadGpx(filename);
 }
 
 CGpxProject::CGpxProject(const QString &filename, IDevice * parent)
     : IGisProject(eTypeGpx, filename, parent)
 {
-    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/GpxProject.png"));
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/GpxProject.png"));
     loadGpx(filename);
 }
 
 CGpxProject::CGpxProject(const QString &filename, const IGisProject * project, IDevice * parent)
     : IGisProject(eTypeGpx, filename, parent)
 {
-    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/GpxProject.png"));
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/GpxProject.png"));
     *(IGisProject*)this = *project;
 
     const int N = project->childCount();
@@ -89,7 +90,7 @@ void CGpxProject::loadGpx(const QString& filename)
 
     if(!file.open(QIODevice::ReadOnly))
     {
-        QMessageBox::critical(0, QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(filename), QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(filename), QMessageBox::Abort);
         return;
     }
 
@@ -102,7 +103,7 @@ void CGpxProject::loadGpx(const QString& filename)
     if(!xml.setContent(&file, false, &msg, &line, &column))
     {
         file.close();
-        QMessageBox::critical(0, QObject::tr("Failed to read..."), QObject::tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg), QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), QObject::tr("Failed to read..."), QObject::tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg), QMessageBox::Abort);
         return;
     }
     file.close();
@@ -111,7 +112,7 @@ void CGpxProject::loadGpx(const QString& filename)
     QDomElement xmlGpx = xml.documentElement();
     if(xmlGpx.tagName() != "gpx")
     {
-        QMessageBox::critical(0, QObject::tr("Failed to read..."), QObject::tr("Not a GPX file: ") + filename, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), QObject::tr("Failed to read..."), QObject::tr("Not a GPX file: ") + filename, QMessageBox::Abort);
         return;
     }
 
@@ -153,7 +154,18 @@ void CGpxProject::loadGpx(const QString& filename)
     for(int n = 0; n < N; ++n)
     {
         const QDomNode& xmlWpt = xmlWpts.item(n);
-        new CGisItemWpt(xmlWpt, this);
+        CGisItemWpt * wpt = new CGisItemWpt(xmlWpt, this);
+
+        /*
+            Special care for waypoints stored on Garmin devices. Images attached
+            to the waypoint are stored in the file system of the device and written
+            as links to the waypoint. Let the device object take care of this.
+         */
+        IDevice * device = dynamic_cast<IDevice*>(parent());
+        if(device)
+        {
+            device->loadImages(*wpt);
+        }
     }
 
     const QDomNodeList& xmlAreas = xmlExtension.elementsByTagName("ql:area");
@@ -193,7 +205,7 @@ bool CGpxProject::saveAs()
     QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
 
     QString filter = "*.gpx";
-    QString fn = QFileDialog::getSaveFileName(0, QObject::tr("Save GIS data to..."), path, "*.gpx;; *.qms", &filter);
+    QString fn = QFileDialog::getSaveFileName(&CMainWindow::self(), QObject::tr("Save GIS data to..."), path, "*.gpx;; *.qms", &filter);
 
     if(fn.isEmpty())
     {
@@ -233,7 +245,7 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
 {
     QString _fn_ = fn;
     QFileInfo fi(_fn_);
-    if(fi.suffix() != "gpx")
+    if(fi.suffix().toLower() != "gpx")
     {
         _fn_ += ".gpx";
     }
@@ -268,7 +280,7 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
         }
         catch(int)
         {
-            int res = QMessageBox::warning(0,QObject::tr("File exists ...")
+            int res = QMessageBox::warning(&CMainWindow::self(),QObject::tr("File exists ...")
                                            ,QObject::tr("The file exists and it has not been created by QMapShack. "
                                                         "If you press 'yes' all data in this file will be lost. "
                                                         "Even if this file contains GPX data and has been loaded by QMapShack, "
@@ -291,6 +303,12 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
     QDomDocument doc;
     QDomNode gpx = project.writeMetadata(doc);
 
+    IDevice * device = dynamic_cast<IDevice*>(project.parent());
+    if(device)
+    {
+        device->startSavingProject(&project);
+    }
+
     for(int i = 0; i < project.childCount(); i++)
     {
         CGisItemWpt * item = dynamic_cast<CGisItemWpt*>(project.child(i));
@@ -298,6 +316,17 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
         {
             continue;
         }
+
+        /*
+            Special care for waypoints stored on Garmin devices. Images attached
+            to the waypoint are stored in the file system of the device and written
+            as links to the waypoint. Let the device object take care of this.
+         */
+        if(device)
+        {
+            device->saveImages(*item);
+        }
+
         item->save(gpx);
     }
     for(int i = 0; i < project.childCount(); i++)
@@ -361,7 +390,7 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
     }
     catch(const QString& msg)
     {
-        QMessageBox::warning(0, QObject::tr("Saveing GIS data failed..."), msg, QMessageBox::Abort);
+        QMessageBox::warning(&CMainWindow::self(), QObject::tr("Saveing GIS data failed..."), msg, QMessageBox::Abort);
         res = false;
     }
     project.umount();
diff --git a/src/gis/gpx/CGpxProject.h b/src/gis/gpx/CGpxProject.h
index bdf7476..9646e0e 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/gis/gpx/CGpxProject.h
@@ -42,7 +42,7 @@ public:
     static bool saveAs(const QString& fn, IGisProject& project);
 
 private:
-    void loadGpx(const QString& filename);    
+    void loadGpx(const QString& filename);
 };
 
 #endif //CGPXPROJECT_H
diff --git a/src/gis/gpx/serialization.cpp b/src/gis/gpx/serialization.cpp
index e4a0e43..9cc1139 100644
--- a/src/gis/gpx/serialization.cpp
+++ b/src/gis/gpx/serialization.cpp
@@ -621,6 +621,8 @@ void CGisItemWpt::readGcExt(const QDomNode& xmlCache)
     geocache.hasData = true;
 }
 
+
+
 void CGisItemWpt::writeGcExt(QDomNode& xmlCache)
 {
     QString str;
@@ -736,6 +738,7 @@ void CGisItemTrk::readTrk(const QDomNode& xml, trk_t& trk)
 }
 
 
+
 void CGisItemTrk::save(QDomNode& gpx)
 {
     QDomDocument doc = gpx.ownerDocument();
diff --git a/src/gis/ovl/CDetailsOvlArea.cpp b/src/gis/ovl/CDetailsOvlArea.cpp
index a2646f6..87578ce 100644
--- a/src/gis/ovl/CDetailsOvlArea.cpp
+++ b/src/gis/ovl/CDetailsOvlArea.cpp
@@ -127,7 +127,7 @@ void CDetailsOvlArea::slotLinkActivated(const QString& link)
 {
     if(link == "name")
     {
-        QString name = QInputDialog::getText(0, tr("Edit name..."), tr("Enter new waypoint name."), QLineEdit::Normal, area.getName());
+        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new area name."), QLineEdit::Normal, area.getName());
         if(name.isEmpty())
         {
             return;
@@ -163,7 +163,7 @@ void CDetailsOvlArea::slotLinkActivated(const QUrl& url)
     else if(url.toString() == "links")
     {
         QList<IGisItem::link_t> links = area.getLinks();
-        CLinksDialog dlg(links, 0);
+        CLinksDialog dlg(links, this);
         if(dlg.exec() == QDialog::Accepted)
         {
             area.setLinks(links);
diff --git a/src/gis/ovl/CGisItemOvlArea.cpp b/src/gis/ovl/CGisItemOvlArea.cpp
index 22ff9bd..5faa2d7 100644
--- a/src/gis/ovl/CGisItemOvlArea.cpp
+++ b/src/gis/ovl/CGisItemOvlArea.cpp
@@ -409,7 +409,7 @@ const QString& CGisItemOvlArea::getName() const
     return area.name;
 }
 
-QString CGisItemOvlArea::getInfo() const
+QString CGisItemOvlArea::getInfo(bool allowEdit) const
 {
     QString unit, val;
     QString str = "<div style='font-weight: bold;'>" + getName() + "</div>";
@@ -568,5 +568,5 @@ void CGisItemOvlArea::setIcon(const QString& c)
     mask.setMask( icon.createMaskFromColor( Qt::transparent ) );
     icon = mask.scaled(22,22, Qt::KeepAspectRatio, Qt::SmoothTransformation);
 
-    QTreeWidgetItem::setIcon(CGisListWks::eColumnName,icon);
+    QTreeWidgetItem::setIcon(CGisListWks::eColumnIcon,icon);
 }
diff --git a/src/gis/ovl/CGisItemOvlArea.h b/src/gis/ovl/CGisItemOvlArea.h
index dc255db..b06d505 100644
--- a/src/gis/ovl/CGisItemOvlArea.h
+++ b/src/gis/ovl/CGisItemOvlArea.h
@@ -52,7 +52,7 @@ public:
     {
         return colorIdx;
     }
-    QString getInfo() const;
+    QString getInfo(bool allowEdit = false) const;
     void getPolylineFromData(QPolygonF& line);
     const QString& getComment() const
     {
diff --git a/src/gis/prj/CDetailsPrj.cpp b/src/gis/prj/CDetailsPrj.cpp
index 79485fc..b3c9c10 100644
--- a/src/gis/prj/CDetailsPrj.cpp
+++ b/src/gis/prj/CDetailsPrj.cpp
@@ -363,7 +363,7 @@ void CDetailsPrj::slotLinkActivated(const QString& link)
 {
     if(link == "name")
     {
-        QString name = QInputDialog::getText(0, tr("Edit name..."), tr("Enter new project name."), QLineEdit::Normal, prj.getName());
+        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new project name."), QLineEdit::Normal, prj.getName());
         if(name.isEmpty())
         {
             return;
@@ -372,7 +372,7 @@ void CDetailsPrj::slotLinkActivated(const QString& link)
     }
     else if(link == "keywords")
     {
-        QString keywords = QInputDialog::getText(0, tr("Edit keywords..."), tr("Enter keywords."), QLineEdit::Normal, prj.getKeywords());
+        QString keywords = QInputDialog::getText(this, tr("Edit keywords..."), tr("Enter keywords."), QLineEdit::Normal, prj.getKeywords());
         if(keywords.isEmpty())
         {
             return;
@@ -390,7 +390,7 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
 {
     if(url.path() == "name")
     {
-        QString name = QInputDialog::getText(0, tr("Edit name..."), tr("Enter new project name."), QLineEdit::Normal, prj.getName());
+        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new project name."), QLineEdit::Normal, prj.getName());
         if(!name.isEmpty())
         {
             prj.setName(name);
@@ -475,7 +475,7 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
             if(item)
             {
                 QList<IGisItem::link_t> links = item->getLinks();
-                CLinksDialog dlg(links, 0);
+                CLinksDialog dlg(links, this);
                 if(dlg.exec() == QDialog::Accepted)
                 {
                     item->setLinks(links);
@@ -485,7 +485,7 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
         else
         {
             QList<IGisItem::link_t> links = prj.getLinks();
-            CLinksDialog dlg(links, 0);
+            CLinksDialog dlg(links, this);
             if(dlg.exec() == QDialog::Accepted)
             {
                 prj.setLinks(links);
diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
index 5727313..b29719d 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/src/gis/prj/IGisProject.cpp
@@ -38,6 +38,7 @@ IGisProject::IGisProject(type_e type, const QString &filename, CGisListWks *pare
     , filename(filename)
     , valid(false)
 {
+    setCheckState(CGisListWks::eColumnDecoration, Qt::Checked);
 }
 
 IGisProject::IGisProject(type_e type, const QString &filename, IDevice *parent)
@@ -46,6 +47,7 @@ IGisProject::IGisProject(type_e type, const QString &filename, IDevice *parent)
     , filename(filename)
     , valid(false)
 {
+    setCheckState(CGisListWks::eColumnDecoration, Qt::Checked);
 }
 
 IGisProject::~IGisProject()
@@ -84,13 +86,13 @@ QString IGisProject::getDeviceKey() const
 
 QPixmap IGisProject::getIcon() const
 {
-    return icon(CGisListWks::eColumnName).pixmap(22,22);
+    return icon(CGisListWks::eColumnIcon).pixmap(22,22);
 }
 
 bool IGisProject::isOnDevice() const
 {
     IDevice * device = dynamic_cast<IDevice*>(parent());
-    return (device != 0);
+    return device != 0;
 }
 
 void IGisProject::edit()
@@ -289,7 +291,7 @@ bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::Standard
             if(last != QMessageBox::YesToAll)
             {
                 QString msg = QObject::tr("Are you sure you want to delete '%1' from project '%2'?").arg(item->getName()).arg(text(CGisListWks::eColumnName));
-                last = QMessageBox::question(0, QObject::tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
+                last = QMessageBox::question(&CMainWindow::self(), QObject::tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
                 if((last == QMessageBox::No) || (last == QMessageBox::Cancel))
                 {
                     // as each item in the project has to be unique, we can stop searching.
@@ -345,7 +347,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         int result = lastResult;
         if(lastResult == CSelectCopyAction::eResultNone)
         {
-            CSelectCopyAction dlg(item, item2, 0);
+            CSelectCopyAction dlg(item, item2, &CMainWindow::self());
             dlg.exec();
             result = dlg.getResult();
             if(dlg.allOthersToo())
@@ -388,7 +390,12 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(item);
         if(trk != 0)
         {
-            new CGisItemTrk(*trk, this, off, clone);
+            CGisItemTrk * newTrk = new CGisItemTrk(*trk, this, off, clone);
+            // if the track is on a device, remove hidden trackpoints
+            if(isOnDevice())
+            {
+                newTrk->filterDelete();
+            }
         }
         break;
     }
@@ -427,6 +434,11 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
 
 void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis)
 {
+    if(checkState(CGisListWks::eColumnDecoration) != Qt::Checked)
+    {
+        return;
+    }
+
     for(int i = 0; i < childCount(); i++)
     {
         if(gis->needsRedraw())
@@ -446,6 +458,11 @@ void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
 void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 {
+    if(checkState(CGisListWks::eColumnDecoration) != Qt::Checked)
+    {
+        return;
+    }
+
     for(int i = 0; i < childCount(); i++)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
@@ -461,6 +478,11 @@ void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
 void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis)
 {
+    if(checkState(CGisListWks::eColumnDecoration) != Qt::Checked)
+    {
+        return;
+    }
+
     for(int i = 0; i < childCount(); i++)
     {
         if(gis->needsRedraw())
@@ -507,7 +529,28 @@ void IGisProject::umount()
 bool IGisProject::remove()
 {
     mount();
-    QFile::remove(filename);
+
+    /*
+       Check if parent is a device and give it a chance to take care of data.
+
+       e.g. Garmin devices remove images attached to the project.
+     */
+    IDevice * device = dynamic_cast<IDevice*>(parent());
+    if(device)
+    {
+        device->aboutToRemoveProject(this);
+    }
+
+    QFileInfo fi(filename);
+    if(fi.isFile())
+    {
+        QFile::remove(filename);
+    }
+    else if(fi.isDir())
+    {
+        QDir(filename).removeRecursively();
+    }
+
     umount();
     return true;
 }
diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
index 4c8ea34..838564b 100644
--- a/src/gis/prj/IGisProject.h
+++ b/src/gis/prj/IGisProject.h
@@ -41,6 +41,7 @@ public:
         , eTypeGpx
         , eTypeDb
         , eTypeLostFound
+        , eTypeTwoNav
     };
 
     struct person_t
@@ -123,7 +124,7 @@ public:
     /**
        @brief Get the unique key of the device the project is attached to
        @return If the project is not attached to a device the string is empty
-    */
+     */
     QString getDeviceKey() const;
 
 
@@ -217,7 +218,7 @@ public:
     /**
        @brief Test if this project is handled by a device
        @return True if handled by a device
-    */
+     */
     bool isOnDevice() const;
 
 
@@ -272,7 +273,7 @@ public:
 
        This is only valid for projects located on GPS devices.
        For all other projects the method does nothing.
-    */
+     */
     bool remove();
 
 protected:
diff --git a/src/gis/qms/CQmsProject.cpp b/src/gis/qms/CQmsProject.cpp
index e33e8c6..8cdd940 100644
--- a/src/gis/qms/CQmsProject.cpp
+++ b/src/gis/qms/CQmsProject.cpp
@@ -16,19 +16,19 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "gis/CGisListWks.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/qms/CQmsProject.h"
 #include "helpers/CSettings.h"
 
-
 #include <QtWidgets>
 
 
 CQmsProject::CQmsProject(const QString &filename, CGisListWks *parent)
     : IGisProject(eTypeQms, filename, parent)
 {
-    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/QmsProject.png"));
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/QmsProject.png"));
 
     // cerate file instance
     QFile file(filename);
@@ -45,7 +45,7 @@ CQmsProject::CQmsProject(const QString &filename, CGisListWks *parent)
 
     if(!file.open(QIODevice::ReadOnly))
     {
-        QMessageBox::critical(0, QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(filename), QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(filename), QMessageBox::Abort);
         return;
     }
 
@@ -90,7 +90,7 @@ bool CQmsProject::saveAs()
     QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
 
     QString filter = "*.qms";
-    QString fn = QFileDialog::getSaveFileName(0, QObject::tr("Save GIS data to..."), path, "*.gpx;; *.qms", &filter);
+    QString fn = QFileDialog::getSaveFileName(&CMainWindow::self(), QObject::tr("Save GIS data to..."), path, "*.gpx;; *.qms", &filter);
 
     if(fn.isEmpty())
     {
@@ -130,7 +130,7 @@ bool CQmsProject::saveAs(const QString& fn, IGisProject& project)
 {
     QString _fn_ = fn;
     QFileInfo fi(_fn_);
-    if(fi.suffix() != "qms")
+    if(fi.suffix().toLower() != "qms")
     {
         _fn_ += ".qms";
     }
@@ -140,7 +140,7 @@ bool CQmsProject::saveAs(const QString& fn, IGisProject& project)
 
     if(!file.open(QIODevice::WriteOnly))
     {
-        QMessageBox::critical(0, QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(_fn_), QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(_fn_), QMessageBox::Abort);
         return false;
     }
     QDataStream out(&file);
diff --git a/src/gis/rte/CGisItemRte.cpp b/src/gis/rte/CGisItemRte.cpp
index c3b77ef..2d2dec2 100644
--- a/src/gis/rte/CGisItemRte.cpp
+++ b/src/gis/rte/CGisItemRte.cpp
@@ -118,7 +118,7 @@ void CGisItemRte::deriveSecondaryData()
 void CGisItemRte::setSymbol()
 {
     icon = QPixmap("://icons/32x32/Route.png").scaled(22,22, Qt::KeepAspectRatio, Qt::SmoothTransformation);
-    setIcon(CGisListWks::eColumnName, icon);
+    setIcon(CGisListWks::eColumnIcon, icon);
 }
 
 void CGisItemRte::setComment(const QString& str)
@@ -141,7 +141,7 @@ void CGisItemRte::setLinks(const QList<link_t>& links)
 
 
 
-QString CGisItemRte::getInfo() const
+QString CGisItemRte::getInfo(bool allowEdit) const
 {
     QString str = getName();
 
diff --git a/src/gis/rte/CGisItemRte.h b/src/gis/rte/CGisItemRte.h
index 3ec88c1..cbeeb88 100644
--- a/src/gis/rte/CGisItemRte.h
+++ b/src/gis/rte/CGisItemRte.h
@@ -69,7 +69,7 @@ public:
     {
         return rte.name;
     }
-    QString getInfo() const;
+    QString getInfo(bool allowEdit = false) const;
     IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
     QPointF getPointCloseBy(const QPoint& screenPos);
     void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
diff --git a/src/gis/search/CSearchGoogle.cpp b/src/gis/search/CSearchGoogle.cpp
index ce71e4f..b4bef11 100644
--- a/src/gis/search/CSearchGoogle.cpp
+++ b/src/gis/search/CSearchGoogle.cpp
@@ -119,7 +119,7 @@ void CSearchGoogle::slotRequestFinished(QNetworkReply* reply)
         status = tr("Unknown response");
         QTreeWidgetItem * item = new QTreeWidgetItem(this);
         item->setText(CGisListWks::eColumnName, status);
-        item->setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/Error.png"));
+        item->setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/Error.png"));
         return;
     }
 
@@ -130,7 +130,7 @@ void CSearchGoogle::slotRequestFinished(QNetworkReply* reply)
         status += root.namedItem("error_message").toElement().text();
         QTreeWidgetItem * item = new QTreeWidgetItem(this);
         item->setText(CGisListWks::eColumnName, status);
-        item->setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/Error.png"));
+        item->setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/Error.png"));
         return;
     }
 
diff --git a/src/gis/tnv/CTwoNavProject.cpp b/src/gis/tnv/CTwoNavProject.cpp
new file mode 100644
index 0000000..c98ca19
--- /dev/null
+++ b/src/gis/tnv/CTwoNavProject.cpp
@@ -0,0 +1,282 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMainWindow.h"
+#include "gis/CGisListWks.h"
+#include "gis/gpx/CGpxProject.h"
+#include "gis/qms/CQmsProject.h"
+#include "gis/tnv/CTwoNavProject.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "helpers/CSelectCopyAction.h"
+#include "helpers/CSettings.h"
+
+#include <QtWidgets>
+#include <proj_api.h>
+
+
+
+CTwoNavProject::CTwoNavProject(const QString &filename, IDevice * parent)
+    : IGisProject(eTypeTwoNav, filename, parent)
+{
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/2NavProject.png"));
+
+    load(filename);
+
+    setupName(QFileInfo(filename).baseName().replace("_", " "));
+    setToolTip(CGisListWks::eColumnName, getInfo());
+    valid = true;
+}
+
+CTwoNavProject::CTwoNavProject(const QString &filename, const IGisProject * project, IDevice * parent)
+    : IGisProject(eTypeTwoNav, filename, parent)
+{
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/2NavProject.png"));
+    *(IGisProject*)this = *project;
+
+    const int N = project->childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisItem * item = dynamic_cast<IGisItem*>(project->child(n));
+        if(item)
+        {
+            int res = CSelectCopyAction::eResultNone;
+            insertCopyOfItem(item, -1, res);
+        }
+    }
+
+
+    setupName(QFileInfo(filename).baseName().replace("_", " "));
+    setToolTip(CGisListWks::eColumnName, getInfo());
+    valid = true;
+}
+
+CTwoNavProject::~CTwoNavProject()
+{
+}
+
+bool CTwoNavProject::save()
+{
+    bool res = true;
+    mount();
+    QDir().mkpath(filename);
+    QDir dir(filename);
+
+    try
+    {
+        QFile fileKey(dir.absoluteFilePath(QString("%1.key").arg(getKey())));
+        if(!fileKey.open(QIODevice::WriteOnly))
+        {
+            QMessageBox::critical(&CMainWindow::self(), QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(fileKey.fileName()), QMessageBox::Abort);
+            throw -1;
+        }
+        fileKey.close();
+
+        QList<CGisItemWpt*> wpts;
+        QList<CGisItemWpt*> geocaches;
+        const int N = childCount();
+        for(int n = 0; n < N; n++)
+        {
+            QTreeWidgetItem * item = child(n);
+            CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(item);
+            if(trk)
+            {
+                QString fn = trk->getName();
+                fn = fn.remove(QRegExp("[^A-Za-z0-9_]"));
+                fn = dir.absoluteFilePath(fn + ".trk");
+
+                if(!trk->saveTwoNav(fn))
+                {
+                    throw -1;
+                }
+            }
+            CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
+            if(wpt)
+            {
+                if(wpt->isGeocache())
+                {
+                    geocaches << wpt;
+                }
+                else
+                {
+                    wpts << wpt;
+                }
+            }
+        }
+
+        if(!wpts.isEmpty())
+        {
+            if(!saveWpts(wpts, dir.absoluteFilePath("waypoints.wpt"), dir))
+            {
+                throw -1;
+            }
+        }
+
+        if(!geocaches.isEmpty())
+        {
+            if(!saveWpts(geocaches, dir.absoluteFilePath("geocaches.wpt"), dir))
+            {
+                throw -1;
+            }
+        }
+    }
+    catch(int)
+    {
+        res = false;
+    }
+
+    if(res)
+    {
+        markAsSaved();
+    }
+    umount();
+    return res;
+}
+
+bool CTwoNavProject::saveAs()
+{
+    SETTINGS;
+    QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
+
+    QString filter = "*.gpx";
+    QString fn = QFileDialog::getSaveFileName(&CMainWindow::self(), QObject::tr("Save GIS data to..."), path, "*.gpx;; *.qms", &filter);
+
+    if(fn.isEmpty())
+    {
+        return false;
+    }
+
+    bool res = false;
+    if(filter == "*.gpx")
+    {
+        res = CGpxProject::saveAs(fn, *this);
+    }
+    else if(filter == "*.qms")
+    {
+        res = CQmsProject::saveAs(fn, *this);
+    }
+    else
+    {
+        return false;
+    }
+
+    path = QFileInfo(fn).absolutePath();
+    cfg.setValue("Paths/lastGisPath", path);
+    return res;
+}
+
+
+bool CTwoNavProject::saveWpts(QList<CGisItemWpt*>& wpts, const QString& filename, const QDir& dir)
+{
+    QFile file(filename);
+    if(!file.open(QIODevice::WriteOnly))
+    {
+        QMessageBox::critical(&CMainWindow::self(), QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(filename), QMessageBox::Abort);
+        return false;
+    }
+    QTextStream out(&file);
+    out.setCodec(QTextCodec::codecForName("UTF-8"));
+
+    qreal north = -90.0;
+    qreal south = 90.0;
+    qreal west = 180.0;
+    qreal east = -180.0;
+
+    foreach(CGisItemWpt * wpt, wpts)
+    {
+        QPointF pt = wpt->getPosition();
+
+        if(north < pt.y())
+        {
+            north = pt.y();
+        }
+        if(south > pt.y())
+        {
+            south = pt.y();
+        }
+        if(west >  pt.x())
+        {
+            west  = pt.x();
+        }
+        if(east <  pt.x())
+        {
+            east  = pt.x();
+        }
+    }
+
+    out << "B  UTF-8" << endl;
+    out << "G  WGS 84" << endl;
+    out << "U  1" << endl;
+    out << "z " << west << ", " << south << ", " << east << ", " << north << endl;
+
+    foreach(CGisItemWpt * wpt, wpts)
+    {
+        wpt->saveTwoNav(out, dir);
+    }
+
+    file.close();
+
+    return true;
+}
+
+
+
+bool CTwoNavProject::load(const QString& filename)
+{
+    QDir dir(filename);
+
+    QStringList entries = dir.entryList(QDir::NoDotAndDotDot|QDir::Dirs|QDir::Files);
+    foreach(const QString &entry, entries)
+    {
+        QFileInfo fi(entry);
+
+        if(fi.suffix().toLower() == "key")
+        {
+            key = fi.baseName();
+            break;
+        }
+    }
+
+    foreach(const QString &entry, entries)
+    {
+        QFileInfo fi(entry);
+
+        if(fi.suffix().toLower() == "trk")
+        {
+            try
+            {
+                new CGisItemTrk(dir.absoluteFilePath(entry), this);
+            }
+            catch(int)
+            {
+                return false;
+            }
+        }
+        else if(fi.suffix().toLower() == "wpt")
+        {
+            if(!loadWpts(dir.absoluteFilePath(entry), dir))
+            {
+                return false;
+            }
+        }
+    }
+
+    return true;
+}
+
+
diff --git a/src/gis/tnv/CTwoNavProject.h b/src/gis/tnv/CTwoNavProject.h
new file mode 100644
index 0000000..457d6ec
--- /dev/null
+++ b/src/gis/tnv/CTwoNavProject.h
@@ -0,0 +1,77 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CTWONAVPROJECT_H
+#define CTWONAVPROJECT_H
+
+#include "gis/prj/IGisProject.h"
+
+class IDevice;
+class CGisItemTrk;
+class CGisItemWpt;
+class QDir;
+
+class CTwoNavProject : public IGisProject
+{
+public:
+    CTwoNavProject(const QString &filename, const IGisProject * project, IDevice * parent);
+    CTwoNavProject(const QString &filename, IDevice * parent);
+    virtual ~CTwoNavProject();
+
+    struct img_t
+    {
+        QString filename;
+        QString info;
+        QImage image;
+    };
+
+    struct wpt_t
+    {
+        wpt_t() : valid(false), lon(0), lat(0), ele(0), prox(0)
+        {
+        }
+        bool valid;
+        QDateTime time;
+        QString name;
+        QString comment;
+        QString symbol;
+        QString key;
+        QString url;
+
+        qreal lon;
+        qreal lat;
+        qreal ele;
+        qreal prox;
+
+        QDomDocument gpx;
+
+        QList<img_t> images;
+    };
+
+
+    bool save();
+    bool saveAs();
+
+private:
+    bool load(const QString& filename);
+    bool loadWpts(const QString& filename, const QDir& dir);
+    bool saveWpts(QList<CGisItemWpt *> &wpts, const QString &filename, const QDir& dir);
+};
+
+#endif //CTWONAVPROJECT_H
+
diff --git a/src/gis/tnv/serialization.cpp b/src/gis/tnv/serialization.cpp
new file mode 100644
index 0000000..9ffd32c
--- /dev/null
+++ b/src/gis/tnv/serialization.cpp
@@ -0,0 +1,753 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMainWindow.h"
+#include "GeoMath.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
+
+#include <QtWidgets>
+
+struct twonav_icon_t
+{
+    const char * twonav;
+    const char * qlgt;
+};
+
+static const twonav_icon_t TwoNavIcons[] =
+{
+    {"City (Capitol)","City (Capitol)"}
+    ,{"City (Large)","City (Large)"}
+    ,{"City (Medium)","City (Medium)"}
+    ,{"City (Small)","City (Small)"}
+    ,{"City (Small)","Small City"}
+    ,{"Closed Box","Geocache"}
+    ,{"Open Box","Geocache Found"}
+    ,{"Red Flag","Flag, Red"}
+    ,{"Blue Flag","Flag, Blue"}
+    ,{"Green Flag","Flag, Green"}
+    ,{"Red Booble","Pin, Red"}
+    ,{"Blue Booble","Pin, Blue"}
+    ,{"Green Booble","Pin, Green"}
+    ,{"Red Cube","Block, Red"}
+    ,{"Blue Cube","Block, Blue"}
+    ,{"Green Cube","Block, Green"}
+    ,{"Blue Diamond","Blue Diamond"}
+    ,{"Green Diamond","Green Diamond"}
+    ,{"Red Diamond","Red Diamond"}
+    ,{"Traditional Cache","Traditional Cache"}
+    ,{"Multi-cache","Multi-cache"}
+    ,{"Unknown Cache","Unknown Cache"}
+    ,{"Wherigo","Wherigo Cache"}
+    ,{"Event Cache","Event Cache"}
+    ,{"Earthcache","Earthcache"}
+    ,{"Letterbox","Letterbox Hybrid"}
+    ,{"Virtual Cache","Virtual Cache"}
+    ,{"Webcam Cache","Webcam Cache"}
+    ,{0,0}
+};
+
+
+static QStringList writeCompeTime( const QDateTime& t, bool isTrack)
+{
+    QStringList result;
+    QString dateFormat;
+    QString monthStr;
+
+    if(!t.isValid())
+    {
+        if(isTrack)
+        {
+            result << "01-Jan-1970" << "00:00:00.000";
+        }
+        else
+        {
+            result << "01-Jan-1970" << "00:00:00";
+        }
+        return result;
+    }
+
+    QDateTime timestamp = t.toTimeSpec(Qt::UTC);
+
+    switch(timestamp.date().month())
+    {
+    case 1:
+        monthStr = "Jan";
+        break;
+
+    case 2:
+        monthStr = "Feb";
+        break;
+
+    case 3:
+        monthStr = "Mar";
+        break;
+
+    case 4:
+        monthStr = "Apr";
+        break;
+
+    case 5:
+        monthStr = "May";
+        break;
+
+    case 6:
+        monthStr = "Jun";
+        break;
+
+    case 7:
+        monthStr = "Jul";
+        break;
+
+    case 8:
+        monthStr = "Aug";
+        break;
+
+    case 9:
+        monthStr = "Sep";
+        break;
+
+    case 10:
+        monthStr = "Oct";
+        break;
+
+    case 11:
+        monthStr = "Nov";
+        break;
+
+    case 12:
+        monthStr = "Dec";
+        break;
+    }
+
+    if(isTrack)
+    {
+        dateFormat = QString("dd-'%1'-yy").arg(monthStr);
+    }
+    else
+    {
+        dateFormat = QString("dd-'%1'-yyyy").arg(monthStr);
+    }
+
+    result << timestamp.toString(dateFormat);
+
+    if(isTrack)
+    {
+        result << timestamp.toString("hh:mm:ss.000");
+    }
+    else
+    {
+        result << timestamp.toString("hh:mm:ss");
+    }
+
+    return result;
+}
+
+static QDateTime readCompeTime(QString str, bool isTrack)
+{
+    QDateTime timestamp;
+    QRegExp re("([0-9]{2})-([A-Za-z]{3})-.*");
+
+    if(re.exactMatch(str))
+    {
+        QString monthNum;
+        QString monthStr = re.cap(2);
+
+        if(monthStr.toUpper() == "JAN")
+        {
+            monthNum = "01";
+        }
+        else if(monthStr.toUpper() == "FEB")
+        {
+            monthNum = "02";
+        }
+        else if(monthStr.toUpper() == "MAR")
+        {
+            monthNum = "03";
+        }
+        else if(monthStr.toUpper() == "APR")
+        {
+            monthNum = "04";
+        }
+        else if(monthStr.toUpper() == "MAY")
+        {
+            monthNum = "05";
+        }
+        else if(monthStr.toUpper() == "JUN")
+        {
+            monthNum = "06";
+        }
+        else if(monthStr.toUpper() == "JUL")
+        {
+            monthNum = "07";
+        }
+        else if(monthStr.toUpper() == "AUG")
+        {
+            monthNum = "08";
+        }
+        else if(monthStr.toUpper() == "SEP")
+        {
+            monthNum = "09";
+        }
+        else if(monthStr.toUpper() == "OCT")
+        {
+            monthNum = "10";
+        }
+        else if(monthStr.toUpper() == "NOV")
+        {
+            monthNum = "11";
+        }
+        else if(monthStr.toUpper() == "DEC")
+        {
+            monthNum = "12";
+        }
+
+        str.replace(monthStr, monthNum);
+
+        if(isTrack)
+        {
+            timestamp = QDateTime::fromString(str, "dd-MM-yy hh:mm:ss.zzz");
+            timestamp = timestamp.addYears(100);
+        }
+        else
+        {
+            timestamp = QDateTime::fromString(str, "dd-MM-yyyy hh:mm:ss");
+        }
+    }
+
+    timestamp.setTimeSpec(Qt::UTC);
+    return timestamp;
+}
+
+static QString iconTwoNav2QlGt(const QString& sym)
+{
+    int i = 0;
+    while(TwoNavIcons[i].qlgt)
+    {
+        if(sym == TwoNavIcons[i].twonav)
+        {
+            return TwoNavIcons[i].qlgt;
+        }
+
+        i++;
+    }
+
+    return sym;
+}
+
+
+static QString iconQlGt2TwoNav(const QString& sym)
+{
+    int i = 0;
+    while(TwoNavIcons[i].qlgt)
+    {
+        if(sym == TwoNavIcons[i].qlgt)
+        {
+            return TwoNavIcons[i].twonav;
+        }
+
+        i++;
+    }
+
+    return sym;
+}
+
+static QString makeUniqueName(const QString& name, const QDir& dir)
+{
+    int cnt = 0;
+
+    QFileInfo fi(name);
+    QString tmp(name);
+
+    while(dir.exists(tmp))
+    {
+        tmp = QString("%1_%2.%3").arg(fi.baseName()).arg(cnt++).arg(fi.completeSuffix());
+    }
+
+    return tmp;
+}
+
+
+
+bool CGisItemTrk::saveTwoNav(const QString &filename)
+{
+    QFile file(filename);
+    if(!file.open(QIODevice::WriteOnly))
+    {
+        QMessageBox::critical(&CMainWindow::self(), QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(filename), QMessageBox::Abort);
+        return false;
+    }
+
+    QTextStream out(&file);
+    out.setCodec(QTextCodec::codecForName("UTF-8"));
+    out << "B  UTF-8" << endl;
+    out << "G  WGS 84" << endl;
+    out << "U  1" << endl;
+
+    QString name = getName();
+    name = name.replace(" ","_");
+
+    QColor color = getColor();
+
+    QStringList list;
+    list << "C";
+    list << QString::number(color.red());
+    list << QString::number(color.green());
+    list << QString::number(color.blue());
+    list << "5";                 // ???
+    list << "1";                 // ???
+    out << list.join(" ") << endl;
+
+    out << "s " << name << endl;
+    out << "k " << getKey().item << endl;
+
+
+    foreach(const CGisItemTrk::trkseg_t& seg, trk.segs)
+    {
+        foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+        {
+            list.clear();
+
+            list << "T";
+            list << "A";
+            list << (trkpt.lat > 0 ? QString("%1%2N") : QString("%1%2S")).arg(trkpt.lat,0,'f').arg(QChar(186));
+            list << (trkpt.lon > 0 ? QString("%1%2E") : QString("%1%2W")).arg(trkpt.lon,0,'f').arg(QChar(186));
+            list << writeCompeTime(trkpt.time, true);
+            list << "s";
+            list << QString("%1").arg(trkpt.ele == NOINT ? 0 : trkpt.ele);
+            list << "0.000000";
+            list << "0.000000";
+            list << "0.000000";
+            list << "0";
+            list << "-1000.000000";
+            list << "-1.000000";
+            list << "-1";
+            list << "-1.000000";
+            list << "-1";
+            list << "-1";
+            list << "-1";
+            list << "-1.000000";
+
+            out << list.join(" ") << endl;
+        }
+    }
+
+    return true;
+}
+
+bool CGisItemTrk::readTwoNav(const QString& filename)
+{
+    QString line("start");
+
+    QFile file(filename);
+    if(!file.open(QIODevice::ReadOnly))
+    {
+        QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(filename),QMessageBox::Abort,QMessageBox::Abort);
+        return false;
+    }
+    QTextStream in(&file);
+    in.setCodec(QTextCodec::codecForName("UTF-8"));
+
+    trkseg_t seg;
+
+    while(!line.isEmpty())
+    {
+        line = in.readLine();
+        switch(line[0].toLatin1())
+        {
+        case 'B':
+        {
+            QString name        = line.mid(1).simplified();
+            QTextCodec * codec  = QTextCodec::codecForName(name.toLatin1());
+            if(codec)
+            {
+                in.setCodec(codec);
+            }
+            break;
+        }
+
+        case 'G':
+        {
+            QString name  = line.mid(1).simplified();
+            if(name != "WGS 84")
+            {
+                QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
+                return false;
+            }
+            break;
+        }
+
+        case 'U':
+        {
+            QString name  = line.mid(1).simplified();
+            if(name != "1")
+            {
+                QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
+                return false;
+            }
+            break;
+        }
+
+        case 'C':
+        {
+            QStringList values = line.split(' ', QString::SkipEmptyParts);
+            QColor c(values[1].toInt(),values[2].toInt(),values[3].toInt());
+            setColor(c);
+            break;
+        }
+
+        case 'T':
+        {
+            trkpt_t pt;
+            QStringList values = line.split(' ', QString::SkipEmptyParts);
+
+            if(values.size() < 8)
+            {
+                QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
+                return false;
+            }
+
+            QString lat = values[2].replace(QChar(186),"");
+            QString lon = values[3].replace(QChar(186),"");
+            GPS_Math_Str_To_Deg(lat + " " + lon, pt.lon, pt.lat);
+
+            pt.time = readCompeTime(values[4] + " " + values[5], true);
+            pt.ele = values[7].toFloat();
+
+            seg.pts << pt;
+            break;
+        }
+
+        case 's':
+        {
+            trk.name = line.mid(1).simplified();
+            trk.name = trk.name.replace("_", " ");
+            break;
+        }
+
+        case 'k':
+        {
+            key.item = line.mid(1).simplified();
+            break;
+        }
+        }
+    }
+    file.close();
+
+    trk.segs << seg;
+
+    if(trk.name.isEmpty())
+    {
+        QFileInfo fi(filename);
+        trk.name = fi.baseName();
+    }
+
+    deriveSecondaryData();
+
+    return true;
+}
+
+
+void CGisItemWpt::saveTwoNav(QTextStream& out, const QDir& dir)
+{
+    QString name = getName();
+    name = name.replace(" ","_");
+
+    QString comment = getComment();
+    comment = removeHtml(comment);
+    if(comment.isEmpty())
+    {
+        comment = getDescription();
+        comment = removeHtml(comment);
+    }
+    comment = comment.replace("\n","%0A%0D");
+
+    QStringList list;
+    list << "W";
+    list << name;
+    list << "A";
+    list << (wpt.lat > 0 ? QString("%1%2N") : QString("%1%2S")).arg(wpt.lat,0,'f').arg(QChar(186));
+    list << (wpt.lon > 0 ? QString("%1%2E") : QString("%1%2W")).arg(wpt.lon,0,'f').arg(QChar(186));
+    list << writeCompeTime(wpt.time, false);
+    list << QString("%1").arg(wpt.ele == NOINT ? 0 : wpt.ele);
+
+    out << list.join(" ") << " ";
+    out << comment << endl;
+
+    list.clear();
+    list << iconQlGt2TwoNav(getIconName());
+    list << "0";                 //test position
+    list << "-1.0";
+    list << "0";
+    list << QString("%1").arg(QColor(Qt::darkBlue).value());
+    list << "1";
+    list << "37";                // 1 Name 2 Beschreibung 4 Symbol 8 Hhe 16 URL 32 Radius
+    list << "";                  //wpt->link;
+    list << QString("%1").arg(proximity == NOFLOAT ? 0 : proximity,0,'f');
+    list << getKey().item;
+
+    out << "w ";
+    out << list.join(",");
+    out << endl;
+
+    foreach(const image_t &img, images)
+    {
+        QString fn = img.info;
+        if(fn.isEmpty())
+        {
+            fn = QString("picture.png");
+        }
+
+        QFileInfo fi(fn);
+
+        if(!(fi.completeSuffix().toLower() == "png"))
+        {
+            fn = fi.baseName() + ".png";
+        }
+
+        fn = makeUniqueName(fn, dir);
+        img.pixmap.save(dir.absoluteFilePath(fn));
+        out << "a " << ".\\" << fn << endl;
+    }
+
+    if(isGeocache())
+    {
+        // write geocache data
+        QDomDocument doc;
+        QDomElement gpxCache = doc.createElement("groundspeak:cache");
+        writeGcExt(gpxCache);
+        doc.appendChild(gpxCache);
+
+        out << "e" << endl;
+        out << doc.toString();
+        out << "ee" << endl;
+    }
+}
+
+bool CTwoNavProject::loadWpts(const QString& filename, const QDir& dir)
+{
+    wpt_t wpt;
+    QString line("start");
+    QFile file(filename);
+    if(!file.open(QIODevice::ReadOnly))
+    {
+        QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(filename),QMessageBox::Abort,QMessageBox::Abort);
+        return false;
+    }
+    QTextStream in(&file);
+    in.setCodec(QTextCodec::codecForName("UTF-8"));
+
+    while(!line.isEmpty())
+    {
+        line = in.readLine();
+
+        switch(line[0].toLatin1())
+        {
+        case 'B':
+        {
+            QString name        = line.mid(1).simplified();
+            QTextCodec * codec  = QTextCodec::codecForName(name.toLatin1());
+            if(codec)
+            {
+                in.setCodec(codec);
+            }
+            break;
+        }
+
+        case 'G':
+        {
+            QString name  = line.mid(1).simplified();
+            if(name != "WGS 84")
+            {
+                QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
+                return false;
+            }
+            break;
+        }
+
+        case 'U':
+        {
+            QString name  = line.mid(1).simplified();
+            if(name != "1")
+            {
+                QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
+                return false;
+            }
+            break;
+        }
+
+        case 'W':
+        {
+            if(wpt.valid)
+            {
+                new CGisItemWpt(wpt, this);
+            }
+
+            wpt = wpt_t();
+            QStringList values = line.split(' ', QString::SkipEmptyParts);
+
+            if(values.size() < 8)
+            {
+                QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
+                return false;
+            }
+
+            wpt.name = values[1];
+
+            QString lat = values[3].replace(QChar(186),"");
+            QString lon = values[4].replace(QChar(186),"");
+            GPS_Math_Str_To_Deg(lat + " " + lon, wpt.lon, wpt.lat);
+
+            wpt.time = readCompeTime(values[5] + " " + values[6], false);
+            wpt.ele  = values[7].toFloat();
+
+            if(values.size() > 7)
+            {
+                QStringList list = values.mid(8);
+                wpt.comment = list.join(" ");
+            }
+
+            break;
+        }
+
+        case 'w':
+        {
+            QStringList values = line.mid(1).simplified().split(',', QString::KeepEmptyParts);
+
+            if(values.size() < 10)
+            {
+                QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
+                return false;
+            }
+
+
+            wpt.symbol  = iconTwoNav2QlGt(values[0]);
+
+            wpt.url     = values[7];
+            wpt.prox    = values[8].toFloat();
+            wpt.key     = values[9];
+
+            if(wpt.prox == 0)
+            {
+                wpt.prox = NOFLOAT;
+            }
+            if(wpt.ele == 0)
+            {
+                wpt.ele = NOINT;
+            }
+            if(wpt.key == "0")
+            {
+                wpt.key.clear();
+            }
+
+            wpt.name = wpt.name.replace("_", " ");
+
+            wpt.valid = true;
+            break;
+        }
+
+        case 'e':
+        {
+            QString str;
+
+            while(!in.atEnd())
+            {
+                line = in.readLine();
+                if(line == "ee")
+                {
+                    break;
+                }
+
+                str += line;
+            }
+
+
+            QString errorMsg;
+            int errorLine = 0;
+            int errorColumn = 0;
+            wpt.gpx.setContent(str, &errorMsg, &errorLine, &errorColumn);
+            break;
+        }
+
+        case 'a':
+        {
+            img_t img;
+            QStringList values = line.mid(1).simplified().split(',', QString::KeepEmptyParts);
+            if(values.size() < 1)
+            {
+                QMessageBox::information(&CMainWindow::self(),QObject::tr("Error..."), QObject::tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
+                return false;
+            }
+
+            QString fn = values[0].simplified();
+
+#ifndef WIN32
+            fn = fn.replace("\\","/");
+#endif
+            QFileInfo fi(dir.absoluteFilePath(fn));
+            img.image.load(dir.absoluteFilePath(fn));
+            if(!img.image.isNull())
+            {
+                img.filename    = fi.fileName();
+                img.info        = fi.baseName();
+                wpt.images << img;
+            }
+
+            break;
+        }
+        }
+    }
+
+    if(wpt.valid)
+    {
+        new CGisItemWpt(wpt, this);
+    }
+
+    return true;
+}
+
+void CGisItemWpt::readTwoNav(const CTwoNavProject::wpt_t &tnvWpt)
+{
+    wpt.lon     = tnvWpt.lon;
+    wpt.lat     = tnvWpt.lat;
+    wpt.ele     = tnvWpt.ele;
+    proximity   = tnvWpt.prox;
+    wpt.time    = tnvWpt.time;
+    wpt.name    = tnvWpt.name;
+    wpt.cmt     = tnvWpt.comment;
+    wpt.sym     = tnvWpt.symbol;
+    key.item    = tnvWpt.key;
+
+    foreach(const CTwoNavProject::img_t& img, tnvWpt.images)
+    {
+        CGisItemWpt::image_t image;
+        image.fileName  = img.filename;
+        image.info      = img.info;
+        image.pixmap    = img.image;
+        images << image;
+    }
+
+    const QDomNode& xmlCache = tnvWpt.gpx.namedItem("groundspeak:cache");
+    if(!xmlCache.isNull())
+    {
+        readGcExt(xmlCache);
+    }
+
+
+    setIcon();
+}
diff --git a/src/gis/trk/CDetailsTrk.cpp b/src/gis/trk/CDetailsTrk.cpp
index 3081cb0..b2da483 100644
--- a/src/gis/trk/CDetailsTrk.cpp
+++ b/src/gis/trk/CDetailsTrk.cpp
@@ -102,17 +102,17 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
     checkSpeed->setChecked(cfg.value("showSpeed", true).toBool());
     checkProgress->setChecked(cfg.value("showProgress", true).toBool());
     splitter->restoreState(cfg.value("splitterSizes").toByteArray());
+    treeWidget->header()->restoreState(cfg.value("trackPointListState").toByteArray());
     cfg.endGroup();
 
     connect(checkProfile, SIGNAL(clicked()), this, SLOT(slotShowPlots()));
     connect(checkSpeed, SIGNAL(clicked()), this, SLOT(slotShowPlots()));
     connect(checkProgress, SIGNAL(clicked()), this, SLOT(slotShowPlots()));
     connect(comboColor, SIGNAL(currentIndexChanged(int)), this, SLOT(slotColorChanged(int)));
-    connect(lineName, SIGNAL(returnPressed()), this, SLOT(slotNameChanged()));
-    connect(lineName, SIGNAL(textChanged(QString)), this, SLOT(slotNameChanged(QString)));
     connect(toolLock, SIGNAL(toggled(bool)), this, SLOT(slotChangeReadOnlyMode(bool)));
     connect(treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemSelectionChanged()));
     connect(textCmtDesc, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotLinkActivated(QUrl)));
+    connect(labelInfo, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
 
     connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
 
@@ -129,6 +129,7 @@ CDetailsTrk::~CDetailsTrk()
     cfg.setValue("showSpeed", checkSpeed->isChecked());
     cfg.setValue("showProgress", checkProgress->isChecked());
     cfg.setValue("splitterSizes", splitter->saveState());
+    cfg.setValue("trackPointListState", treeWidget->header()->saveState());
     cfg.endGroup();
 }
 
@@ -157,8 +158,7 @@ void CDetailsTrk::setupGui()
         labelTainted->hide();
     }
 
-    labelInfo->setText(trk.getInfo());
-    lineName->setEnabled(!isReadOnly);
+    labelInfo->setText(trk.getInfo(true));
     comboColor->setCurrentIndex(trk.getColorIdx());
     comboColor->setEnabled(!isReadOnly);
     toolLock->setChecked(isReadOnly);
@@ -260,8 +260,6 @@ void CDetailsTrk::setupGui()
     treeWidget->addTopLevelItems(items);
     treeWidget->header()->resizeSections(QHeaderView::ResizeToContents);
 
-    lineName->setText(trk.getName());
-
     textCmtDesc->document()->clear();
     textCmtDesc->append(IGisItem::createText(isReadOnly, trk.getComment(), trk.getDescription(), trk.getLinks()));
     textCmtDesc->moveCursor (QTextCursor::Start);
@@ -347,36 +345,6 @@ void CDetailsTrk::slotChangeReadOnlyMode(bool on)
     setupGui();
 }
 
-void CDetailsTrk::slotNameChanged(const QString& name)
-{
-    QPalette palette = lineName->palette();
-    if(trk.getName() != name)
-    {
-        palette.setColor(QPalette::Base, QColor(255, 128, 128));
-    }
-    else
-    {
-        palette.setColor(QPalette::Base, QColor(255, 255, 255));
-    }
-    lineName->setPalette(palette);
-}
-
-
-void CDetailsTrk::slotNameChanged()
-{
-    QString name  = lineName->text();
-    QString _name_ = trk.getName();
-
-    QPalette palette = lineName->palette();
-
-    if(_name_ != name)
-    {
-        trk.setName(name);
-        palette.setColor(QPalette::Base, QColor(128, 255, 128));
-    }
-
-    lineName->setPalette(palette);
-}
 
 void CDetailsTrk::slotItemSelectionChanged()
 {
@@ -388,11 +356,25 @@ void CDetailsTrk::slotItemSelectionChanged()
     }
 }
 
+void CDetailsTrk::slotLinkActivated(const QString& url)
+{
+    if(url == "name")
+    {
+        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, trk.getName());
+        if(name.isEmpty())
+        {
+            return;
+        }
+        trk.setName(name);
+        setupGui();
+    }
+}
+
 void CDetailsTrk::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
     {
-        CTextEditWidget dlg(0);
+        CTextEditWidget dlg(this);
         dlg.setHtml(trk.getComment());
         if(dlg.exec() == QDialog::Accepted)
         {
@@ -402,7 +384,7 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
     }
     else if(url.toString() == "description")
     {
-        CTextEditWidget dlg(0);
+        CTextEditWidget dlg(this);
         dlg.setHtml(trk.getDescription());
         if(dlg.exec() == QDialog::Accepted)
         {
@@ -413,7 +395,7 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
     else if(url.toString() == "links")
     {
         QList<IGisItem::link_t> links = trk.getLinks();
-        CLinksDialog dlg(links, 0);
+        CLinksDialog dlg(links, this);
         if(dlg.exec() == QDialog::Accepted)
         {
             trk.setLinks(links);
diff --git a/src/gis/trk/CDetailsTrk.h b/src/gis/trk/CDetailsTrk.h
index 2ac5ece..a4bcfd0 100644
--- a/src/gis/trk/CDetailsTrk.h
+++ b/src/gis/trk/CDetailsTrk.h
@@ -41,10 +41,9 @@ private slots:
     void slotShowPlots();
     void slotColorChanged(int idx);
     void slotChangeReadOnlyMode(bool on);
-    void slotNameChanged();
-    void slotNameChanged(const QString& name);
     void slotItemSelectionChanged();
     void slotLinkActivated(const QUrl& url);
+    void slotLinkActivated(const QString& url);
 
 private:
     enum columns_t
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index fba2070..d3a9e80 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "CMainWindow.h"
+#include "CMainWindow.h"
 #include "GeoMath.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
@@ -156,6 +157,7 @@ CGisItemTrk::CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject *project, int
     *this = parentTrk;
     key.project = project->getKey();
     key.device  = project->getDeviceKey();
+    registeredPlots.clear();
 
     if(clone)
     {
@@ -204,6 +206,25 @@ CGisItemTrk::CGisItemTrk(const QDomNode& xml, IGisProject *project)
     updateDecoration(eMarkNone, eMarkNone);
 }
 
+CGisItemTrk::CGisItemTrk(const QString& filename, IGisProject * project)
+    : IGisItem(project, eTypeTrk, project->childCount())
+    , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , drawMode(eDrawNormal)
+    , mouseMoveFocus(0)
+    , mouseClickFocus(0)
+{
+    // --- start read and process data ----
+    setColor(penForeground.color());
+    if(!readTwoNav(filename))
+    {
+        throw -1;
+    }
+    // --- stop read and process data ----
+
+    setupHistory();
+    updateDecoration(eMarkNone, eMarkNone);
+}
+
 CGisItemTrk::CGisItemTrk(const history_t& hist, IGisProject * project)
     : IGisItem(project, eTypeTrk, project->childCount())
     , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
@@ -318,10 +339,19 @@ void CGisItemTrk::unregisterPlot(IPlot * plot)
 
 
 
-QString CGisItemTrk::getInfo() const
+QString CGisItemTrk::getInfo(bool allowEdit) const
 {
     QString val1, unit1, val2, unit2;
-    QString str = "<div style='font-weight: bold;'>" + getName() + "</div>";
+    QString str = "<div>";
+
+    if(allowEdit)
+    {
+        str += "<b>" + toLink(isReadOnly(), "name", getName(), "") + "</b>";
+    }
+    else
+    {
+        str += "<div style='font-weight: bold;'>" + getName() + "</div>";
+    }
 
     if(cntVisiblePoints == 0)
     {
@@ -375,7 +405,7 @@ QString CGisItemTrk::getInfo() const
     str += "<br/>\n";
     str += QObject::tr("Points: %1 (%2)").arg(cntVisiblePoints).arg(cntTotalPoints);
 
-
+    str += "</div>";
     return str;
 }
 
@@ -436,7 +466,14 @@ QString CGisItemTrk::getInfoRange()
 QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
 {
     QString str, val1, unit1;
-    str += IUnit::datetime2string(pt.time, false, QPointF(pt.lon, pt.lat) * DEG_TO_RAD) + "\n";
+    if(totalElapsedSeconds != 0)
+    {
+        str += IUnit::datetime2string(pt.time, false, QPointF(pt.lon, pt.lat) * DEG_TO_RAD) + "\n";
+    }
+    else
+    {
+        str += "\n";
+    }
     IUnit::self().meter2elevation(pt.ele, val1, unit1);
     str += QObject::tr("Ele.: %1 %2").arg(val1).arg(unit1);
     if(pt.slope1 != NOFLOAT)
@@ -906,7 +943,7 @@ bool CGisItemTrk::cut()
     }
 
     QString name1 = getName() + QString(" (%1 - %2)").arg(0).arg(mouseClickFocus->idxTotal);
-    name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
+    name1 = QInputDialog::getText(&CMainWindow::self(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
     if(name1.isEmpty())
     {
         return false;
@@ -921,7 +958,7 @@ bool CGisItemTrk::cut()
     new CGisItemTrk(name1, 0, mouseClickFocus->idxTotal, trk, project);
 
     name1 = getName() + QString(" (%1 - %2)").arg(mouseClickFocus->idxTotal).arg(cntTotalPoints-1);
-    name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
+    name1 = QInputDialog::getText(&CMainWindow::self(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
     if(name1.isEmpty())
     {
         return false;
@@ -940,7 +977,7 @@ bool CGisItemTrk::cut()
 
 void CGisItemTrk::reverse()
 {
-    QString name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + "_rev");
+    QString name1 = QInputDialog::getText(&CMainWindow::self(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + "_rev");
     if(name1.isEmpty())
     {
         return;
@@ -990,7 +1027,7 @@ void CGisItemTrk::combine()
         return;
     }
 
-    CCombineTrk dlg(*this, *project, 0);
+    CCombineTrk dlg(*this, *project, &CMainWindow::self());
     dlg.exec();
 
     QList<IGisItem::key_t> keys = dlg.getTrackKeys();
@@ -999,7 +1036,7 @@ void CGisItemTrk::combine()
         return;
     }
 
-    QString name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + " & other");
+    QString name1 = QInputDialog::getText(&CMainWindow::self(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + " & other");
     if(name1.isEmpty())
     {
         return;
@@ -1145,7 +1182,7 @@ void CGisItemTrk::copySelectedPoints()
     }
 
     QString name1 = getName() + QString(" (%1 - %2)").arg(idx1).arg(idx2);
-    name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
+    name1 = QInputDialog::getText(&CMainWindow::self(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
     if(name1.isEmpty())
     {
         return;
@@ -1163,6 +1200,11 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
         return;
     }
 
+    if(trk.segs.isEmpty())
+    {
+        return;
+    }
+
     QPointF pt1;
     QPointF p1 = viewport[0];
     QPointF p2 = viewport[2];
@@ -1271,6 +1313,11 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
 void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 {
+    if(trk.segs.isEmpty())
+    {
+        return;
+    }
+
     if(hasUserFocus() && mouseMoveFocus)
     {
         // derive anchor
@@ -1289,7 +1336,11 @@ void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
         // create info box
         int w = rectText.width()  + 5 + 5;
-        int h = rectText.height() + 5 + 5 + 2*(fm.height() + 8);
+        int h = rectText.height() + 5 + (fm.height() + 8);
+        if(totalElapsedSeconds != 0)
+        {
+            h += 5 + fm.height() + 8;
+        }
 
 
         QRect box(0, 0, w, h);
@@ -1314,40 +1365,54 @@ void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
         p.save();
         p.translate(box.topLeft());
+
         // draw progress bar distance
         p.translate(5,5);
-        QRect rectBar1(0,0,rectText.width(), 5);
-        p.setPen(Qt::black);
-        p.setBrush(Qt::NoBrush);
+        QRect rectBar1(0,0,rectText.width(), fm.height());
+        p.setPen(QColor(150,150,255));
+        p.setBrush(QColor(150,150,255));
         p.drawRect(rectBar1);
         qreal d = mouseMoveFocus->distance * rectBar1.width() / totalDistance;
-        p.drawRect(d-1,-1, 3, 7);
+        p.setPen(QColor(150,255,150));
+        p.setBrush(QColor(150,255,150));
+        p.drawRect(0,0,d,fm.height());
+
 
         IUnit::self().meter2distance(mouseMoveFocus->distance, val1, unit1);
         IUnit::self().meter2distance(totalDistance - mouseMoveFocus->distance, val2, unit2);
         p.setPen(Qt::darkBlue);
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignLeft, QString("%1%2").arg(val1).arg(unit1));
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignCenter, QString("%1%").arg(mouseMoveFocus->distance * 100 / totalDistance, 0, 'f', 0));
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignRight, QString("%1%2").arg(val2).arg(unit2));
+        p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignLeft, QString("%1%2").arg(val1).arg(unit1));
+        p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignCenter, QString("%1%").arg(mouseMoveFocus->distance * 100 / totalDistance, 0, 'f', 0));
+        p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignRight, QString("%1%2").arg(val2).arg(unit2));
 
         // draw progress bar time
-        p.translate(0,fm.height() + 8);
-        QRect rectBar2(0,0,rectText.width(), 5);
-        p.setPen(Qt::black);
-        p.setBrush(Qt::NoBrush);
-        p.drawRect(rectBar2);
-        qreal t = mouseMoveFocus->elapsedSecondsMoving * rectBar2.width() / totalElapsedSecondsMoving;
-        p.drawRect(t-1,-1, 3, 7);
-
-        IUnit::self().seconds2time(mouseMoveFocus->elapsedSecondsMoving, val1, unit1);
-        IUnit::self().seconds2time(totalElapsedSecondsMoving - mouseMoveFocus->elapsedSecondsMoving, val2, unit2);
-        p.setPen(Qt::darkBlue);
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignLeft, QString("%1%2").arg(val1).arg(unit1));
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignCenter, QString("%1%").arg(mouseMoveFocus->elapsedSecondsMoving * 100 / totalElapsedSecondsMoving, 0, 'f', 0));
-        p.drawText(QRect(0,7,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignRight, QString("%1%2").arg(val2).arg(unit2));
-
+        if(totalElapsedSeconds != 0)
+        {
+            p.translate(0,fm.height() + 5);
+            QRect rectBar2(0,0,rectText.width(), fm.height());
+            p.setPen(QColor(150,150,255));
+            p.setBrush(QColor(150,150,255));
+            p.drawRect(rectBar2);
+            qreal t = mouseMoveFocus->elapsedSecondsMoving * rectBar2.width() / totalElapsedSecondsMoving;
+            p.setPen(QColor(150,255,150));
+            p.setBrush(QColor(150,255,150));
+            p.drawRect(0,0,t,fm.height());
+
+            IUnit::self().seconds2time(mouseMoveFocus->elapsedSecondsMoving, val1, unit1);
+            IUnit::self().seconds2time(totalElapsedSecondsMoving - mouseMoveFocus->elapsedSecondsMoving, val2, unit2);
+            p.setPen(Qt::darkBlue);
+            p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignLeft, QString("%1%2").arg(val1).arg(unit1));
+            p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignCenter, QString("%1%").arg(mouseMoveFocus->elapsedSecondsMoving * 100 / totalElapsedSecondsMoving, 0, 'f', 0));
+            p.drawText(QRect(0,1,rectBar1.width(),fm.height()), Qt::AlignVCenter|Qt::AlignRight, QString("%1%2").arg(val2).arg(unit2));
+
+            p.translate(0,fm.height() + 5);
+        }
+        else
+        {
+            p.translate(0, 5);
+        }
         // draw text
-        p.translate(0,fm.height() + 8);
+        p.translate(0, 3);
         p.setPen(Qt::darkBlue);
         p.drawText(rectText, Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap,str);
 
@@ -1478,7 +1543,7 @@ void CGisItemTrk::setIcon(const QString& c)
     mask.setMask( icon.createMaskFromColor( Qt::transparent ) );
     icon = mask.scaled(22,22, Qt::KeepAspectRatio, Qt::SmoothTransformation);
 
-    QTreeWidgetItem::setIcon(CGisListWks::eColumnName,icon);
+    QTreeWidgetItem::setIcon(CGisListWks::eColumnIcon,icon);
 }
 
 void CGisItemTrk::setMouseFocusByDistance(qreal dist, focusmode_e mode, IPlot *initiator)
diff --git a/src/gis/trk/CGisItemTrk.h b/src/gis/trk/CGisItemTrk.h
index d0de51d..006f69e 100644
--- a/src/gis/trk/CGisItemTrk.h
+++ b/src/gis/trk/CGisItemTrk.h
@@ -32,6 +32,7 @@ class CDetailsTrk;
 class CScrOptTrk;
 class QSqlDatabase;
 class CQlgtTrack;
+class QDir;
 
 #define TRK_N_COLORS 17
 
@@ -100,28 +101,61 @@ public:
      */
     CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project);
     /**
-       @brief CGisItemTrk
+       @brief Clone QLandkarte GT track
        @param trk1
      */
     CGisItemTrk(const CQlgtTrack& trk1);
+    /**
+       @brief Load track from file (e.g. TwoNav *trk)
+       @param filename
+       @param project
+     */
+    CGisItemTrk(const QString& filename, IGisProject * project);
+
     virtual ~CGisItemTrk();
 
+    /**
+       @brief Save track to GPX tree
+       @param gpx   The <gpx> node to append by the track
+     */
+    void save(QDomNode& gpx);
+    /**
+       @brief Save track to TwoNav track file
+       @param dir   the path to store the file
+     */
+    bool saveTwoNav(const QString& filename);
+    /**
+       @brief Read serialized track from a binary data stream
+       @param stream  the data stream to read from
+       @return A reference to the stream
+     */
     QDataStream& operator<<(QDataStream& stream);
+    /**
+       @brief Serialize track into a binary data stream
+       @param stream  the data stream to write to.
+       @return A reference to the stream
+     */
     QDataStream& operator>>(QDataStream& stream);
 
     const QString& getName() const
     {
         return trk.name;
     }
-    int getColorIdx()
+    int getColorIdx() const
     {
         return colorIdx;
     }
-    QString getInfo() const;
+
+    const QColor& getColor() const
+    {
+        return color;
+    }
+
+    QString getInfo(bool allowEdit = false) const;
     QString getInfoRange();
     QString getInfoTrkPt(const trkpt_t& pt);
     QString getInfoProgress(const trkpt_t& pt);
-    quint32 getTotalElapsedSeconds()
+    quint32 getTotalElapsedSeconds() const
     {
         return totalElapsedSeconds;
     }
@@ -163,8 +197,6 @@ public:
     void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
     void drawHighlight(QPainter& p);
     void drawRange(QPainter& p);
-    void save(QDomNode& gpx);
-
 
     /**
        @brief Switch user focus on and off.
@@ -373,6 +405,12 @@ private:
        @param trk   The track structure to fill
      */
     void readTrk(const QDomNode& xml, trk_t& trk);
+
+    /**
+       @brief Restore track from TwoNav *trk file
+       @param filename
+     */
+    bool readTwoNav(const QString& filename);
     /**
        @brief Derive secondary data from the track data
 
diff --git a/src/gis/trk/IDetailsTrk.ui b/src/gis/trk/IDetailsTrk.ui
index 9c8f1ec..05c006c 100644
--- a/src/gis/trk/IDetailsTrk.ui
+++ b/src/gis/trk/IDetailsTrk.ui
@@ -147,322 +147,401 @@
        </item>
       </layout>
      </widget>
-     <widget class="QTabWidget" name="tabWidget">
-      <property name="currentIndex">
-       <number>0</number>
-      </property>
-      <widget class="QWidget" name="tab_3">
-       <attribute name="title">
-        <string>Info</string>
-       </attribute>
-       <layout class="QHBoxLayout" name="horizontalLayout_5">
-        <property name="spacing">
-         <number>3</number>
-        </property>
-        <property name="leftMargin">
-         <number>0</number>
-        </property>
-        <property name="topMargin">
-         <number>0</number>
-        </property>
-        <property name="rightMargin">
-         <number>0</number>
-        </property>
-        <property name="bottomMargin">
-         <number>0</number>
-        </property>
-        <item>
-         <widget class="CPlotTrack" name="plotTrack" native="true"/>
-        </item>
-        <item>
-         <layout class="QVBoxLayout" name="verticalLayout_2">
+     <widget class="QWidget" name="layoutWidget">
+      <layout class="QHBoxLayout" name="horizontalLayout_6">
+       <property name="spacing">
+        <number>3</number>
+       </property>
+       <item>
+        <widget class="QFrame" name="frame">
+         <property name="frameShape">
+          <enum>QFrame::StyledPanel</enum>
+         </property>
+         <property name="frameShadow">
+          <enum>QFrame::Raised</enum>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_7">
+          <property name="spacing">
+           <number>3</number>
+          </property>
+          <property name="leftMargin">
+           <number>3</number>
+          </property>
+          <property name="topMargin">
+           <number>3</number>
+          </property>
+          <property name="rightMargin">
+           <number>3</number>
+          </property>
+          <property name="bottomMargin">
+           <number>3</number>
+          </property>
           <item>
-           <layout class="QHBoxLayout" name="horizontalLayout">
-            <item>
-             <widget class="QComboBox" name="comboColor"/>
-            </item>
-            <item>
-             <widget class="QLineEdit" name="lineName"/>
-            </item>
-           </layout>
+           <widget class="QGroupBox" name="groupBox">
+            <property name="title">
+             <string>Graph Control</string>
+            </property>
+            <layout class="QHBoxLayout" name="horizontalLayout">
+             <property name="spacing">
+              <number>3</number>
+             </property>
+             <property name="leftMargin">
+              <number>3</number>
+             </property>
+             <property name="topMargin">
+              <number>3</number>
+             </property>
+             <property name="rightMargin">
+              <number>3</number>
+             </property>
+             <property name="bottomMargin">
+              <number>3</number>
+             </property>
+             <item>
+              <widget class="QCheckBox" name="checkProfile">
+               <property name="text">
+                <string>Profile</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QCheckBox" name="checkSpeed">
+               <property name="text">
+                <string>Speed</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QCheckBox" name="checkProgress">
+               <property name="text">
+                <string>Progress</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
           </item>
           <item>
-           <layout class="QHBoxLayout" name="horizontalLayout_4">
-            <item>
-             <widget class="QToolButton" name="toolLock">
+           <widget class="QGroupBox" name="groupBox_2">
+            <property name="title">
+             <string>Track</string>
+            </property>
+            <layout class="QVBoxLayout" name="verticalLayout_8">
+             <property name="spacing">
+              <number>3</number>
+             </property>
+             <property name="leftMargin">
+              <number>3</number>
+             </property>
+             <property name="topMargin">
+              <number>3</number>
+             </property>
+             <property name="rightMargin">
+              <number>3</number>
+             </property>
+             <property name="bottomMargin">
+              <number>3</number>
+             </property>
+             <item>
+              <layout class="QHBoxLayout" name="horizontalLayout_4">
+               <property name="spacing">
+                <number>3</number>
+               </property>
+               <item>
+                <widget class="QToolButton" name="toolLock">
+                 <property name="text">
+                  <string>...</string>
+                 </property>
+                 <property name="icon">
+                  <iconset resource="../../resources.qrc">
+                   <normaloff>:/icons/32x32/UnLock.png</normaloff>
+                   <normalon>:/icons/32x32/Lock.png</normalon>:/icons/32x32/UnLock.png</iconset>
+                 </property>
+                 <property name="iconSize">
+                  <size>
+                   <width>22</width>
+                   <height>22</height>
+                  </size>
+                 </property>
+                 <property name="checkable">
+                  <bool>true</bool>
+                 </property>
+                 <property name="autoRaise">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <widget class="QLabel" name="labelTainted">
+                 <property name="maximumSize">
+                  <size>
+                   <width>25</width>
+                   <height>25</height>
+                  </size>
+                 </property>
+                 <property name="text">
+                  <string/>
+                 </property>
+                 <property name="pixmap">
+                  <pixmap resource="../../resources.qrc">:/icons/32x32/Tainted.png</pixmap>
+                 </property>
+                 <property name="scaledContents">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <widget class="QComboBox" name="comboColor">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </item>
+             <item>
+              <widget class="QLabel" name="labelInfo">
+               <property name="text">
+                <string>-</string>
+               </property>
+               <property name="alignment">
+                <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <spacer name="verticalSpacer">
+               <property name="orientation">
+                <enum>Qt::Vertical</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>20</width>
+                 <height>40</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QTabWidget" name="tabWidget">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="currentIndex">
+          <number>0</number>
+         </property>
+         <widget class="QWidget" name="tab_3">
+          <attribute name="title">
+           <string>Info</string>
+          </attribute>
+          <layout class="QHBoxLayout" name="horizontalLayout_5">
+           <property name="spacing">
+            <number>3</number>
+           </property>
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="CPlotTrack" name="plotTrack" native="true"/>
+           </item>
+           <item>
+            <widget class="QTextBrowser" name="textCmtDesc"/>
+           </item>
+          </layout>
+         </widget>
+         <widget class="QWidget" name="tab">
+          <attribute name="title">
+           <string>Points</string>
+          </attribute>
+          <layout class="QVBoxLayout" name="verticalLayout_4">
+           <property name="spacing">
+            <number>0</number>
+           </property>
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QTreeWidget" name="treeWidget">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="alternatingRowColors">
+              <bool>true</bool>
+             </property>
+             <property name="rootIsDecorated">
+              <bool>false</bool>
+             </property>
+             <property name="itemsExpandable">
+              <bool>false</bool>
+             </property>
+             <attribute name="headerCascadingSectionResizes">
+              <bool>false</bool>
+             </attribute>
+             <attribute name="headerDefaultSectionSize">
+              <number>50</number>
+             </attribute>
+             <column>
               <property name="text">
-               <string>...</string>
-              </property>
-              <property name="icon">
-               <iconset resource="../../resources.qrc">
-                <normaloff>:/icons/32x32/UnLock.png</normaloff>
-                <normalon>:/icons/32x32/Lock.png</normalon>:/icons/32x32/UnLock.png</iconset>
-              </property>
-              <property name="iconSize">
-               <size>
-                <width>22</width>
-                <height>22</height>
-               </size>
-              </property>
-              <property name="checkable">
-               <bool>true</bool>
-              </property>
-              <property name="autoRaise">
-               <bool>true</bool>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QLabel" name="labelTainted">
-              <property name="maximumSize">
-               <size>
-                <width>25</width>
-                <height>25</height>
-               </size>
+               <string notr="true">#</string>
               </property>
+             </column>
+             <column>
               <property name="text">
-               <string/>
+               <string>Time</string>
               </property>
-              <property name="pixmap">
-               <pixmap resource="../../resources.qrc">:/icons/32x32/Tainted.png</pixmap>
+             </column>
+             <column>
+              <property name="text">
+               <string>Ele.</string>
               </property>
-              <property name="scaledContents">
-               <bool>true</bool>
+             </column>
+             <column>
+              <property name="text">
+               <string>Delta</string>
               </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QCheckBox" name="checkProfile">
+             </column>
+             <column>
               <property name="text">
-               <string>Profile</string>
+               <string>Dist.</string>
               </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QCheckBox" name="checkSpeed">
+             </column>
+             <column>
               <property name="text">
                <string>Speed</string>
               </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QCheckBox" name="checkProgress">
+             </column>
+             <column>
               <property name="text">
-               <string>Progress</string>
+               <string>Slope</string>
               </property>
-             </widget>
-            </item>
-            <item>
-             <spacer name="horizontalSpacer_2">
-              <property name="orientation">
-               <enum>Qt::Horizontal</enum>
+             </column>
+             <column>
+              <property name="text">
+               <string>Ascend</string>
               </property>
-              <property name="sizeHint" stdset="0">
-               <size>
-                <width>40</width>
-                <height>20</height>
-               </size>
+             </column>
+             <column>
+              <property name="text">
+               <string>Descend</string>
               </property>
-             </spacer>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <widget class="QLabel" name="labelInfo">
-            <property name="text">
-             <string>-</string>
-            </property>
-            <property name="alignment">
-             <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <spacer name="verticalSpacer">
-            <property name="orientation">
-             <enum>Qt::Vertical</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>20</width>
-              <height>40</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-         </layout>
-        </item>
-        <item>
-         <widget class="QTextBrowser" name="textCmtDesc"/>
-        </item>
-       </layout>
-      </widget>
-      <widget class="QWidget" name="tab">
-       <attribute name="title">
-        <string>Points</string>
-       </attribute>
-       <layout class="QVBoxLayout" name="verticalLayout_4">
-        <property name="spacing">
-         <number>0</number>
-        </property>
-        <property name="leftMargin">
-         <number>0</number>
-        </property>
-        <property name="topMargin">
-         <number>0</number>
-        </property>
-        <property name="rightMargin">
-         <number>0</number>
-        </property>
-        <property name="bottomMargin">
-         <number>0</number>
-        </property>
-        <item>
-         <widget class="QTreeWidget" name="treeWidget">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="alternatingRowColors">
-           <bool>true</bool>
-          </property>
-          <property name="rootIsDecorated">
-           <bool>false</bool>
-          </property>
-          <property name="itemsExpandable">
-           <bool>false</bool>
-          </property>
-          <attribute name="headerCascadingSectionResizes">
-           <bool>false</bool>
-          </attribute>
-          <attribute name="headerDefaultSectionSize">
-           <number>50</number>
+             </column>
+             <column>
+              <property name="text">
+               <string>Position</string>
+              </property>
+             </column>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+         <widget class="QWidget" name="tabFilter">
+          <attribute name="title">
+           <string>Filter</string>
           </attribute>
-          <column>
-           <property name="text">
-            <string notr="true">#</string>
+          <layout class="QVBoxLayout" name="verticalLayout_6">
+           <property name="spacing">
+            <number>0</number>
            </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Time</string>
+           <property name="leftMargin">
+            <number>0</number>
            </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Ele.</string>
+           <property name="topMargin">
+            <number>0</number>
            </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Delta</string>
+           <property name="rightMargin">
+            <number>0</number>
            </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Dist.</string>
+           <property name="bottomMargin">
+            <number>0</number>
            </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Speed</string>
-           </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Slope</string>
+           <item>
+            <widget class="QTreeWidget" name="treeFilter">
+             <property name="selectionMode">
+              <enum>QAbstractItemView::NoSelection</enum>
+             </property>
+             <attribute name="headerVisible">
+              <bool>false</bool>
+             </attribute>
+             <column>
+              <property name="text">
+               <string notr="true">1</string>
+              </property>
+             </column>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+         <widget class="QWidget" name="tab_4">
+          <attribute name="title">
+           <string>Hist.</string>
+          </attribute>
+          <layout class="QVBoxLayout" name="verticalLayout_3">
+           <property name="spacing">
+            <number>0</number>
            </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Ascend</string>
+           <property name="leftMargin">
+            <number>0</number>
            </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Descend</string>
+           <property name="topMargin">
+            <number>0</number>
            </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>Position</string>
+           <property name="rightMargin">
+            <number>0</number>
            </property>
-          </column>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-      <widget class="QWidget" name="tabFilter">
-       <attribute name="title">
-        <string>Filter</string>
-       </attribute>
-       <layout class="QVBoxLayout" name="verticalLayout_6">
-        <property name="spacing">
-         <number>0</number>
-        </property>
-        <property name="leftMargin">
-         <number>0</number>
-        </property>
-        <property name="topMargin">
-         <number>0</number>
-        </property>
-        <property name="rightMargin">
-         <number>0</number>
-        </property>
-        <property name="bottomMargin">
-         <number>0</number>
-        </property>
-        <item>
-         <widget class="QTreeWidget" name="treeFilter">
-          <property name="selectionMode">
-           <enum>QAbstractItemView::NoSelection</enum>
-          </property>
-          <attribute name="headerVisible">
-           <bool>false</bool>
-          </attribute>
-          <column>
-           <property name="text">
-            <string notr="true">1</string>
+           <property name="bottomMargin">
+            <number>0</number>
            </property>
-          </column>
+           <item>
+            <widget class="CHistoryListWidget" name="listHistory">
+             <property name="iconSize">
+              <size>
+               <width>32</width>
+               <height>32</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+          </layout>
          </widget>
-        </item>
-       </layout>
-      </widget>
-      <widget class="QWidget" name="tab_4">
-       <attribute name="title">
-        <string>Hist.</string>
-       </attribute>
-       <layout class="QVBoxLayout" name="verticalLayout_3">
-        <property name="spacing">
-         <number>0</number>
-        </property>
-        <property name="leftMargin">
-         <number>0</number>
-        </property>
-        <property name="topMargin">
-         <number>0</number>
-        </property>
-        <property name="rightMargin">
-         <number>0</number>
-        </property>
-        <property name="bottomMargin">
-         <number>0</number>
-        </property>
-        <item>
-         <widget class="CHistoryListWidget" name="listHistory">
-          <property name="iconSize">
-           <size>
-            <width>32</width>
-            <height>32</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
+        </widget>
+       </item>
+       <item>
+        <layout class="QVBoxLayout" name="verticalLayout_2"/>
+       </item>
+      </layout>
      </widget>
     </widget>
    </item>
@@ -470,6 +549,12 @@
  </widget>
  <customwidgets>
   <customwidget>
+   <class>CPlotTrack</class>
+   <extends>QWidget</extends>
+   <header>plot/CPlotTrack.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
    <class>CPlotProfile</class>
    <extends>QWidget</extends>
    <header>plot/CPlotProfile.h</header>
@@ -488,12 +573,6 @@
    <container>1</container>
   </customwidget>
   <customwidget>
-   <class>CPlotTrack</class>
-   <extends>QWidget</extends>
-   <header>plot/CPlotTrack.h</header>
-   <container>1</container>
-  </customwidget>
-  <customwidget>
    <class>CHistoryListWidget</class>
    <extends>QListWidget</extends>
    <header>helpers/CHistoryListWidget.h</header>
diff --git a/src/gis/trk/filter/filter.cpp b/src/gis/trk/filter/filter.cpp
index a9979dd..323c4a0 100644
--- a/src/gis/trk/filter/filter.cpp
+++ b/src/gis/trk/filter/filter.cpp
@@ -247,7 +247,7 @@ void CGisItemTrk::filterOffsetElevation(int offset)
 
 void CGisItemTrk::filterNewDate(const QDateTime& date)
 {
-    qint64 delta = date.toTime_t() - timeStart.toUTC().toTime_t();
+    qint64 delta = qint64(date.toTime_t()) - qint64(timeStart.toUTC().toTime_t());
 
     for(int i = 0; i < trk.segs.size(); i++)
     {
diff --git a/src/gis/wpt/CDetailsGeoCache.cpp b/src/gis/wpt/CDetailsGeoCache.cpp
index da9d442..eaddc7d 100644
--- a/src/gis/wpt/CDetailsGeoCache.cpp
+++ b/src/gis/wpt/CDetailsGeoCache.cpp
@@ -20,13 +20,18 @@
 #include "gis/wpt/CDetailsGeoCache.h"
 #include "gis/wpt/CGisItemWpt.h"
 
+#include <QtNetwork>
 #include <QtWebKitWidgets>
 #include <QtWidgets>
 
+#define HTTP_ATTR_WHAT      QNetworkRequest::Attribute(QNetworkRequest::User + 1)
+#define HTTP_ATTR_INFO      QNetworkRequest::Attribute(QNetworkRequest::User + 2)
+
 
 CDetailsGeoCache::CDetailsGeoCache(CGisItemWpt &wpt, QWidget *parent)
     : QDialog(parent)
     , wpt(wpt)
+    , cntSpoiler(0)
 {
     setupUi(this);
     setWindowTitle(wpt.getName());
@@ -57,6 +62,7 @@ CDetailsGeoCache::CDetailsGeoCache(CGisItemWpt &wpt, QWidget *parent)
     checkHint->setEnabled(!geocache.hint.isEmpty());
     labelHint->setText(geocache.hint.isEmpty() ? tr("none") : tr("???"));
     toolIcon->setIcon(wpt.getIcon());
+    labelStatus->hide();
 
     QString desc;
     if(geocache.shortDescIsHtml)
@@ -81,10 +87,35 @@ CDetailsGeoCache::CDetailsGeoCache(CGisItemWpt &wpt, QWidget *parent)
     webDesc->setHtml(desc);
     webDesc->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
 
-    photoAlbum->reload(wpt.getImages());
+    timerDownload = new QTimer(this);
+    timerDownload->setSingleShot(true);
+    connect(timerDownload, SIGNAL(timeout()), this, SLOT(slotDownloadDone()));
 
     connect(checkHint, SIGNAL(toggled(bool)), this, SLOT(slotHintChanged(bool)));
     connect(webDesc, SIGNAL(linkClicked(QUrl)), this, SLOT(slotLinkClicked(QUrl)));
+    connect(toolUpdateSpoiler, SIGNAL(clicked()), this, SLOT(slotCollectSpoiler()));
+
+    networkManager = new QNetworkAccessManager(this);
+    connect(networkManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(slotRequestFinished(QNetworkReply*)));
+
+    const QList<CGisItemWpt::image_t>& images = wpt.getImages();
+    photoAlbum->reload(images);
+    if(images.isEmpty())
+    {
+        slotCollectSpoiler();
+        toolUpdateSpoiler->setEnabled(false);
+    }
+    else
+    {
+        toolUpdateSpoiler->setEnabled(true);
+    }
+    if(wpt.isOnDevice())
+    {
+        toolUpdateSpoiler->setEnabled(false);
+    }
+
+    listHistory->setEnabled(false);
+    listHistory->setupHistory(wpt);
 }
 
 CDetailsGeoCache::~CDetailsGeoCache()
@@ -107,3 +138,134 @@ void CDetailsGeoCache::slotLinkClicked(const QUrl& url)
 {
     QDesktopServices::openUrl(url);
 }
+
+void CDetailsGeoCache::slotCollectSpoiler()
+{
+    const QList<IGisItem::link_t>& links = wpt.getLinks();
+    if(links.isEmpty())
+    {
+        return;
+    }
+
+    wpt.loadHistory(0);
+    photoAlbum->reload(wpt.getImages());
+    listHistory->setupHistory(wpt);
+
+    QNetworkRequest request;
+    request.setUrl(links.first().uri);
+    networkManager->get(request);
+
+    timerDownload->start(10000);
+    labelStatus->show();
+    labelStatus->setText(tr("Searching for images..."));
+}
+
+void CDetailsGeoCache::slotRequestFinished(QNetworkReply * reply)
+{
+    if(reply->error() != QNetworkReply::NoError)
+    {
+        qDebug() << reply->errorString();
+        reply->deleteLater();
+        return;
+    }
+
+    //qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
+    //qDebug() << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute);
+    //qDebug() << reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
+
+    if(reply->property("whatfor") == "image")
+    {
+        QString info = reply->property("info").toString();
+
+        if(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 301)
+        {
+            QNetworkRequest request;
+            request.setUrl(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl());
+            QNetworkReply * reply = networkManager->get(request);
+            reply->setProperty("whatfor", "image");
+            reply->setProperty("info", info);
+        }
+        else if(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200)
+        {
+            CGisItemWpt::image_t image;
+            image.info = info;
+            image.pixmap.loadFromData(reply->readAll());
+            wpt.addImage(image);
+
+            photoAlbum->reload(wpt.getImages());
+            listHistory->setupHistory(wpt);
+
+            cntSpoiler--;
+            if(cntSpoiler == 0)
+            {
+                slotDownloadDone();
+            }
+        }
+    }
+    else
+    {
+        if(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 301)
+        {
+            QNetworkRequest request;
+            request.setUrl(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl());
+            networkManager->get(request);
+        }
+    }
+
+
+    QString asw = reply->readAll();
+    reply->deleteLater();
+
+    if(asw.isEmpty())
+    {
+        return;
+    }
+
+    QRegExp re1(".*CachePageImages.*");
+    QRegExp re2("(http://.*\\.jpg).*>(.*)</a>");
+    re2.setMinimal(true);
+
+    bool watchOut       = false;
+    QStringList lines   = asw.split("\n");
+    foreach(const QString &line, lines)
+    {
+        if(!watchOut && re1.exactMatch(line))
+        {
+            watchOut = true;
+        }
+        else if(watchOut)
+        {
+            int pos = 0;
+            while ((pos = re2.indexIn(line, pos)) != -1)
+            {
+                QString url  = re2.cap(1);
+                QString info = re2.cap(2);
+
+                QNetworkRequest request;
+                request.setUrl(url);
+                QNetworkReply * reply = networkManager->get(request);
+                reply->setProperty("whatfor", "image");
+                reply->setProperty("info", info);
+                cntSpoiler++;
+
+                pos += re2.matchedLength();
+            }
+
+            watchOut = false;
+        }
+    }
+}
+
+void CDetailsGeoCache::slotDownloadDone()
+{
+    timerDownload->stop();
+    cntSpoiler = 0;
+    if(wpt.getImages().isEmpty())
+    {
+        labelStatus->setText(tr("No images found"));
+    }
+    else
+    {
+        labelStatus->hide();
+    }
+}
diff --git a/src/gis/wpt/CDetailsGeoCache.h b/src/gis/wpt/CDetailsGeoCache.h
index e17c45e..b8ee847 100644
--- a/src/gis/wpt/CDetailsGeoCache.h
+++ b/src/gis/wpt/CDetailsGeoCache.h
@@ -23,6 +23,8 @@
 #include <QDialog>
 
 class CGisItemWpt;
+class QNetworkAccessManager;
+class QTimer;
 
 class CDetailsGeoCache : public QDialog, private Ui::IDetailsGeoCache
 {
@@ -34,9 +36,15 @@ public:
 private slots:
     void slotHintChanged(bool on);
     void slotLinkClicked(const QUrl& url);
+    void slotCollectSpoiler();
+    void slotRequestFinished(QNetworkReply * reply);
+    void slotDownloadDone();
 
 private:
     CGisItemWpt& wpt;
+    QNetworkAccessManager * networkManager;
+    int cntSpoiler;
+    QTimer * timerDownload;
 };
 
 #endif //CDETAILSGEOCACHE_H
diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
index 1dd8b8a..9d26201 100644
--- a/src/gis/wpt/CDetailsWpt.cpp
+++ b/src/gis/wpt/CDetailsWpt.cpp
@@ -148,7 +148,7 @@ void CDetailsWpt::slotLinkActivated(const QString& link)
 {
     if(link == "name")
     {
-        QString name = QInputDialog::getText(0, tr("Edit name..."), tr("Enter new waypoint name."), QLineEdit::Normal, wpt.getName());
+        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new waypoint name."), QLineEdit::Normal, wpt.getName());
         if(name.isEmpty())
         {
             return;
@@ -158,7 +158,7 @@ void CDetailsWpt::slotLinkActivated(const QString& link)
     else if(link == "elevation")
     {
         QVariant var(wpt.getElevation());
-        CElevationDialog dlg(0, var, QVariant(NOINT), wpt.getPosition());
+        CElevationDialog dlg(this, var, QVariant(NOINT), wpt.getPosition());
         if(dlg.exec() == QDialog::Accepted)
         {
             wpt.setElevation(var.toInt());
@@ -167,7 +167,7 @@ void CDetailsWpt::slotLinkActivated(const QString& link)
     else if(link == "proximity")
     {
         QVariant var(wpt.getProximity());
-        CInputDialog dlg(0, tr("Enter new proximity range."), var, QVariant(NOFLOAT));
+        CInputDialog dlg(this, tr("Enter new proximity range."), var, QVariant(NOFLOAT));
         if(dlg.exec() == QDialog::Accepted)
         {
             wpt.setProximity(var.toDouble());
@@ -176,7 +176,7 @@ void CDetailsWpt::slotLinkActivated(const QString& link)
     else if(link == "position")
     {
         QPointF pos = wpt.getPosition();
-        CPositionDialog dlg(0, pos);
+        CPositionDialog dlg(this, pos);
         if(dlg.exec() == QDialog::Accepted)
         {
             wpt.setPosition(pos);
@@ -190,7 +190,7 @@ void CDetailsWpt::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
     {
-        CTextEditWidget dlg(0);
+        CTextEditWidget dlg(this);
         dlg.setHtml(wpt.getComment());
         if(dlg.exec() == QDialog::Accepted)
         {
@@ -200,7 +200,7 @@ void CDetailsWpt::slotLinkActivated(const QUrl& url)
     }
     else if(url.toString() == "description")
     {
-        CTextEditWidget dlg(0);
+        CTextEditWidget dlg(this);
         dlg.setHtml(wpt.getDescription());
         if(dlg.exec() == QDialog::Accepted)
         {
@@ -211,7 +211,7 @@ void CDetailsWpt::slotLinkActivated(const QUrl& url)
     else if(url.toString() == "links")
     {
         QList<IGisItem::link_t> links = wpt.getLinks();
-        CLinksDialog dlg(links, 0);
+        CLinksDialog dlg(links, this);
         if(dlg.exec() == QDialog::Accepted)
         {
             wpt.setLinks(links);
diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
index 9517d4b..e32aaff 100644
--- a/src/gis/wpt/CGisItemWpt.cpp
+++ b/src/gis/wpt/CGisItemWpt.cpp
@@ -141,6 +141,19 @@ CGisItemWpt::CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project)
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
 }
 
+CGisItemWpt::CGisItemWpt(const CTwoNavProject::wpt_t &tnvWpt, IGisProject * project)
+    : IGisItem(project, eTypeWpt, -1)
+    , proximity(NOFLOAT)
+    , posScreen(NOPOINTF)
+{
+    readTwoNav(tnvWpt);
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
+
+    genKey();
+    setupHistory();
+    updateDecoration(eMarkNone, eMarkNone);
+}
+
 CGisItemWpt::~CGisItemWpt()
 {
 }
@@ -174,7 +187,7 @@ const QString& CGisItemWpt::getNewName()
             lastName = lastName.left(idx) + QString::number(lastName.mid(idx).toInt() + 1);
         }
     }
-    lastName = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new waypoint name."), QLineEdit::Normal, lastName);
+    lastName = QInputDialog::getText(&CMainWindow::self(), QObject::tr("Edit name..."), QObject::tr("Enter new waypoint name."), QLineEdit::Normal, lastName);
     return lastName;
 }
 
@@ -191,7 +204,7 @@ const QString& CGisItemWpt::getNewIcon()
 
 void CGisItemWpt::getNewPosition(QPointF& pos)
 {
-    CPositionDialog dlg(0, pos);
+    CPositionDialog dlg(&CMainWindow::self(), pos);
     if(dlg.exec() == QDialog::Rejected)
     {
         pos = NOPOINTF;
@@ -199,7 +212,7 @@ void CGisItemWpt::getNewPosition(QPointF& pos)
 }
 
 
-QString CGisItemWpt::getInfo() const
+QString CGisItemWpt::getInfo(bool allowEdit) const
 {
     QString str = "<div style='font-weight: bold;'>" + getName() + "</div>";
 
@@ -300,7 +313,7 @@ void CGisItemWpt::setIcon()
         icon = getWptIconByName(wpt.sym, focus);
     }
 
-    QTreeWidgetItem::setIcon(CGisListWks::eColumnName,icon);
+    QTreeWidgetItem::setIcon(CGisListWks::eColumnIcon,icon);
 }
 
 void CGisItemWpt::setName(const QString& str)
@@ -315,6 +328,9 @@ void CGisItemWpt::setPosition(const QPointF& pos)
 {
     wpt.lon = pos.x();
     wpt.lat = pos.y();
+
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
+
     changed(QObject::tr("Changed position"),"://icons/48x48/WptMove.png");
 }
 
@@ -366,6 +382,13 @@ void CGisItemWpt::setImages(const QList<image_t>& imgs)
     changed(QObject::tr("Changed images"), "://icons/48x48/Image.png");
 }
 
+void CGisItemWpt::addImage(const image_t& img)
+{
+    images.append(img);
+    changed(QObject::tr("Add image"), "://icons/48x48/Image.png");
+}
+
+
 bool CGisItemWpt::isCloseTo(const QPointF& pos)
 {
     if(posScreen == NOPOINTF)
@@ -385,12 +408,12 @@ void CGisItemWpt::edit()
 {
     if(geocache.hasData)
     {
-        CDetailsGeoCache dlg(*this, 0);
+        CDetailsGeoCache dlg(*this, &CMainWindow::self());
         dlg.exec();
     }
     else
     {
-        CDetailsWpt dlg(*this, 0);
+        CDetailsWpt dlg(*this, &CMainWindow::self());
         dlg.exec();
     }
 }
@@ -474,3 +497,19 @@ void CGisItemWpt::drawHighlight(QPainter& p)
 
     p.drawImage(posScreen - QPointF(31,31), QImage("://cursors/wptHighlight.png"));
 }
+
+void CGisItemWpt::removeLinksByType(const QString& type)
+{
+    QList<IGisItem::link_t>::iterator link = wpt.links.begin();
+
+    while(link != wpt.links.end())
+    {
+        if(link->type == type)
+        {
+            link = wpt.links.erase(link);
+            continue;
+        }
+
+        link++;
+    }
+}
diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
index 15b6b31..5999c6f 100644
--- a/src/gis/wpt/CGisItemWpt.h
+++ b/src/gis/wpt/CGisItemWpt.h
@@ -20,6 +20,7 @@
 #define CGISITEMWPT_H
 
 #include "gis/IGisItem.h"
+#include "gis/tnv/CTwoNavProject.h"
 
 #include <QPointer>
 
@@ -28,6 +29,8 @@ class QDomNode;
 class CScrOptWpt;
 class QSqlDatabase;
 class CQlgtWpt;
+class QTextEdit;
+class QDir;
 
 class CGisItemWpt : public IGisItem
 {
@@ -130,12 +133,38 @@ public:
      */
     CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project);
 
+    /**
+       @brief Read item from text stream with TwoNav encoding
+       @param tnvWpt
+       @param project
+     */
+    CGisItemWpt(const CTwoNavProject::wpt_t& tnvWpt, IGisProject * project);
+
     CGisItemWpt(const CQlgtWpt& wpt1);
 
     virtual ~CGisItemWpt();
 
+    /**
+       @brief Save waypoint to GPX tree
+       @param gpx   The <gpx> node to append by the waypoint
+     */
     void save(QDomNode& gpx);
+    /**
+       @brief Save waypoint to TwoNav waypoint file
+       @param out   the text stream to write to
+     */
+    void saveTwoNav(QTextStream &out, const QDir &dir);
+    /**
+       @brief Read serialized waypoint from a binary data stream
+       @param stream  the data stream to read from
+       @return A reference to the stream
+     */
     QDataStream& operator<<(QDataStream& stream);
+    /**
+       @brief Serialize waypoint into a binary data stream
+       @param stream  the data stream to write to.
+       @return A reference to the stream
+     */
     QDataStream& operator>>(QDataStream& stream);
 
     void setName(const QString& str);
@@ -148,11 +177,46 @@ public:
     void setLinks(const QList<link_t>& links);
     void setImages(const QList<image_t>& imgs);
 
+    /**
+       @brief Silently append list of links
+
+       Devices uses links to reference multimedia content attached to the waypoint.
+       These links have to be added to the list of normal links. See removeLinksByType()
+       on how to remove these links again.
+
+       @param links  list of links.
+     */
+    void appendLinks(const QList<link_t>& links)
+    {
+        wpt.links = links + wpt.links;
+    }
+
+    /**
+       @brief Silently append list of images
+
+       This is used to restore images from a device. As these images where part of the waypoint
+       object in the first place they have to be added to the waypoint again without creating
+       a new history entry.
+
+       @param imgs  list of images
+     */
+    void appendImages(const QList<image_t>& imgs)
+    {
+        images += imgs;
+    }
+
+    /**
+       @brief Append the list of images by a single image.
+       @param img   a single image
+     */
+    void addImage(const image_t& img);
+
+
     const QString& getName() const
     {
         return wpt.name;
     }
-    QString getInfo() const;
+    QString getInfo(bool allowEdit = false) const;
     QPointF getPosition() const
     {
         return QPointF(wpt.lon, wpt.lat);
@@ -212,17 +276,31 @@ public:
 
     void edit();
 
+    /**
+       @brief Remove all links from the waypoint's link list with a given type
+
+       This is used by devices that use links to attach multimedia items to a waypoint like images.
+       These links only make sense on the device. Therefor the links have to be removed after the
+       waypoint has been loaded from the device.
+
+       @param type
+     */
+    void removeLinksByType(const QString& type);
+
     static const QString &getNewName();
     static const QString &getNewIcon();
     static void getNewPosition(QPointF &pos);
 
+
 private:
+    void setIcon();
     void setSymbol();
     void readGpx(const QDomNode& xml);
-    void setIcon();
+    void readTwoNav(const CTwoNavProject::wpt_t &tnvWpt);
     void readGcExt(const QDomNode& xmlCache);
     void writeGcExt(QDomNode& xmlCache);
 
+
     static key_t keyUserFocus;
     static QString lastName;
     static QString lastIcon;
diff --git a/src/gis/wpt/CProjWpt.cpp b/src/gis/wpt/CProjWpt.cpp
index 171d4ef..96c08a3 100644
--- a/src/gis/wpt/CProjWpt.cpp
+++ b/src/gis/wpt/CProjWpt.cpp
@@ -59,7 +59,7 @@ void CProjWpt::slotChangeIcon()
 
 void CProjWpt::slotChangeName()
 {
-    QString n = QInputDialog::getText(0, tr("Edit name..."), tr("Enter new waypoint name."), QLineEdit::Normal, wpt.getName());
+    QString n = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new waypoint name."), QLineEdit::Normal, wpt.getName());
     if(n.isEmpty())
     {
         return;
diff --git a/src/gis/wpt/IDetailsGeoCache.ui b/src/gis/wpt/IDetailsGeoCache.ui
index 814fb08..5586c53 100644
--- a/src/gis/wpt/IDetailsGeoCache.ui
+++ b/src/gis/wpt/IDetailsGeoCache.ui
@@ -26,48 +26,6 @@
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <layout class="QGridLayout" name="gridLayout">
-     <item row="0" column="0">
-      <widget class="QToolButton" name="toolIcon">
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>22</width>
-         <height>22</height>
-        </size>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item row="6" column="1">
-      <widget class="CPhotoAlbum" name="photoAlbum" native="true">
-       <property name="minimumSize">
-        <size>
-         <width>0</width>
-         <height>150</height>
-        </size>
-       </property>
-      </widget>
-     </item>
-     <item row="4" column="1">
-      <widget class="QWebView" name="webDesc">
-       <property name="url">
-        <url>
-         <string>about:blank</string>
-        </url>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1">
-      <widget class="QLabel" name="labelName">
-       <property name="text">
-        <string>-</string>
-       </property>
-      </widget>
-     </item>
      <item row="1" column="1">
       <layout class="QHBoxLayout" name="horizontalLayout_2">
        <item>
@@ -248,6 +206,85 @@
        </item>
       </layout>
      </item>
+     <item row="7" column="0">
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QToolButton" name="toolUpdateSpoiler">
+         <property name="toolTip">
+          <string>Update spoilers</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../../resources.qrc">
+           <normaloff>:/icons/32x32/ReloadImage.png</normaloff>:/icons/32x32/ReloadImage.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item row="8" column="1">
+      <widget class="CHistoryListWidget" name="listHistory"/>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLabel" name="labelName">
+       <property name="text">
+        <string>-</string>
+       </property>
+      </widget>
+     </item>
+     <item row="5" column="0" colspan="2">
+      <widget class="Line" name="line">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="1">
+      <widget class="QWebView" name="webDesc">
+       <property name="url">
+        <url>
+         <string>about:blank</string>
+        </url>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0">
+      <widget class="QToolButton" name="toolIcon">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+       <property name="autoRaise">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
      <item row="3" column="1">
       <layout class="QHBoxLayout" name="horizontalLayout">
        <item>
@@ -279,12 +316,26 @@
        </item>
       </layout>
      </item>
-     <item row="5" column="0" colspan="2">
-      <widget class="Line" name="line">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-      </widget>
+     <item row="7" column="1">
+      <layout class="QVBoxLayout" name="verticalLayout_3">
+       <item>
+        <widget class="QLabel" name="labelStatus">
+         <property name="text">
+          <string>TextLabel</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="CPhotoAlbum" name="photoAlbum" native="true">
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>150</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
      </item>
     </layout>
    </item>
@@ -302,6 +353,11 @@
    <header>helpers/CPhotoAlbum.h</header>
    <container>1</container>
   </customwidget>
+  <customwidget>
+   <class>CHistoryListWidget</class>
+   <extends>QListWidget</extends>
+   <header>helpers/CHistoryListWidget.h</header>
+  </customwidget>
  </customwidgets>
  <resources>
   <include location="../../resources.qrc"/>
diff --git a/src/grid/CGridSetup.cpp b/src/grid/CGridSetup.cpp
index cca915d..72b3a0a 100644
--- a/src/grid/CGridSetup.cpp
+++ b/src/grid/CGridSetup.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "grid/CGrid.h"
 #include "grid/CGridSetup.h"
 #include "grid/CProjWizard.h"
@@ -24,7 +25,8 @@
 #include <QtWidgets>
 
 CGridSetup::CGridSetup(CGrid *grid, CMapDraw * map)
-    : grid(grid)
+    : QDialog(&CMainWindow::self())
+    , grid(grid)
     , map(map)
 {
     setupUi(this);
@@ -68,7 +70,7 @@ void CGridSetup::slotSelectGridColor()
     QPalette palette = labelGridColor->palette();
     QColor color = palette.color(labelGridColor->foregroundRole());
 
-    color = QColorDialog::getColor(color);
+    color = QColorDialog::getColor(color, this);
 
     if(color.isValid())
     {
diff --git a/src/grid/CProjWizard.cpp b/src/grid/CProjWizard.cpp
index 289115f..4769611 100644
--- a/src/grid/CProjWizard.cpp
+++ b/src/grid/CProjWizard.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "CProjWizard.h"
 #include "grid/mitab.h"
 
@@ -30,7 +31,8 @@ static bool mitabLessThan(const mitab_entry_t &s1, const mitab_entry_t &s2)
 }
 
 CProjWizard::CProjWizard(QLineEdit &line)
-    : line(line)
+    : QDialog(&CMainWindow::self())
+    , line(line)
 {
     setupUi(this);
     mitab_entry_t entry;
@@ -210,7 +212,7 @@ bool CProjWizard::validProjStr(const QString projStr)
 
     if (!projCheck)
     {
-        QMessageBox::warning(0, tr("Error..."),tr("The value\n'%1'\nis not a valid coordinate system definition:\n%2").arg(projStr).arg(pj_strerrno(pj_errno)),QMessageBox::Abort,QMessageBox::Abort);
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."),tr("The value\n'%1'\nis not a valid coordinate system definition:\n%2").arg(projStr).arg(pj_strerrno(pj_errno)),QMessageBox::Abort,QMessageBox::Abort);
         return false;
     }
     else
diff --git a/src/helpers/CPhotoAlbum.cpp b/src/helpers/CPhotoAlbum.cpp
index e75d605..a689c05 100644
--- a/src/helpers/CPhotoAlbum.cpp
+++ b/src/helpers/CPhotoAlbum.cpp
@@ -27,6 +27,7 @@ CPhotoAlbum::CPhotoAlbum(QWidget *parent)
     , idxSelected(0)
 {
     setupUi(this);
+    setFocusPolicy(Qt::WheelFocus);
     connect(toolLeft, SIGNAL(clicked()), this, SLOT(slotLeft()));
     connect(toolRight, SIGNAL(clicked()), this, SLOT(slotRight()));
 }
@@ -41,10 +42,13 @@ void CPhotoAlbum::resizeEvent(QResizeEvent * e)
     updateView();
 }
 
-void CPhotoAlbum::mouseDoubleClickEvent(QMouseEvent * e)
+
+void CPhotoAlbum::mouseReleaseEvent(QMouseEvent * e)
 {
     CPhotoViewer dlg(images, 0,this);
     dlg.exec();
+
+    e->accept();
 }
 
 void CPhotoAlbum::reload(const QList<CGisItemWpt::image_t>& imgs)
diff --git a/src/helpers/CPhotoAlbum.h b/src/helpers/CPhotoAlbum.h
index a896db2..51ea0a7 100644
--- a/src/helpers/CPhotoAlbum.h
+++ b/src/helpers/CPhotoAlbum.h
@@ -42,7 +42,7 @@ public slots:
 
 protected:
     void resizeEvent(QResizeEvent * e);
-    void mouseDoubleClickEvent(QMouseEvent * e);
+    void mouseReleaseEvent(QMouseEvent *e);
 
 private slots:
     void slotRight();
diff --git a/src/helpers/CPhotoViewer.cpp b/src/helpers/CPhotoViewer.cpp
index 65f92de..cf4c419 100644
--- a/src/helpers/CPhotoViewer.cpp
+++ b/src/helpers/CPhotoViewer.cpp
@@ -97,7 +97,9 @@ void CPhotoViewer::setImageAtIdx(int i)
     }
 
     rectClose.moveCenter(rectImage.topRight());
+    rectPrev.setHeight(rectImage.height());
     rectPrev.moveBottomLeft(rectImage.bottomLeft());
+    rectNext.setHeight(rectImage.height());
     rectNext.moveBottomRight(rectImage.bottomRight());
 }
 
@@ -116,22 +118,23 @@ void CPhotoViewer::paintEvent(QPaintEvent * e)
     p.drawRect(rectImage);
 
     p.drawImage(rectImage, images[idx].pixmap.scaled(rectImage.size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
-    p.drawPixmap(rectClose, QPixmap("://icons/32x32/Close.png"));
 
     if(idx != (images.size() - 1))
     {
         p.setPen(Qt::NoPen);
         p.setBrush(QColor(255,255,255,128));
         p.drawRect(rectNext);
-        p.drawPixmap(rectNext, QPixmap("://icons/32x32/Right.png"));
+        p.drawPixmap(rectNext.left(),rectNext.bottom() - 32, 32, 32, QPixmap("://icons/32x32/Right.png"));
     }
     if(idx != 0)
     {
         p.setPen(Qt::NoPen);
         p.setBrush(QColor(255,255,255,128));
         p.drawRect(rectPrev);
-        p.drawPixmap(rectPrev, QPixmap("://icons/32x32/Left.png"));
+        p.drawPixmap(rectPrev.left(), rectPrev.bottom() - 32, 32, 32, QPixmap("://icons/32x32/Left.png"));
     }
+
+    p.drawPixmap(rectClose, QPixmap("://icons/32x32/Close.png"));
 }
 
 
diff --git a/src/helpers/CSelectCopyAction.cpp b/src/helpers/CSelectCopyAction.cpp
index 9fdda13..ca98f27 100644
--- a/src/helpers/CSelectCopyAction.cpp
+++ b/src/helpers/CSelectCopyAction.cpp
@@ -57,8 +57,6 @@ CSelectCopyAction::CSelectCopyAction(const IGisProject * src, const IGisProject
 
     connect(pushCopy, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
     connect(pushSkip, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
-
-
 }
 
 CSelectCopyAction::~CSelectCopyAction()
diff --git a/src/helpers/CSelectProjectDialog.cpp b/src/helpers/CSelectProjectDialog.cpp
index 2959bb4..c1b80e2 100644
--- a/src/helpers/CSelectProjectDialog.cpp
+++ b/src/helpers/CSelectProjectDialog.cpp
@@ -16,16 +16,16 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "gis/CGisListWks.h"
 #include "gis/prj/IGisProject.h"
 #include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSettings.h"
 
-
 #include <QtWidgets>
 
 CSelectProjectDialog::CSelectProjectDialog(QString &key, QString &name, type_e& type, QTreeWidget * parent)
-    : QDialog(parent)
+    : QDialog(&CMainWindow::self())
     , key(key)
     , name(name)
     , type(type)
@@ -42,7 +42,7 @@ CSelectProjectDialog::CSelectProjectDialog(QString &key, QString &name, type_e&
                 continue;
             }
 
-            QListWidgetItem * item = new QListWidgetItem(project->icon(CGisListWks::eColumnName), project->text(CGisListWks::eColumnName),listWidget);
+            QListWidgetItem * item = new QListWidgetItem(project->icon(CGisListWks::eColumnIcon), project->text(CGisListWks::eColumnName),listWidget);
             item->setData(Qt::UserRole, project->getKey());
         }
     }
@@ -73,6 +73,7 @@ CSelectProjectDialog::CSelectProjectDialog(QString &key, QString &name, type_e&
     buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
 
     connect(listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(slotItemClicked(QListWidgetItem*)));
+    connect(listWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotItemDoubleClicked(QListWidgetItem*)));
     connect(lineEdit, SIGNAL(textChanged(QString)), this, SLOT(slotProjectChanged(QString)));
     connect(lineEdit, SIGNAL(textEdited(QString)), this, SLOT(slotProjectEdited(QString)));
     connect(radioQms, SIGNAL(clicked()), this, SLOT(slotTypeChanged()));
@@ -101,6 +102,15 @@ void CSelectProjectDialog::slotItemClicked(QListWidgetItem * item)
     frameType->setEnabled(false);
 }
 
+void CSelectProjectDialog::slotItemDoubleClicked(QListWidgetItem * item)
+{
+    key = item->data(Qt::UserRole).toString();
+    lineEdit->setText(item->text());
+    frameType->setEnabled(false);
+
+    QDialog::accept();
+}
+
 void CSelectProjectDialog::slotProjectChanged(const QString& text)
 {
     buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!text.isEmpty());
diff --git a/src/helpers/CSelectProjectDialog.h b/src/helpers/CSelectProjectDialog.h
index 3aa9c6c..8d95a67 100644
--- a/src/helpers/CSelectProjectDialog.h
+++ b/src/helpers/CSelectProjectDialog.h
@@ -43,6 +43,7 @@ public slots:
 
 private slots:
     void slotItemClicked(QListWidgetItem * item);
+    void slotItemDoubleClicked(QListWidgetItem * item);
     void slotProjectChanged(const QString& text);
     void slotProjectEdited(const QString& text);
     void slotTypeChanged();
diff --git a/src/icons/2NavProject.svg b/src/icons/2NavProject.svg
new file mode 100644
index 0000000..cd55afc
--- /dev/null
+++ b/src/icons/2NavProject.svg
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="2NavProject.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="13.790418"
+     inkscape:cy="35.807015"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <path
+       style="fill:none;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 54,1014.3622 c 0,0 -15,1 -23,6 -6.836781,4.273 14.72678,4.2732 11,8 -3.72678,3.7268 -28.376052,2.4145 -32.8593751,5.1854 -2.0050036,1.2391 -5.0000004,5 -5.0000004,5"
+       id="path3078"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csssc" />
+    <g
+       id="g3023">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3763"
+         d="m 27.270471,992.71371 25.339695,10.78739 -28.507157,10.7873 3.167462,-21.57469"
+         style="fill:#ff0000;stroke:#ff0000;stroke-width:1.34993111999999993;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path3761"
+         d="m 20.720056,1031.245 3.609174,-39.39147 3.609174,0 z"
+         style="fill:#000000;stroke:#000000;stroke-width:0.71901649px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+    <rect
+       style="fill:none;stroke:none"
+       id="rect3769"
+       width="40"
+       height="40"
+       x="2.640624"
+       y="991.49402" />
+    <text
+       xml:space="preserve"
+       style="font-size:14px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+       x="-1032.9608"
+       y="15.999999"
+       id="text3848"
+       sodipodi:linespacing="125%"
+       transform="matrix(0,-1,1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan3850"
+         x="-1032.9608"
+         y="15.999999"
+         style="font-size:18px">2NV</tspan></text>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>  </g>
+</svg>
diff --git a/src/icons/32x32/2NavProject.png b/src/icons/32x32/2NavProject.png
new file mode 100644
index 0000000..9ca826c
Binary files /dev/null and b/src/icons/32x32/2NavProject.png differ
diff --git a/src/icons/32x32/LoadView.png b/src/icons/32x32/LoadView.png
new file mode 100644
index 0000000..d8c0147
Binary files /dev/null and b/src/icons/32x32/LoadView.png differ
diff --git a/src/icons/32x32/ReloadImage.png b/src/icons/32x32/ReloadImage.png
new file mode 100644
index 0000000..82fd0ee
Binary files /dev/null and b/src/icons/32x32/ReloadImage.png differ
diff --git a/src/icons/32x32/SaveView.png b/src/icons/32x32/SaveView.png
new file mode 100644
index 0000000..f2e104d
Binary files /dev/null and b/src/icons/32x32/SaveView.png differ
diff --git a/src/icons/32x32/VrtBuilder.png b/src/icons/32x32/VrtBuilder.png
new file mode 100644
index 0000000..b951f18
Binary files /dev/null and b/src/icons/32x32/VrtBuilder.png differ
diff --git a/src/icons/48x48/2NavProject.png b/src/icons/48x48/2NavProject.png
new file mode 100644
index 0000000..5d35e4a
Binary files /dev/null and b/src/icons/48x48/2NavProject.png differ
diff --git a/src/icons/48x48/LoadView.png b/src/icons/48x48/LoadView.png
new file mode 100644
index 0000000..2de51df
Binary files /dev/null and b/src/icons/48x48/LoadView.png differ
diff --git a/src/icons/48x48/ReloadImage.png b/src/icons/48x48/ReloadImage.png
new file mode 100644
index 0000000..d0b58ce
Binary files /dev/null and b/src/icons/48x48/ReloadImage.png differ
diff --git a/src/icons/48x48/SaveView.png b/src/icons/48x48/SaveView.png
new file mode 100644
index 0000000..f1007de
Binary files /dev/null and b/src/icons/48x48/SaveView.png differ
diff --git a/src/icons/48x48/VrtBuilder.png b/src/icons/48x48/VrtBuilder.png
new file mode 100644
index 0000000..3db6b3a
Binary files /dev/null and b/src/icons/48x48/VrtBuilder.png differ
diff --git a/src/icons/LoadView.svg b/src/icons/LoadView.svg
new file mode 100644
index 0000000..d192bbd
--- /dev/null
+++ b/src/icons/LoadView.svg
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="LoadView.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.5"
+     inkscape:cx="-17"
+     inkscape:cy="39.272727"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1012"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g3038">
+      <rect
+         style="fill:none;stroke:#000080;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         id="rect4156-1"
+         width="37.47588"
+         height="40"
+         x="16.265638"
+         y="9.3636198" />
+      <g
+         transform="translate(10.545454,-2.1286891)"
+         id="g3018">
+        <path
+           id="path4129-7-3-9"
+           style="fill:#ffffff;stroke:#ffffff;stroke-width:4.43720007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+           d="m 6.6731459,24.506065 c 5.9957181,9.867863 18.7209451,12.923577 28.4225791,6.82512 2.822568,-1.774263 5.18323,-4.214229 6.882092,-7.113257 M 6.9384302,23.675711 c 5.9957188,-9.867863 18.7209448,-12.923577 28.4225788,-6.82512 2.822568,1.774263 5.18323,4.214228 6.882092,7.113257"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4129-7-3"
+           style="fill:#ffffff;stroke:#000080;stroke-width:2.03560519;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+           d="m 6.6731448,24.506065 c 5.9957182,9.867863 18.7209462,12.923577 28.4225802,6.82512 2.822568,-1.774263 5.18323,-4.214229 6.882092,-7.113257 M 6.9384292,23.675711 c 5.9957188,-9.867863 18.7209458,-12.923577 28.4225798,-6.82512 2.822568,1.774263 5.18323,4.214228 6.882092,7.113257"
+           inkscape:connector-curvature="0" />
+        <path
+           sodipodi:open="true"
+           sodipodi:end="12.02886"
+           sodipodi:start="5.8033439"
+           d="m 379.43534,30.05399 c 1.27478,2.449571 0.32242,5.468754 -2.12715,6.743533 -2.44957,1.27478 -5.46875,0.322423 -6.74353,-2.127148 -1.27478,-2.449571 -0.32242,-5.468754 2.12715,-6.743533 2.35027,-1.223101 5.24659,-0.40052 6.60312,1.875344"
+           sodipodi:ry="5"
+           sodipodi:rx="5"
+           sodipodi:cy="32.362183"
+           sodipodi:cx="375"
+           id="path4149-5"
+           style="fill:#000080;stroke:#000080;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+           sodipodi:type="arc"
+           transform="matrix(0.89711754,0,0,0.95224119,-311.96096,-6.7258424)" />
+      </g>
+    </g>
+    <g
+       id="g3789"
+       transform="matrix(0.54586243,0,0,0.55524927,27.538013,21.881138)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3014"
+         d="m 6.8181815,14 -2,5 0,30 40.0000005,0 0,-30 -23,0 -2,-5 -13.0000005,0 z"
+         style="fill:#007cff;fill-opacity:1;stroke:#007cff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3016"
+         d="m 4.8181815,49 5,-25 40.0000005,0 -5,25 z"
+         style="fill:#000080;stroke:#000080;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/ReloadImage.svg b/src/icons/ReloadImage.svg
new file mode 100644
index 0000000..6b5a911
--- /dev/null
+++ b/src/icons/ReloadImage.svg
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ReloadImage.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="62.225397"
+     inkscape:cx="55.614196"
+     inkscape:cy="51.31611"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1008"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3002" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       style="fill:none;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3031"
+       d="m 6.057606,40.339994 55,0"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffcc00;fill-opacity:1;fill-rule:evenodd;stroke:#ffcc00;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3004"
+       d="M 25.210617,14.377705 A 7.5,7.5 0 1 1 25,14"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3006"
+       d="M 42.992947,28.031802 A 5,5 0 1 1 42.852536,27.779998"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000080;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3027"
+       d="m 36.057606,36.339994 0,2 -6,0 -6,13 4,0 4,-8 0,17 13,0 0,-17 4,8 4,0 -6,-13 -6,0 0,-2 z"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:none;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3029"
+       y="5.339994"
+       x="6.0576062"
+       height="55"
+       width="55" />
+    <path
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3033"
+       d="m 29.057606,18.339994 10,0"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3035"
+       d="m 26.057606,25.339994 5,6"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3037"
+       d="m 18.057606,29.339994 0,6"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3039"
+       d="m 11.057606,25.339994 -4,5"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#0000ff;stroke-width:0.36842659;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 55.259168,10.812965 C 54.913603,10.550549 54.555479,10.297882 54.164439,10.07634 52.696232,9.244534 51.102779,8.812336 49.519664,8.771901 46.036812,8.682941 42.611071,10.421041 40.7462,13.590653 38.033662,18.201 39.644906,24.09603 44.343163,26.757819 49.041421,29.419602 55.04886,27.838506 57.761403,23.228159 54,21 57,23 53.507602,20.818753 52.15133,23.123926 49.147616,23.914481 46.798483,22.583583 44.449354,21.252689 43.643724,18.305178 45,16 c 1.356272,-2.305173 4.359986,-3. [...]
+       id="path4064"
+       inkscape:export-filename="/home/oeichler/dateien/cpp/MapRoom/src/icons/16x16/reset.png"
+       inkscape:export-xdpi="36.030266"
+       inkscape:export-ydpi="36.030266"
+       sodipodi:nodetypes="cssssccsssccccc" />
+  </g>
+</svg>
diff --git a/src/icons/SaveView.svg b/src/icons/SaveView.svg
new file mode 100644
index 0000000..a528b6f
--- /dev/null
+++ b/src/icons/SaveView.svg
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="AddMapWorkspace.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.5"
+     inkscape:cx="-17"
+     inkscape:cy="39.272727"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1012"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g3038">
+      <rect
+         style="fill:none;stroke:#000080;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         id="rect4156-1"
+         width="37.47588"
+         height="40"
+         x="16.265638"
+         y="9.3636198" />
+      <g
+         transform="translate(10.545454,-2.1286891)"
+         id="g3018">
+        <path
+           id="path4129-7-3-9"
+           style="fill:#ffffff;stroke:#ffffff;stroke-width:4.43720007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+           d="m 6.6731459,24.506065 c 5.9957181,9.867863 18.7209451,12.923577 28.4225791,6.82512 2.822568,-1.774263 5.18323,-4.214229 6.882092,-7.113257 M 6.9384302,23.675711 c 5.9957188,-9.867863 18.7209448,-12.923577 28.4225788,-6.82512 2.822568,1.774263 5.18323,4.214228 6.882092,7.113257"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4129-7-3"
+           style="fill:#ffffff;stroke:#000080;stroke-width:2.03560519;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+           d="m 6.6731448,24.506065 c 5.9957182,9.867863 18.7209462,12.923577 28.4225802,6.82512 2.822568,-1.774263 5.18323,-4.214229 6.882092,-7.113257 M 6.9384292,23.675711 c 5.9957188,-9.867863 18.7209458,-12.923577 28.4225798,-6.82512 2.822568,1.774263 5.18323,4.214228 6.882092,7.113257"
+           inkscape:connector-curvature="0" />
+        <path
+           sodipodi:open="true"
+           sodipodi:end="12.02886"
+           sodipodi:start="5.8033439"
+           d="m 379.43534,30.05399 c 1.27478,2.449571 0.32242,5.468754 -2.12715,6.743533 -2.44957,1.27478 -5.46875,0.322423 -6.74353,-2.127148 -1.27478,-2.449571 -0.32242,-5.468754 2.12715,-6.743533 2.35027,-1.223101 5.24659,-0.40052 6.60312,1.875344"
+           sodipodi:ry="5"
+           sodipodi:rx="5"
+           sodipodi:cy="32.362183"
+           sodipodi:cx="375"
+           id="path4149-5"
+           style="fill:#000080;stroke:#000080;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+           sodipodi:type="arc"
+           transform="matrix(0.89711754,0,0,0.95224119,-311.96096,-6.7258424)" />
+      </g>
+    </g>
+    <g
+       id="g4549"
+       transform="matrix(0.66666667,0,0,0.66666675,68.221442,-636.03722)">
+      <rect
+         y="998.10114"
+         x="-49.82143"
+         height="29.999996"
+         width="30"
+         id="rect3366-5"
+         style="fill:#000080;fill-opacity:1;stroke:#0000ff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <rect
+         y="1017.6011"
+         x="-44.464287"
+         height="10.499999"
+         width="19.5"
+         id="rect4136-7"
+         style="fill:#cccccc;fill-opacity:1;stroke:#0000ff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <rect
+         y="1020.2748"
+         x="-40.067711"
+         height="5.0856576"
+         width="3.8534257"
+         id="rect4138-5"
+         style="fill:#000080;fill-opacity:1;stroke:#0000ff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <rect
+         y="1000.1259"
+         x="-45.793831"
+         height="14.050763"
+         width="21.944799"
+         id="rect4145-7"
+         style="fill:#ececec;fill-opacity:1;stroke:#0000ff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/VrtBuilder.svg b/src/icons/VrtBuilder.svg
new file mode 100644
index 0000000..f9a4c7a
--- /dev/null
+++ b/src/icons/VrtBuilder.svg
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="VrtBuilder.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.556349"
+     inkscape:cx="19.965748"
+     inkscape:cy="31.599773"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g3092">
+      <rect
+         y="13.769343"
+         x="17.798641"
+         height="33.188591"
+         width="33.129997"
+         id="rect3167-8-3"
+         style="fill:#ffffff;stroke:#806600;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3319-6-1"
+         d="m 21.97154,42.54271 c -0.37071,-0.15242 -0.77584,-0.32867 -0.90027,-0.3917 -0.22434,-0.11358 -0.22521,-0.11528 -0.1037,-0.19835 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.5e-4 0.32235,-0.07 0.57033,-0.15262 0.7605,-0.25358 1.15015,-0.29958 2.03222,-0.23994 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.85001 [...]
+         style="fill:#806600" />
+      <rect
+         ry="1.5290817e-06"
+         y="36.892117"
+         x="18.957796"
+         height="9.0398445"
+         width="30.74741"
+         id="rect3241-2"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text3207-3"
+         y="45.057064"
+         x="23.465206"
+         style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#806600;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#806600;font-family:Sans;-inkscape-font-specification:Sans Bold"
+           y="45.057064"
+           x="23.465206"
+           id="tspan3209-8"
+           sodipodi:role="line">VRT</tspan></text>
+    </g>
+    <path
+       style="fill:#000080;stroke:#000000;stroke-width:0.70702732000000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 29.595014,13.187175 -1.348393,0.04416 -0.397889,1.479657 0,0.176676 0.198951,1.258814 -1.878907,0.463772 -0.419988,-1.214644 -0.06625,-0.132505 -1.061028,-1.126308 -1.193654,0.574194 0.221038,1.545913 0.08838,0.132506 0.663151,1.082139 -1.525229,1.19256 -0.86209,-0.927548 -0.132665,-0.110428 -1.436811,-0.59628 -0.862083,1.015885 0.862083,1.325066 0.110513,0.08834 1.061028,0.706704 -0.906296,1.678421 -1.171549,-0.463773 -0.154736,-0.04418 -1.525227,0.04418 -0.397886,1.280897 1 [...]
+       id="path6034"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index e8fd998..a66473e 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -8,7 +8,7 @@
         <translation type="obsolete">Pohled %1</translation>
     </message>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="59"/>
+        <location filename="../canvas/CCanvas.cpp" line="61"/>
         <source>View %1</source>
         <translation>Pohled %1</translation>
     </message>
@@ -29,12 +29,12 @@
 <context>
     <name>CDemPathSetup</name>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="39"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="41"/>
         <source>Add or remove paths containing DEM data. There can be multiple files in a path but no sub-path is parsed. Supported formats are: %1</source>
         <translation>Přidat nebo odstranit cesty obsahující data DEM. V cestě může být více souborů, ale žádná podcesta není zpracována. Podporovanými formáty jsou: %1</translation>
     </message>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="54"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="56"/>
         <source>Select DEM file path...</source>
         <translation>Vybrat cestu k souboru DEM...</translation>
     </message>
@@ -50,26 +50,26 @@
 <context>
     <name>CDemVRT</name>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
-        <location filename="../dem/CDemVRT.cpp" line="51"/>
-        <location filename="../dem/CDemVRT.cpp" line="60"/>
-        <location filename="../dem/CDemVRT.cpp" line="87"/>
+        <location filename="../dem/CDemVRT.cpp" line="45"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="88"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
+        <location filename="../dem/CDemVRT.cpp" line="45"/>
         <source>Failed to load file: %1</source>
         <translation>Nepodařilo se nahrát soubor %1</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="51"/>
-        <location filename="../dem/CDemVRT.cpp" line="60"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation>DEM musí mít jedno pásmo s 16bitovými nebo 32bitovými daty.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="87"/>
+        <location filename="../dem/CDemVRT.cpp" line="88"/>
         <source>No georeference information found.</source>
         <translation>Nenalezeny žádné údaje o vyjádření prostorových vztahů.</translation>
     </message>
@@ -77,15 +77,25 @@
 <context>
     <name>CDetailsGeoCache</name>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="63"/>
         <source>none</source>
         <translation>žádné</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="102"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="63"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="133"/>
         <source>???</source>
-        <translation>???</translation>
+        <translation>?</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="160"/>
+        <source>Searching for images...</source>
+        <translation>Hledají se obrázky...</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="265"/>
+        <source>No images found</source>
+        <translation>Nebyly nalezeny žádné obrázky</translation>
     </message>
 </context>
 <context>
@@ -97,8 +107,12 @@
     </message>
     <message>
         <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <source>Enter new area name.</source>
+        <translation type="unfinished">Zadat název nové oblasti.</translation>
+    </message>
+    <message>
         <source>Enter new waypoint name.</source>
-        <translation>Zadat  nový název cestovního bodu.</translation>
+        <translation type="vanished">Zadat  nový název cestovního bodu.</translation>
     </message>
     <message>
         <source><h4>Comment:</h4></source>
@@ -225,6 +239,16 @@
         <translation>%1 %2</translation>
     </message>
     <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Upravit název...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Zadat název nové stopy.</translation>
+    </message>
+    <message>
         <source><h4>Comment:</h4></source>
         <translation type="obsolete"><h4>Poznámka:</h4></translation>
     </message>
@@ -290,69 +314,69 @@
 <context>
     <name>CGisListDB</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="73"/>
+        <location filename="../gis/CGisListDB.cpp" line="74"/>
         <source>Add Database</source>
         <translation>Přidat databázi</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="76"/>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
         <source>Add Folder</source>
         <translation>Přidat složku</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <location filename="../gis/CGisListDB.cpp" line="78"/>
         <source>Delete Folder</source>
         <translation>Smazat složku</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="80"/>
-        <location filename="../gis/CGisListDB.cpp" line="90"/>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <location filename="../gis/CGisListDB.cpp" line="91"/>
         <source>Delete Item</source>
         <translation>Smazat prvek</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="84"/>
+        <location filename="../gis/CGisListDB.cpp" line="85"/>
         <source>Remove Database</source>
         <translation>Odstranit databázi</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="87"/>
+        <location filename="../gis/CGisListDB.cpp" line="88"/>
         <source>Empty</source>
         <translation>Prázdný</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="251"/>
+        <location filename="../gis/CGisListDB.cpp" line="252"/>
         <source>Remove database...</source>
         <translation>Odstranit databázi...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="251"/>
+        <location filename="../gis/CGisListDB.cpp" line="252"/>
         <source>Do you realy want to remove '%1' from the list?</source>
         <translation>Opravdu chcete '%1' odstranit ze seznamu?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="293"/>
         <source>Delete database folder...</source>
         <translation>Smazat složku s databází...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="293"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
         <translation>Opravdu chcete "%1" odstranit z databáze?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="318"/>
-        <location filename="../gis/CGisListDB.cpp" line="333"/>
+        <location filename="../gis/CGisListDB.cpp" line="319"/>
+        <location filename="../gis/CGisListDB.cpp" line="334"/>
         <source>Remove items...</source>
         <translation>Odstranit prvky...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="318"/>
+        <location filename="../gis/CGisListDB.cpp" line="319"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
         <translation>Opravdu chcete smazat všechny prvky ze ztracených a nalezených? Tím budou trvale odstraněny.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="333"/>
+        <location filename="../gis/CGisListDB.cpp" line="334"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
         <translation>Opravdu chcete smazat všechny vybrané prvky ze ztracených a nalezených? Tím budou trvale odstraněny.</translation>
     </message>
@@ -360,98 +384,114 @@
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="90"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Save As...</source>
         <translation>Uložit jako...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
         <source>Save</source>
         <translation>Uložit</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="89"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Edit..</source>
         <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
+        <source>Update Project on Devices</source>
+        <translation>Aktualizovat projekt na zařízeních</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Close</source>
         <translation>Zavřít</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <source>Update Project on Device</source>
+        <translation>Aktualizovat projekt na zařízení</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="113"/>
         <source>Edit...</source>
         <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="114"/>
         <source>Copy to...</source>
         <translation>Kopírovat do...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="126"/>
         <source>Move Waypoint</source>
         <translation>Přesunout cestovní bod</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
+        <location filename="../gis/CGisListWks.cpp" line="127"/>
         <source>Proj. Waypoint...</source>
         <translation>Promítnutí cestovního bodu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="1215"/>
+        <location filename="../gis/CGisListWks.cpp" line="1253"/>
+        <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
+        <translation><b>Aktualizovat zařízení</b><p>Aktualizovat %1<br/>Počkejte, prosím...</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="115"/>
         <source>Track Profile</source>
         <translation>Profil stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="103"/>
+        <location filename="../gis/CGisListWks.cpp" line="117"/>
         <source>Select Range</source>
         <translation>Vybrat rozsah</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
         <source>Edit Track Points</source>
         <translation>Upravit body stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
         <source>Reverse Track</source>
         <translation>Obrátit stopu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
+        <location filename="../gis/CGisListWks.cpp" line="120"/>
         <source>Combine Tracks</source>
         <translation>Spojit stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Edit Area Points</source>
         <translation>Upravit body oblasti</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="93"/>
-        <location filename="../gis/CGisListWks.cpp" line="107"/>
+        <location filename="../gis/CGisListWks.cpp" line="102"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Delete</source>
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="657"/>
+        <location filename="../gis/CGisListWks.cpp" line="673"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ukládá se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="698"/>
+        <location filename="../gis/CGisListWks.cpp" line="714"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Nahrává se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1135"/>
+        <location filename="../gis/CGisListWks.cpp" line="1163"/>
         <source>Close all projects...</source>
         <translation>Zavřít všechny projekty...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1135"/>
+        <location filename="../gis/CGisListWks.cpp" line="1163"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Tímto budou všechny projekty odstraněny z pohledu.</translation>
     </message>
@@ -459,12 +499,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="382"/>
+        <location filename="../gis/CGisWidget.cpp" line="381"/>
         <source>Cut Track...</source>
         <translation>Rozkrajet stopu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="382"/>
+        <location filename="../gis/CGisWidget.cpp" line="381"/>
         <source>Do you want to delete the original track?</source>
         <translation>Opravdu chcete smazat původní stopu?</translation>
     </message>
@@ -515,12 +555,12 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="440"/>
+        <location filename="../CMainWindow.cpp" line="461"/>
         <source>Ele: %1%2</source>
         <translation>Výška: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="559"/>
+        <location filename="../CMainWindow.cpp" line="587"/>
         <source>Load GIS Data...</source>
         <translation>Nahrát data GIS...</translation>
     </message>
@@ -1172,17 +1212,17 @@
 <context>
     <name>CMapMAP</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="45"/>
+        <location filename="../map/CMapMAP.cpp" line="46"/>
         <source>Failed ...</source>
         <translation>Nepodařilo se...</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="62"/>
+        <location filename="../map/CMapMAP.cpp" line="63"/>
         <source>Failed to open: </source>
         <translation>Nepodařilo se otevřít: </translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="72"/>
+        <location filename="../map/CMapMAP.cpp" line="73"/>
         <source>Bad file format: </source>
         <translation>Špatný formát souboru: </translation>
     </message>
@@ -1190,63 +1230,67 @@
 <context>
     <name>CMapPathSetup</name>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="39"/>
+        <location filename="../map/CMapPathSetup.cpp" line="45"/>
         <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
         <translation>Přidat nebo odstranit cesty obsahující mapy. V cestě může být více map, ale žádná podcesta není zpracována. Podporovanými formáty jsou: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="54"/>
+        <location filename="../map/CMapPathSetup.cpp" line="60"/>
         <source>Select map path...</source>
         <translation>Vybrat cestu k mapě...</translation>
     </message>
+    <message>
+        <location filename="../map/CMapPathSetup.cpp" line="76"/>
+        <source>Select root path...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CMapPropSetup</name>
     <message>
-        <location filename="../map/CMapPropSetup.cpp" line="147"/>
         <source>Cache path...</source>
-        <translation>Cesta k vyrovnávací paměti...</translation>
+        <translation type="vanished">Cesta k vyrovnávací paměti...</translation>
     </message>
 </context>
 <context>
     <name>CMapRMAP</name>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="47"/>
-        <location filename="../map/CMapRMAP.cpp" line="56"/>
-        <location filename="../map/CMapRMAP.cpp" line="126"/>
-        <location filename="../map/CMapRMAP.cpp" line="143"/>
-        <location filename="../map/CMapRMAP.cpp" line="164"/>
-        <location filename="../map/CMapRMAP.cpp" line="186"/>
-        <location filename="../map/CMapRMAP.cpp" line="208"/>
-        <location filename="../map/CMapRMAP.cpp" line="236"/>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="47"/>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
         <source>This is not a TwoNav RMAP file.</source>
         <translation>Toto není soubor TwoNav RMAP</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="56"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
         <source>Unknown sub-format.</source>
         <translation>Neznámý podformát.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="126"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
         <source>Unknown version.</source>
         <translation>Neznámá verze</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="143"/>
-        <location filename="../map/CMapRMAP.cpp" line="164"/>
-        <location filename="../map/CMapRMAP.cpp" line="186"/>
-        <location filename="../map/CMapRMAP.cpp" line="208"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
         <source>Failed to read reference point.</source>
         <translation>Nepodařilo se přečíst referenční bod.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="236"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
         <source>Unknown projection and datum (%1%2).</source>
         <translation>Neznámé promítání a datum (%1%2).</translation>
     </message>
@@ -1254,18 +1298,18 @@
 <context>
     <name>CMapTMS</name>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="69"/>
-        <location filename="../map/CMapTMS.cpp" line="79"/>
+        <location filename="../map/CMapTMS.cpp" line="70"/>
+        <location filename="../map/CMapTMS.cpp" line="80"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="69"/>
+        <location filename="../map/CMapTMS.cpp" line="70"/>
         <source>Failed to open %1</source>
         <translation>Nepodařilo se otevřít %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="79"/>
+        <location filename="../map/CMapTMS.cpp" line="80"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -1274,12 +1318,12 @@ line %2, column %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="117"/>
+        <location filename="../map/CMapTMS.cpp" line="118"/>
         <source>Layer %1</source>
         <translation>Vrstva %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="288"/>
+        <location filename="../map/CMapTMS.cpp" line="289"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 dlaždic čeká<br/></translation>
     </message>
@@ -1287,32 +1331,56 @@ line %2, column %3:
 <context>
     <name>CMapVRT</name>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="46"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="88"/>
-        <location filename="../map/CMapVRT.cpp" line="123"/>
+        <location filename="../map/CMapVRT.cpp" line="47"/>
+        <location filename="../map/CMapVRT.cpp" line="61"/>
+        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="124"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="46"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
+        <location filename="../map/CMapVRT.cpp" line="47"/>
+        <location filename="../map/CMapVRT.cpp" line="61"/>
         <source>Failed to load file: %1</source>
         <translation>Nepodařilo se nahrát soubor %1
 </translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="88"/>
+        <location filename="../map/CMapVRT.cpp" line="89"/>
         <source>File must be 8 bit palette or gray indexed.</source>
         <translation>Soubor musí mít 8 bitovou barevnou paletu nebo být v odstínech šedi.</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="123"/>
+        <location filename="../map/CMapVRT.cpp" line="124"/>
         <source>No georeference information found.</source>
         <translation>Nenalezeny žádné údaje o vyjádření prostorových vztahů.</translation>
     </message>
 </context>
 <context>
+    <name>CMapVrtBuilder</name>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="29"/>
+        <source>Build GDAL VRT</source>
+        <translation>Sestavit GDAL VRT</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="51"/>
+        <source>Select files...</source>
+        <translation>Vybrat soubory...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="75"/>
+        <source>Select target file...</source>
+        <translation>Vybrat cílový soubor...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="196"/>
+        <source>!!! failed !!!
+</source>
+        <translation>Nepodařilo se!</translation>
+    </message>
+</context>
+<context>
     <name>CMapWMTS</name>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="45"/>
@@ -1375,7 +1443,7 @@ Neznámá stavba.</translation>
 <context>
     <name>CMouseEditTrk</name>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="46"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="47"/>
         <source><b>Edit Track Points</b><br/>Select a track point for more options.<br/></source>
         <translation><b>Upravit body stopy</b><br/>Vyberte bod stopy pro více voleb.<br/></translation>
     </message>
@@ -1414,7 +1482,7 @@ Neznámá stavba.</translation>
 <context>
     <name>CPhotoAlbum</name>
     <message>
-        <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
+        <location filename="../helpers/CPhotoAlbum.cpp" line="69"/>
         <source>Select images...</source>
         <translation>Vybrat obrázky...</translation>
     </message>
@@ -1480,22 +1548,22 @@ Neznámá stavba.</translation>
 <context>
     <name>CProjWizard</name>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="55"/>
+        <location filename="../grid/CProjWizard.cpp" line="57"/>
         <source>north</source>
         <translation>Sever</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="56"/>
+        <location filename="../grid/CProjWizard.cpp" line="58"/>
         <source>south</source>
         <translation>Jih</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="213"/>
+        <location filename="../grid/CProjWizard.cpp" line="215"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="213"/>
+        <location filename="../grid/CProjWizard.cpp" line="215"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1646,22 +1714,22 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>CQmsDb</name>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Existing file...</source>
         <translation>Stávající soubor...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Remove existing %1?</source>
         <translation>Odstranit stávající %1?</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="51"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="52"/>
         <source>Remove existing file %1</source>
         <translation>Odstranit stávající soubor %1</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="160"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="162"/>
         <source>%1: drop item with QLGT DB ID %2</source>
         <translation>%1: Zahodit prvek s ID DB QLGT %2</translation>
     </message>
@@ -1697,22 +1765,22 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
         <source>There is already a database with name '%1'</source>
         <translation>Již je databáze s názvem '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="83"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
         <source>New database...</source>
         <translation>Nová databáze...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="108"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
         <source>Open database...</source>
         <translation>Otevřít databázi...</translation>
     </message>
@@ -1875,27 +1943,27 @@ není platným vymezením soustavy souřadnic
         <translation><html><head/><body><p>Klepněte pro použití nynějšího měřítka jako nejmenšího měřítka pro zobrazení mapy.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="115"/>
+        <location filename="../dem/IDemPropSetup.ui" line="118"/>
         <source>Hillshading</source>
         <translation>Stínování kopců</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="141"/>
+        <location filename="../dem/IDemPropSetup.ui" line="144"/>
         <source>Slope </source>
         <translation>Sklon</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="183"/>
-        <location filename="../dem/IDemPropSetup.ui" line="190"/>
-        <location filename="../dem/IDemPropSetup.ui" line="197"/>
-        <location filename="../dem/IDemPropSetup.ui" line="204"/>
-        <location filename="../dem/IDemPropSetup.ui" line="223"/>
-        <location filename="../dem/IDemPropSetup.ui" line="242"/>
-        <location filename="../dem/IDemPropSetup.ui" line="261"/>
-        <location filename="../dem/IDemPropSetup.ui" line="268"/>
-        <location filename="../dem/IDemPropSetup.ui" line="275"/>
-        <location filename="../dem/IDemPropSetup.ui" line="294"/>
-        <location filename="../dem/IDemPropSetup.ui" line="301"/>
+        <location filename="../dem/IDemPropSetup.ui" line="186"/>
+        <location filename="../dem/IDemPropSetup.ui" line="193"/>
+        <location filename="../dem/IDemPropSetup.ui" line="200"/>
+        <location filename="../dem/IDemPropSetup.ui" line="207"/>
+        <location filename="../dem/IDemPropSetup.ui" line="226"/>
+        <location filename="../dem/IDemPropSetup.ui" line="245"/>
+        <location filename="../dem/IDemPropSetup.ui" line="264"/>
+        <location filename="../dem/IDemPropSetup.ui" line="271"/>
+        <location filename="../dem/IDemPropSetup.ui" line="278"/>
+        <location filename="../dem/IDemPropSetup.ui" line="297"/>
+        <location filename="../dem/IDemPropSetup.ui" line="304"/>
         <source>TextLabel</source>
         <translation>Textový štítek</translation>
     </message>
@@ -1931,51 +1999,62 @@ není platným vymezením soustavy souřadnic
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="67"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="89"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="115"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="128"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="141"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="154"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="167"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="193"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="206"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="219"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="232"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="245"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="47"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="73"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="86"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="99"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="112"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="151"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="164"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="177"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="190"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="203"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="252"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="267"/>
         <source>about:blank</source>
         <translation>o:prázdný</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="82"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="40"/>
         <source>Position:</source>
         <translation>Poloha:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="102"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="60"/>
         <source>Difficulty</source>
         <translation>Obtížnost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="180"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="138"/>
         <source>Terrain</source>
         <translation>Terén</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="32"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="214"/>
+        <source>Update spoilers</source>
+        <translation>Nahrát spoiler znovu</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="217"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="275"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="256"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="293"/>
         <source>Hint:</source>
         <translation>Rada:</translation>
     </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="324"/>
+        <source>TextLabel</source>
+        <translation>Textový štítek</translation>
+    </message>
 </context>
 <context>
     <name>IDetailsOvlArea</name>
@@ -2091,88 +2170,98 @@ není platným vymezením soustavy souřadnic
 -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="237"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="182"/>
+        <source>Graph Control</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="203"/>
         <source>Profile</source>
         <translation>Profil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="244"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="370"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="210"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="443"/>
         <source>Speed</source>
         <translation>Rychlost</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="251"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="217"/>
         <source>Progress</source>
         <translation>Postup</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="194"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
+        <source>Track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="253"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
         <source>Points</source>
         <translation>Body</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="423"/>
         <source>Time</source>
         <translation>Čas</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="355"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="428"/>
         <source>Ele.</source>
         <translation>Výška</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="360"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="433"/>
         <source>Delta</source>
         <translation>Rozdíl</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="365"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="438"/>
         <source>Dist.</source>
         <translation>Vzdál.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="448"/>
         <source>Slope</source>
         <translation>Sklon</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="380"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="453"/>
         <source>Ascend</source>
         <translation>Stoupání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="385"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="458"/>
         <source>Descend</source>
         <translation>Klesání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="390"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="463"/>
         <source>Position</source>
         <translation>Poloha</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="156"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="347"/>
         <source>Info</source>
         <translation>Informace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="273"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="308"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="472"/>
         <source>Filter</source>
         <translation>Filtr</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="509"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -2589,24 +2678,24 @@ není platným vymezením soustavy souřadnic
         <translation>Formulář</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="28"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="45"/>
         <source>Source Database:</source>
         <translation>Zdrojová databáze:</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="35"/>
-        <location filename="../qlgt/IImportDatabase.ui" line="76"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="52"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="93"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="42"/>
-        <location filename="../qlgt/IImportDatabase.ui" line="83"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="22"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="63"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="69"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="86"/>
         <source>Target Database:</source>
         <translation>Cílová databáze:</translation>
     </message>
@@ -2696,17 +2785,17 @@ není platným vymezením soustavy souřadnic
         <translation>Nástroj</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="128"/>
+        <location filename="../IMainWindow.ui" line="129"/>
         <source>Maps</source>
         <translation>Mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="165"/>
+        <location filename="../IMainWindow.ui" line="166"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Digitální výškový model (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="198"/>
+        <location filename="../IMainWindow.ui" line="199"/>
         <source>Data</source>
         <translation>Data</translation>
     </message>
@@ -2715,78 +2804,78 @@ není platným vymezením soustavy souřadnic
         <translation type="obsolete">Přidat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="217"/>
+        <location filename="../IMainWindow.ui" line="218"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="229"/>
+        <location filename="../IMainWindow.ui" line="230"/>
         <source>Show Scale</source>
         <translation>Ukázat měřítko</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="238"/>
+        <location filename="../IMainWindow.ui" line="239"/>
         <source>Setup Map Font</source>
         <translation>Nastavit písmo mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="250"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Show Grid</source>
         <translation>Ukázat mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="253"/>
+        <location filename="../IMainWindow.ui" line="254"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="262"/>
+        <location filename="../IMainWindow.ui" line="263"/>
         <source>Setup Grid</source>
         <translation>Nastavit mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="265"/>
+        <location filename="../IMainWindow.ui" line="266"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="277"/>
+        <location filename="../IMainWindow.ui" line="278"/>
         <source>Flip Mouse Wheel</source>
         <translation>Obrátit kolečko myši</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="286"/>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="287"/>
+        <location filename="../IMainWindow.ui" line="290"/>
         <source>Setup Map Paths</source>
         <translation>Nastavit cesty k mapám</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="302"/>
         <source>POI Text</source>
         <translation>Text POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="313"/>
+        <location filename="../IMainWindow.ui" line="314"/>
         <source>Night / Day</source>
         <translation>Noc/Den</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="326"/>
         <source>Map Tool Tip</source>
         <translation>Rada k nástroji pro mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="335"/>
         <source>Setup DEM Paths</source>
         <translation>Nastavit cesty k DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="343"/>
+        <location filename="../IMainWindow.ui" line="344"/>
         <source>About</source>
         <translation>O programu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="352"/>
+        <location filename="../IMainWindow.ui" line="353"/>
         <source>Help</source>
         <translation>Nápověda</translation>
     </message>
@@ -2795,98 +2884,108 @@ není platným vymezením soustavy souřadnic
         <translation type="obsolete">Nastavit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="211"/>
-        <location filename="../IMainWindow.ui" line="214"/>
+        <location filename="../IMainWindow.ui" line="212"/>
+        <location filename="../IMainWindow.ui" line="215"/>
         <source>Add Map View</source>
         <translation>Přidat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="361"/>
-        <location filename="../IMainWindow.ui" line="364"/>
+        <location filename="../IMainWindow.ui" line="362"/>
+        <location filename="../IMainWindow.ui" line="365"/>
         <source>Setup Map View</source>
         <translation>Nastavit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="374"/>
         <source>Load GIS Data</source>
         <translation>Nahrát data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="376"/>
+        <location filename="../IMainWindow.ui" line="377"/>
         <source>Load projects from file</source>
         <translation>Nahrát projekty ze souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="379"/>
+        <location filename="../IMainWindow.ui" line="380"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="388"/>
+        <location filename="../IMainWindow.ui" line="389"/>
         <source>Save All GIS Data</source>
         <translation>Uložit všechna data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="391"/>
+        <location filename="../IMainWindow.ui" line="392"/>
         <source>Save all projects in the workspace</source>
         <translation>Uložit všechny projekty na pracovním místě</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="394"/>
+        <location filename="../IMainWindow.ui" line="395"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="403"/>
+        <location filename="../IMainWindow.ui" line="404"/>
         <source>Setup Time Zone</source>
         <translation>Nastavit časové pásmo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="412"/>
+        <location filename="../IMainWindow.ui" line="413"/>
         <source>Add empty project</source>
         <translation>Přidat prázdný projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="424"/>
+        <location filename="../IMainWindow.ui" line="425"/>
         <source>Search Google</source>
         <translation>Hledat pomocí Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="433"/>
+        <location filename="../IMainWindow.ui" line="434"/>
         <source>Close all projects</source>
         <translation>Zavřít všechny projekty</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
+        <location filename="../IMainWindow.ui" line="437"/>
         <source>F8</source>
         <translation>F8</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="445"/>
+        <location filename="../IMainWindow.ui" line="446"/>
         <source>Setup Units</source>
         <translation>Nastavit jednotky</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="455"/>
         <source>Setup Workspace</source>
         <translation>Nastavit pohled</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="458"/>
         <source>Setup save on exit.</source>
         <translation>Nastavit uložení při ukončení.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="467"/>
         <source>Import Database from QLandkarte</source>
         <translation>Zavést databázi z QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="470"/>
         <source>Import QLandkarte GT database</source>
         <translation>Zavést databázi GT QLandkarte</translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="479"/>
+        <source>VRT Builder</source>
+        <translation>Sestavovač VRT</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="482"/>
+        <source>GUI front end to gdalbuildvrt</source>
+        <translation>Rozhraní pro gdalbuildvrt</translation>
+    </message>
+    <message>
         <source>Setup Database</source>
         <translation type="obsolete">Nastavit databázi</translation>
     </message>
@@ -2926,13 +3025,20 @@ není platným vymezením soustavy souřadnic
         <translation>Nastavit cesty k mapám</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="31"/>
-        <location filename="../map/IMapPathSetup.ui" line="51"/>
+        <location filename="../map/IMapPathSetup.ui" line="20"/>
+        <source>Root path of tile cache for online maps:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPathSetup.ui" line="36"/>
+        <location filename="../map/IMapPathSetup.ui" line="73"/>
+        <location filename="../map/IMapPathSetup.ui" line="93"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="93"/>
+        <location filename="../map/IMapPathSetup.ui" line="29"/>
+        <location filename="../map/IMapPathSetup.ui" line="135"/>
         <source>-</source>
         <translation>-</translation>
     </message>
@@ -2957,7 +3063,6 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../map/IMapPropSetup.ui" line="53"/>
         <location filename="../map/IMapPropSetup.ui" line="90"/>
-        <location filename="../map/IMapPropSetup.ui" line="200"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -2987,22 +3092,61 @@ není platným vymezením soustavy souřadnic
         <translation>Body</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="190"/>
+        <location filename="../map/IMapPropSetup.ui" line="233"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="220"/>
+        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <source>Cache Path</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPropSetup.ui" line="196"/>
         <source>Cache Size (MB)</source>
         <translation>Velikost vyrovnávací paměti (MB)</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <location filename="../map/IMapPropSetup.ui" line="216"/>
         <source>Expiration (Days)</source>
         <translation>Datum vypršení (dny)</translation>
     </message>
 </context>
 <context>
+    <name>IMapVrtBuilder</name>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="14"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="22"/>
+        <location filename="../map/IMapVrtBuilder.ui" line="56"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="39"/>
+        <source>Select source files:</source>
+        <translation>Vybrat zdrojové soubory:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="79"/>
+        <source>Target Filename:</source>
+        <translation>Název cílového souboru:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="86"/>
+        <source>-</source>
+        <translation>-</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="95"/>
+        <source>Start</source>
+        <translation>Spustit</translation>
+    </message>
+</context>
+<context>
     <name>IMouseEditLine</name>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
@@ -3872,23 +4016,33 @@ nebo
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../GeoMath.cpp" line="89"/>
+        <location filename="../GeoMath.cpp" line="160"/>
+        <location filename="../GeoMath.cpp" line="166"/>
         <source>Error</source>
         <translation>Chyba</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="89"/>
+        <location filename="../GeoMath.cpp" line="160"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation>Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss" nebo "[N|S] ddd.ddd [W|E] ddd.ddd"</translation>
+    </message>
+    <message>
+        <location filename="../GeoMath.cpp" line="166"/>
+        <source>Position values out of bounds. </source>
+        <translation>Polohy mimo platné hodnoty. </translation>
+    </message>
+    <message>
         <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
-        <translation>Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss"</translation>
+        <translation type="vanished">Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss"</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="115"/>
         <source>Failed to read...</source>
         <translation>Nepodařilo se přečíst...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -3897,7 +4051,7 @@ line %2, column %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="115"/>
         <source>Not a GPX file: </source>
         <translation>Není souborem GPX: </translation>
     </message>
@@ -3932,211 +4086,212 @@ Areas: %1</source>
 Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="206"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="208"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Název souboru: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="223"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="225"/>
         <source>Waypoints: %1</source>
         <translation>Cestovní body: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="227"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="229"/>
         <source>Tracks: %1</source>
         <translation>Stopy: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="231"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="233"/>
         <source>Routes: %1</source>
         <translation>Cesty: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
         <source>Areas: %1</source>
         <translation>Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="291"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="293"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="406"/>
+        <location filename="../gis/CGisListDB.cpp" line="407"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
         <translation>Jste si jistý, že chcete smazat '%1' ze složky '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="407"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="408"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="294"/>
         <source>Delete...</source>
         <translation>Smazat...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="93"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open...</source>
         <translation>Nepodařilo se otevřít...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="93"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
         <translation>Nepodařilo se otevřít %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="196"/>
+        <location filename="../gis/db/CDBProject.cpp" line="126"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="208"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="157"/>
         <source>Save GIS data to...</source>
         <translation>Uložit data GIS do...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="157"/>
+        <location filename="../gis/db/CDBProject.cpp" line="158"/>
         <source>Save ...</source>
         <translation>Uložit...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="157"/>
+        <location filename="../gis/db/CDBProject.cpp" line="158"/>
         <source>Abort save</source>
         <translation>Zrušit ukládání</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="271"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="283"/>
         <source>File exists ...</source>
         <translation>Soubor existuje...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="272"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="284"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
         <translation>Soubor existuje a nebyl vytvořen programem QMapShack. Pokud stisknete Ano, budou všechna data v tomto souboru ztracena. I když by tento soubor obsahoval data GPX a byl nahrán programem QMapShack, QMapShack nemusí být schopen nahrát a uložit všechny prvky tohoto souboru.  Tyto prvky budou ztraceny. Doporučuje se použít jiný soubor. <b>Opravdu chcete soubor přepsat?</b></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="364"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="393"/>
         <source>Saveing GIS data failed...</source>
         <translation>Nepodařilo se uložit data GIS...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="350"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="379"/>
         <source>Failed to create file '%1'</source>
         <translation>Nepodařilo se vytvořit soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="359"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="388"/>
         <source>Failed to write file '%1'</source>
         <translation>Nepodařilo se zapsat soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="294"/>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
         <source>Initial version.</source>
         <translation>Počáteční verze.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="388"/>
+        <location filename="../gis/IGisItem.cpp" line="407"/>
         <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
         <translation>Tento prvek je pravděpodobně pouze pro čtení, protože nebyl vytvořen v programu QMapShack. Obvykle nemáte zájem měnit zavedená data. Ale pokud si myslíte, že je to tentokrát na místě, stiskněte OK.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="389"/>
+        <location filename="../gis/IGisItem.cpp" line="408"/>
         <source>Read Only Mode...</source>
         <translation>Režim pouze pro čtení...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="587"/>
+        <location filename="../gis/IGisItem.cpp" line="613"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Poznámka:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="590"/>
+        <location filename="../gis/IGisItem.cpp" line="616"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- žádná poznámka ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="646"/>
+        <location filename="../gis/IGisItem.cpp" line="627"/>
+        <location filename="../gis/IGisItem.cpp" line="672"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Popis:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="649"/>
+        <location filename="../gis/IGisItem.cpp" line="630"/>
+        <location filename="../gis/IGisItem.cpp" line="675"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
+        <location filename="../gis/IGisItem.cpp" line="641"/>
+        <location filename="../gis/IGisItem.cpp" line="686"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Odkazy:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
+        <location filename="../gis/IGisItem.cpp" line="644"/>
+        <location filename="../gis/IGisItem.cpp" line="689"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- žádné odkazy ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="333"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="363"/>
         <source>Length: %1 %2</source>
         <translation>Délka: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="340"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="370"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation>, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="348"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
         <source>Time: %1</source>
         <translation>Čas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="351"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="361"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="381"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="391"/>
         <source>, Speed: %1 %2</source>
         <translation>, Rychlost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="388"/>
         <source>Moving: %1</source>
         <translation>Pohyb: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="397"/>
         <source>Start: %1</source>
         <translation>Začátek: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="372"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="402"/>
         <source>End: %1</source>
         <translation>Konec: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="376"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="406"/>
         <source>Points: %1 (%2)</source>
         <translation>Body: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="441"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="478"/>
         <source>Ele.: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source> slope: %1%3 (%2%)</source>
         <translation> sklon: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1089"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1126"/>
         <source>Hide points.</source>
         <translation>Skrýt body.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1123"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1160"/>
         <source>Show points.</source>
         <translation>Ukázat body.</translation>
     </message>
@@ -4145,37 +4300,37 @@ Název souboru: %1</translation>
         <translation type="obsolete"> sklon: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="449"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
         <source> speed: %1%2</source>
         <translation> rychlost: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="498"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Stoupání: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="465"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="502"/>
         <source>Ascend: - (-)</source>
         <translation>Stoupání: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="475"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="512"/>
         <source> Descend: - (-) </source>
         <translation> Klesání: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="496"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="533"/>
         <source> Moving: - (-) </source>
         <translation> Pohyb: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="471"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="508"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Klesání: %1%2 (%3%) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="266"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="287"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Změněny body stop. Obětována veškerá předchozí data.</translation>
     </message>
@@ -4184,17 +4339,17 @@ Název souboru: %1</translation>
         <translation type="obsolete"> sklon: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="519"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Vzdálenost: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
         <source>Dist.: - (-)</source>
         <translation>Vzdálenost: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="492"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="529"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation> Pohyb: %1%2 (%3%) </translation>
     </message>
@@ -4221,7 +4376,7 @@ Název souboru: %1</translation>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="162"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="164"/>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
         <source>_Clone</source>
         <translation>_Klon</translation>
@@ -4269,86 +4424,91 @@ Název souboru: %1</translation>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="520"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="139"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1493"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="376"/>
         <source>Changed links</source>
         <translation>Změněné odkazy</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="532"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1440"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1505"/>
         <source>Changed color</source>
         <translation>Změněná barva</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="229"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="242"/>
         <source>Elevation: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="240"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="253"/>
         <source>Proximity: %1 %2</source>
         <translation>Blízkost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1475"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
         <source>Changed name</source>
         <translation>Změněný název</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="946"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="961"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="980"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1039"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1185"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="190"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="107"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="190"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat nový název pro cestovní bod.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="318"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
         <source>Changed position</source>
         <translation>Změněná poloha</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="340"/>
         <source>Changed elevation</source>
         <translation>Změněná výška</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="330"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="346"/>
         <source>Changed proximity</source>
         <translation>Změněná blízkost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="358"/>
         <source>Changed icon</source>
         <translation>Změněná ikona</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="382"/>
         <source>Changed images</source>
         <translation>Změněné obrázky</translation>
     </message>
     <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Add image</source>
+        <translation>Přidat obrázek</translation>
+    </message>
+    <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="127"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1481"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="364"/>
         <source>Changed comment</source>
         <translation>Změněná poznámka</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="133"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1487"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="370"/>
         <source>Changed description</source>
         <translation>Změněný popis</translation>
     </message>
@@ -4368,28 +4528,28 @@ Název souboru: %1</translation>
         <translation>Nedostupné</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="464"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="845"/>
         <source>Warning...</source>
         <translation>Varování...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="464"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
         <translation>Toto je souborový typ s neznámým druhem mnohoúhelníku. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="845"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
         <translation>Toto je souborový typ s neznámým druhem čáry. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="946"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="961"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="980"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1039"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1185"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="107"/>
         <source>Enter new track name.</source>
         <translation>Zadat název nové stopy.</translation>
     </message>
@@ -4421,26 +4581,26 @@ Název souboru: %1</translation>
         <translation>Kopírovat informační příznak ze stopy QLandkarte GT</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Corrupt track ...</source>
         <translation>Poškozená stopa...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
         <translation>Počet bodů stopy neodpovídá počtu bodů stopy cvičebních dat.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
         <translation>Počet bodů stopy neodpovídá počtu rozšířených bodů stopy.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
         <translation>Počet bodů stopy neodpovídá počtu stínových bodů stopy.</translation>
     </message>
@@ -4495,14 +4655,61 @@ Název souboru: %1</translation>
         <translation>Rychlost změněna na %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <location filename="../gis/CGisListWks.cpp" line="897"/>
         <source>Delete project...</source>
-        <translation type="unfinished"></translation>
+        <translation>Smazat projekt...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <location filename="../gis/CGisListWks.cpp" line="897"/>
         <source>Do you really want to delete %1?</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete smazat %1?</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="189"/>
+        <location filename="../gis/tnv/serialization.cpp" line="292"/>
+        <location filename="../gis/tnv/serialization.cpp" line="360"/>
+        <location filename="../gis/tnv/serialization.cpp" line="389"/>
+        <location filename="../gis/tnv/serialization.cpp" line="400"/>
+        <location filename="../gis/tnv/serialization.cpp" line="421"/>
+        <location filename="../gis/tnv/serialization.cpp" line="549"/>
+        <location filename="../gis/tnv/serialization.cpp" line="577"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="606"/>
+        <location filename="../gis/tnv/serialization.cpp" line="634"/>
+        <location filename="../gis/tnv/serialization.cpp" line="693"/>
+        <source>Error...</source>
+        <translation>Chyba...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="189"/>
+        <location filename="../gis/tnv/serialization.cpp" line="292"/>
+        <location filename="../gis/tnv/serialization.cpp" line="360"/>
+        <location filename="../gis/tnv/serialization.cpp" line="549"/>
+        <source>Failed to open %1.</source>
+        <translation>Nepodařilo se otevřít %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="389"/>
+        <location filename="../gis/tnv/serialization.cpp" line="400"/>
+        <location filename="../gis/tnv/serialization.cpp" line="577"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation>Jako formát je podporován jen lon/lat WGS 84.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="421"/>
+        <location filename="../gis/tnv/serialization.cpp" line="606"/>
+        <location filename="../gis/tnv/serialization.cpp" line="634"/>
+        <location filename="../gis/tnv/serialization.cpp" line="693"/>
+        <source>Failed to read data.</source>
+        <translation>Nepodařilo se přečíst data.</translation>
+    </message>
+    <message>
+        <location filename="../device/CDeviceGarmin.cpp" line="191"/>
+        <source>Picture%1</source>
+        <translation>Obrázek %1</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_de.ts
index 695c581..1c49dbc 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_de.ts
@@ -8,7 +8,7 @@
         <translation type="obsolete">Ansicht %1</translation>
     </message>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="59"/>
+        <location filename="../canvas/CCanvas.cpp" line="61"/>
         <source>View %1</source>
         <translation>Ansicht %1</translation>
     </message>
@@ -29,12 +29,12 @@
 <context>
     <name>CDemPathSetup</name>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="39"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="41"/>
         <source>Add or remove paths containing DEM data. There can be multiple files in a path but no sub-path is parsed. Supported formats are: %1</source>
         <translation>Hinzufügen oder Entfernen von Verzeichnissen mit DEM Daten. Im Verzeichnis können mehrere Dateien vorliegen. Allerdings wird kein Unterverzeichnis durchsucht. Unterstützte Formate sind: %1</translation>
     </message>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="54"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="56"/>
         <source>Select DEM file path...</source>
         <translation>Pfad für DEM Dateien wählen...</translation>
     </message>
@@ -50,21 +50,21 @@
 <context>
     <name>CDemVRT</name>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
-        <location filename="../dem/CDemVRT.cpp" line="51"/>
-        <location filename="../dem/CDemVRT.cpp" line="60"/>
-        <location filename="../dem/CDemVRT.cpp" line="87"/>
+        <location filename="../dem/CDemVRT.cpp" line="45"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="88"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
+        <location filename="../dem/CDemVRT.cpp" line="45"/>
         <source>Failed to load file: %1</source>
         <translation>Die Datei konnte nicht geladen werden: %1</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="51"/>
-        <location filename="../dem/CDemVRT.cpp" line="60"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation>DEM muss aus einem Satz mit 16 bit oder 32 bit Daten bestehen.</translation>
     </message>
@@ -73,7 +73,7 @@
         <translation type="obsolete">Das DEM muss aus einem Satz mit 16 bit oder 32 bit Daten bestehen.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="87"/>
+        <location filename="../dem/CDemVRT.cpp" line="88"/>
         <source>No georeference information found.</source>
         <translation>Keine Georeferenzierung gefunden.</translation>
     </message>
@@ -81,16 +81,26 @@
 <context>
     <name>CDetailsGeoCache</name>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="63"/>
         <source>none</source>
         <translation>keiner</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="102"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="63"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="133"/>
         <source>???</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="160"/>
+        <source>Searching for images...</source>
+        <translation>Suche nach Bildern...</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="265"/>
+        <source>No images found</source>
+        <translation>Keine Bilder gefunden</translation>
+    </message>
 </context>
 <context>
     <name>CDetailsOvlArea</name>
@@ -101,8 +111,12 @@
     </message>
     <message>
         <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <source>Enter new area name.</source>
+        <translation>Geben Sie einen neuen Namen für das Gebiet ein.</translation>
+    </message>
+    <message>
         <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen ein.</translation>
+        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
     <message>
         <source><h4>Comment:</h4></source>
@@ -166,7 +180,7 @@
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
         <source><h2>Areas</h2></source>
-        <translation><h2>Flächen</h2></translation>
+        <translation><h2>Gebiete</h2></translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
@@ -178,7 +192,7 @@
         <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Enter new project name.</source>
-        <translation>Geben Sie einen Projektnamen ein.</translation>
+        <translation>Geben Sie einen neuen Namen für das Projekt ein.</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="509"/>
@@ -233,6 +247,16 @@
         <translation></translation>
     </message>
     <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <source>Edit name...</source>
+        <translation>Name bearbeiten...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <source>Enter new track name.</source>
+        <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
+    </message>
+    <message>
         <source><h4>Comment:</h4></source>
         <translation type="obsolete"><h4>Kommentar:</h4></translation>
     </message>
@@ -283,16 +307,16 @@
     <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen ein.</translation>
+        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
     <message>
         <source>Enter new elevation.</source>
-        <translation type="obsolete">Geben Sie eine Höhe ein.</translation>
+        <translation type="obsolete">Geben Sie eine neue Höhe ein.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
         <source>Enter new proximity range.</source>
-        <translation>Geben Sie einen Abstandsalarm ein.</translation>
+        <translation>Geben Sie einen neuen Abstandsalarm ein.</translation>
     </message>
 </context>
 <context>
@@ -314,12 +338,12 @@
         <translation type="obsolete">Datenbank</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="76"/>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
         <source>Add Folder</source>
         <translation>Ordner hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <location filename="../gis/CGisListDB.cpp" line="78"/>
         <source>Delete Folder</source>
         <translation>Ordner löschen</translation>
     </message>
@@ -328,59 +352,59 @@
         <translation type="obsolete">Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="73"/>
+        <location filename="../gis/CGisListDB.cpp" line="74"/>
         <source>Add Database</source>
         <translation>Datenbank hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="80"/>
-        <location filename="../gis/CGisListDB.cpp" line="90"/>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <location filename="../gis/CGisListDB.cpp" line="91"/>
         <source>Delete Item</source>
         <translation>Element löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="84"/>
+        <location filename="../gis/CGisListDB.cpp" line="85"/>
         <source>Remove Database</source>
         <translation>Datenbank entfernen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="87"/>
+        <location filename="../gis/CGisListDB.cpp" line="88"/>
         <source>Empty</source>
         <translation>Leer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="251"/>
+        <location filename="../gis/CGisListDB.cpp" line="252"/>
         <source>Remove database...</source>
         <translation>Datenbank entfernen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="251"/>
+        <location filename="../gis/CGisListDB.cpp" line="252"/>
         <source>Do you realy want to remove '%1' from the list?</source>
         <translation>Wollen Sie '%1' wirklich aus der Liste entfernen?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="293"/>
         <source>Delete database folder...</source>
         <translation>Datenbankordner löschen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="293"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
         <translation>Sind Sie sicher, dass Sie "%1" aus der Datenbank löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="318"/>
-        <location filename="../gis/CGisListDB.cpp" line="333"/>
+        <location filename="../gis/CGisListDB.cpp" line="319"/>
+        <location filename="../gis/CGisListDB.cpp" line="334"/>
         <source>Remove items...</source>
         <translation>Element entfernen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="318"/>
+        <location filename="../gis/CGisListDB.cpp" line="319"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
         <translation>Sind Sie sicher, dass Sie alle Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaftentfernt.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="333"/>
+        <location filename="../gis/CGisListDB.cpp" line="334"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
         <translation>Sind Sie sicher, dass Sie alle ausgewählten Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaft entfernt.</translation>
     </message>
@@ -388,102 +412,118 @@
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
         <source>Save</source>
         <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="90"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Save As...</source>
         <translation>Speichern unter...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="89"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Edit..</source>
         <translation>Bearbeiten..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
+        <source>Update Project on Devices</source>
+        <translation>Aktualisiere das Projekt auf allen Geräten </translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Close</source>
         <translation>Schließen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <source>Update Project on Device</source>
+        <translation>Aktualisiere das Projekt auf dem Gerät</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="113"/>
         <source>Edit...</source>
         <translation>Bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="114"/>
         <source>Copy to...</source>
         <translation>Kopieren nach...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="126"/>
         <source>Move Waypoint</source>
         <translation>Wegpunkt verschieben</translation>
     </message>
     <message>
+        <location filename="../gis/CGisListWks.cpp" line="1215"/>
+        <location filename="../gis/CGisListWks.cpp" line="1253"/>
+        <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
+        <translation><b>Aktualisieren der Geräte</b><p>Aktualisiere %1<br/>Bitte warten...</p></translation>
+    </message>
+    <message>
         <source>Move Waypoint...</source>
         <translation type="obsolete">Wegpunkt verschieben...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
+        <location filename="../gis/CGisListWks.cpp" line="127"/>
         <source>Proj. Waypoint...</source>
         <translation>Wegpunkt Projektion...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="115"/>
         <source>Track Profile</source>
         <translation>Trackprofil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="103"/>
+        <location filename="../gis/CGisListWks.cpp" line="117"/>
         <source>Select Range</source>
         <translation>Bereich wählen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
         <source>Edit Track Points</source>
         <translation>Trackpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
         <source>Reverse Track</source>
         <translation>Track umkehren</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
+        <location filename="../gis/CGisListWks.cpp" line="120"/>
         <source>Combine Tracks</source>
         <translation>Tracks verbinden</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Edit Area Points</source>
-        <translation>Flächenpunkte bearbeiten</translation>
+        <translation>Gebietspunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="93"/>
-        <location filename="../gis/CGisListWks.cpp" line="107"/>
+        <location filename="../gis/CGisListWks.cpp" line="102"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Delete</source>
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="657"/>
+        <location filename="../gis/CGisListWks.cpp" line="673"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ansicht speichern. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="698"/>
+        <location filename="../gis/CGisListWks.cpp" line="714"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Ansicht laden. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1135"/>
+        <location filename="../gis/CGisListWks.cpp" line="1163"/>
         <source>Close all projects...</source>
-        <translation>Alle Projkete schließen...</translation>
+        <translation>Alle Projekte schließen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1135"/>
+        <location filename="../gis/CGisListWks.cpp" line="1163"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Dies wird alle Projekte aus der Ansicht entfernen.</translation>
     </message>
@@ -499,12 +539,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="382"/>
+        <location filename="../gis/CGisWidget.cpp" line="381"/>
         <source>Cut Track...</source>
         <translation>Track teilen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="382"/>
+        <location filename="../gis/CGisWidget.cpp" line="381"/>
         <source>Do you want to delete the original track?</source>
         <translation>Wollen Sie den ursprünglichen Track löschen?</translation>
     </message>
@@ -563,12 +603,12 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="440"/>
+        <location filename="../CMainWindow.cpp" line="461"/>
         <source>Ele: %1%2</source>
         <translation>Höhe: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="559"/>
+        <location filename="../CMainWindow.cpp" line="587"/>
         <source>Load GIS Data...</source>
         <translation>GIS Daten laden...</translation>
     </message>
@@ -931,17 +971,17 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Large urban area (&gt;200K)</source>
-        <translation></translation>
+        <translation>Großes Wohngebiet (&gt;200K)</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Small urban area (&lt;200K)</source>
-        <translation></translation>
+        <translation>Kleines Wohngebiet (&lt;200K)</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Rural housing area</source>
-        <translation></translation>
+        <translation>Ländliches Wohngebiet</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="359"/>
@@ -971,7 +1011,7 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="364"/>
         <source>Marina</source>
-        <translation></translation>
+        <translation>Jachthafen</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="365"/>
@@ -1178,7 +1218,7 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="738"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
-        <translation>Die Datei enthält verschlüsselte Daten. Garmin möchte nicht dass diese Datei mit einer anderen Software, als der von Garmin bereitgestellten, benützt wird.</translation>
+        <translation>Die Datei enthält verschlüsselte Daten. Garmin möchte nicht dass diese Datei mit einer anderen Software, als der von Garmin bereitgestellten, benutzt wird.</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="2467"/>
@@ -1221,17 +1261,17 @@
 <context>
     <name>CMapMAP</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="45"/>
+        <location filename="../map/CMapMAP.cpp" line="46"/>
         <source>Failed ...</source>
         <translation>Fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="62"/>
+        <location filename="../map/CMapMAP.cpp" line="63"/>
         <source>Failed to open: </source>
         <translation>Öffnen fehlgeschlagen: </translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="72"/>
+        <location filename="../map/CMapMAP.cpp" line="73"/>
         <source>Bad file format: </source>
         <translation>Falsches Dateiformat: </translation>
     </message>
@@ -1239,20 +1279,24 @@
 <context>
     <name>CMapPathSetup</name>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="39"/>
+        <location filename="../map/CMapPathSetup.cpp" line="45"/>
         <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
         <translation>Hinzufügen oder Entfernen von Karten. In einem Verzeichnis können mehrere Karten liegen. Unterverzeichnisse werden jedoch nicht durchsucht. Unterstützte Formate sind: %1 </translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="54"/>
+        <location filename="../map/CMapPathSetup.cpp" line="60"/>
         <source>Select map path...</source>
         <translation>Kartenpfad wählen...</translation>
     </message>
+    <message>
+        <location filename="../map/CMapPathSetup.cpp" line="76"/>
+        <source>Select root path...</source>
+        <translation>Hauptverzeichnis auswählen...</translation>
+    </message>
 </context>
 <context>
     <name>CMapPropSetup</name>
     <message>
-        <location filename="../map/CMapPropSetup.cpp" line="147"/>
         <source>Cache path...</source>
         <translation>Cache Pfad...</translation>
     </message>
@@ -1260,61 +1304,61 @@
 <context>
     <name>CMapRMAP</name>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="47"/>
-        <location filename="../map/CMapRMAP.cpp" line="56"/>
-        <location filename="../map/CMapRMAP.cpp" line="126"/>
-        <location filename="../map/CMapRMAP.cpp" line="143"/>
-        <location filename="../map/CMapRMAP.cpp" line="164"/>
-        <location filename="../map/CMapRMAP.cpp" line="186"/>
-        <location filename="../map/CMapRMAP.cpp" line="208"/>
-        <location filename="../map/CMapRMAP.cpp" line="236"/>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="47"/>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
         <source>This is not a TwoNav RMAP file.</source>
         <translation>Das ist keine bekannte TwoNav RMAP Datei.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="56"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
         <source>Unknown sub-format.</source>
         <translation>Unbekanntes Unterformat.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="126"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
         <source>Unknown version.</source>
         <translation>Unbekannte Version.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="143"/>
-        <location filename="../map/CMapRMAP.cpp" line="164"/>
-        <location filename="../map/CMapRMAP.cpp" line="186"/>
-        <location filename="../map/CMapRMAP.cpp" line="208"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
         <source>Failed to read reference point.</source>
         <translation>Referenzpunkte konnten nicht gelesen werden.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="236"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
         <source>Unknown projection and datum (%1%2).</source>
-        <translation>Unbekannte Projektion und Datum (%1%2).</translation>
+        <translation>Unbekannte Projektion und Datum (%1 %2).</translation>
     </message>
 </context>
 <context>
     <name>CMapTMS</name>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="69"/>
-        <location filename="../map/CMapTMS.cpp" line="79"/>
+        <location filename="../map/CMapTMS.cpp" line="70"/>
+        <location filename="../map/CMapTMS.cpp" line="80"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="69"/>
+        <location filename="../map/CMapTMS.cpp" line="70"/>
         <source>Failed to open %1</source>
         <translation>Öffnen fehlgeschlagen: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="79"/>
+        <location filename="../map/CMapTMS.cpp" line="80"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -1323,7 +1367,7 @@ Zeile %2, Spalte %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="117"/>
+        <location filename="../map/CMapTMS.cpp" line="118"/>
         <source>Layer %1</source>
         <translation></translation>
     </message>
@@ -1332,7 +1376,7 @@ Zeile %2, Spalte %3:
         <translation type="obsolete">--- Alle ---</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="288"/>
+        <location filename="../map/CMapTMS.cpp" line="289"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 unerledigte Kacheln<br/></translation>
     </message>
@@ -1340,31 +1384,55 @@ Zeile %2, Spalte %3:
 <context>
     <name>CMapVRT</name>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="46"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="88"/>
-        <location filename="../map/CMapVRT.cpp" line="123"/>
+        <location filename="../map/CMapVRT.cpp" line="47"/>
+        <location filename="../map/CMapVRT.cpp" line="61"/>
+        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="124"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="46"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
+        <location filename="../map/CMapVRT.cpp" line="47"/>
+        <location filename="../map/CMapVRT.cpp" line="61"/>
         <source>Failed to load file: %1</source>
         <translation>Die Datei konnte nicht geladen werden: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="88"/>
+        <location filename="../map/CMapVRT.cpp" line="89"/>
         <source>File must be 8 bit palette or gray indexed.</source>
         <translation>Die Datei muss eine 8 bit Palette haben, oder Graustufen.</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="123"/>
+        <location filename="../map/CMapVRT.cpp" line="124"/>
         <source>No georeference information found.</source>
         <translation>Keine Georeferenzierung gefunden.</translation>
     </message>
 </context>
 <context>
+    <name>CMapVrtBuilder</name>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="29"/>
+        <source>Build GDAL VRT</source>
+        <translation>GDAL VRT erstellen</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="51"/>
+        <source>Select files...</source>
+        <translation>Dateien auswählen...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="75"/>
+        <source>Select target file...</source>
+        <translation>Zieldatei auswählen...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="196"/>
+        <source>!!! failed !!!
+</source>
+        <translation>!!! fehlgeschlagen !!!</translation>
+    </message>
+</context>
+<context>
     <name>CMapWMTS</name>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="45"/>
@@ -1429,7 +1497,7 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="38"/>
         <source><b>Edit Area</b><br/>Select a corner point for more options.<br/></source>
-        <translation><b>Fläche bearbeiten</b><br/>Wähle einen Eckpunkt für mehr Optionen.<br/></translation>
+        <translation><b>Gebiet bearbeiten</b><br/>Wähle einen Eckpunkt für mehr Optionen.<br/></translation>
     </message>
 </context>
 <context>
@@ -1454,7 +1522,7 @@ Unbekannte Struktur.</translation>
 <context>
     <name>CMouseEditTrk</name>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="46"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="47"/>
         <source><b>Edit Track Points</b><br/>Select a track point for more options.<br/></source>
         <translation><b>Trackpunkte bearbeiten</b><br/>Wähle einen Trackpunkt für mehr Optionen.<br/></translation>
     </message>
@@ -1474,7 +1542,7 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="44"/>
         <source>Add Area</source>
-        <translation>Fläche hinzufügen</translation>
+        <translation>Gebiet hinzufügen</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="46"/>
@@ -1493,7 +1561,7 @@ Unbekannte Struktur.</translation>
 <context>
     <name>CPhotoAlbum</name>
     <message>
-        <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
+        <location filename="../helpers/CPhotoAlbum.cpp" line="69"/>
         <source>Select images...</source>
         <translation>Bilder wählen...</translation>
     </message>
@@ -1503,7 +1571,7 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="53"/>
         <source>distance [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <translation>Entf. [%1]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="57"/>
@@ -1517,7 +1585,7 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="59"/>
         <source>distance. [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <translation>Entf. [%1]</translation>
     </message>
 </context>
 <context>
@@ -1553,28 +1621,28 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../plot/CPlotSpeed.cpp" line="58"/>
         <source>speed. [%1]</source>
-        <translation>Geschwindigkeit [%1]</translation>
+        <translation>Geschw. [%1]</translation>
     </message>
 </context>
 <context>
     <name>CProjWizard</name>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="55"/>
+        <location filename="../grid/CProjWizard.cpp" line="57"/>
         <source>north</source>
         <translation>Norden</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="56"/>
+        <location filename="../grid/CProjWizard.cpp" line="58"/>
         <source>south</source>
         <translation>Süden</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="213"/>
+        <location filename="../grid/CProjWizard.cpp" line="215"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="213"/>
+        <location filename="../grid/CProjWizard.cpp" line="215"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1595,7 +1663,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen ein.</translation>
+        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
 </context>
 <context>
@@ -1647,7 +1715,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="558"/>
         <source>Routes:           %1 (Only the basic route will be copied)</source>
-        <translation>Routen:           %1 (Es wird nur die BAsisroute kopiert)</translation>
+        <translation>Routen:           %1 (Es wird nur die Basisroute kopiert)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="566"/>
@@ -1657,7 +1725,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
         <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
-        <translation>Overlays:         %1 (Es werden nur Flächenoverlays nach QMapShack konvertiert)</translation>
+        <translation>Overlays:         %1 (Es werden nur Gebietsoverlays nach QMapShack konvertiert)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="581"/>
@@ -1713,7 +1781,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="692"/>
         <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
-        <translation>Importiert wurden %1 Tracks, %2 Wegpunkte, %3 Routen, %4 Flächen</translation>
+        <translation>Importiert wurden %1 Tracks, %2 Wegpunkte, %3 Routen, %4 Gebiete</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="693"/>
@@ -1723,28 +1791,28 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="748"/>
         <source>Overlay of type '%1' cant be converted</source>
-        <translation>Das Overlay vomTyp '%1' kann nicht konvertiert werden</translation>
+        <translation>Das Overlay vom Typ '%1' kann nicht konvertiert werden</translation>
     </message>
 </context>
 <context>
     <name>CQmsDb</name>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Existing file...</source>
         <translation>Vorhandene Datei...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Remove existing %1?</source>
         <translation>Entferne vorhandene %1?</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="51"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="52"/>
         <source>Remove existing file %1</source>
         <translation>Entferne vorhandene Datei %1</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="160"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="162"/>
         <source>%1: drop item with QLGT DB ID %2</source>
         <translation>%1: verwerfe das Element mit der QLGT DB ID %2</translation>
     </message>
@@ -1780,22 +1848,22 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
         <source>There is already a database with name '%1'</source>
         <translation>Es gibt schon eine Datenbank mit dem Namen '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="83"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
         <source>New database...</source>
         <translation>Neue Datenbank...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="108"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
         <source>Open database...</source>
         <translation>Datenbank öffnen...</translation>
     </message>
@@ -1958,27 +2026,27 @@ ist keine gültige Koordinatensystemdefinition:
         <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als maximale Skalierung zu benutzen.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="115"/>
+        <location filename="../dem/IDemPropSetup.ui" line="118"/>
         <source>Hillshading</source>
         <translation>Schummerung</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="141"/>
+        <location filename="../dem/IDemPropSetup.ui" line="144"/>
         <source>Slope </source>
         <translation>Hangneigung</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="183"/>
-        <location filename="../dem/IDemPropSetup.ui" line="190"/>
-        <location filename="../dem/IDemPropSetup.ui" line="197"/>
-        <location filename="../dem/IDemPropSetup.ui" line="204"/>
-        <location filename="../dem/IDemPropSetup.ui" line="223"/>
-        <location filename="../dem/IDemPropSetup.ui" line="242"/>
-        <location filename="../dem/IDemPropSetup.ui" line="261"/>
-        <location filename="../dem/IDemPropSetup.ui" line="268"/>
-        <location filename="../dem/IDemPropSetup.ui" line="275"/>
-        <location filename="../dem/IDemPropSetup.ui" line="294"/>
-        <location filename="../dem/IDemPropSetup.ui" line="301"/>
+        <location filename="../dem/IDemPropSetup.ui" line="186"/>
+        <location filename="../dem/IDemPropSetup.ui" line="193"/>
+        <location filename="../dem/IDemPropSetup.ui" line="200"/>
+        <location filename="../dem/IDemPropSetup.ui" line="207"/>
+        <location filename="../dem/IDemPropSetup.ui" line="226"/>
+        <location filename="../dem/IDemPropSetup.ui" line="245"/>
+        <location filename="../dem/IDemPropSetup.ui" line="264"/>
+        <location filename="../dem/IDemPropSetup.ui" line="271"/>
+        <location filename="../dem/IDemPropSetup.ui" line="278"/>
+        <location filename="../dem/IDemPropSetup.ui" line="297"/>
+        <location filename="../dem/IDemPropSetup.ui" line="304"/>
         <source>TextLabel</source>
         <translation>Bezeichnung</translation>
     </message>
@@ -2014,51 +2082,62 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="67"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="89"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="115"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="128"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="141"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="154"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="167"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="193"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="206"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="219"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="232"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="245"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="47"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="73"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="86"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="99"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="112"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="151"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="164"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="177"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="190"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="203"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="252"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="267"/>
         <source>about:blank</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="82"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="40"/>
         <source>Position:</source>
         <translation>Position:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="102"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="60"/>
         <source>Difficulty</source>
         <translation>Schwierigkeit</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="180"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="138"/>
         <source>Terrain</source>
         <translation>Gelände</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="32"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="214"/>
+        <source>Update spoilers</source>
+        <translation>Spoiler erneut laden</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="217"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="275"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="256"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="293"/>
         <source>Hint:</source>
         <translation>Hinweis:</translation>
     </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="324"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
+    </message>
 </context>
 <context>
     <name>IDetailsOvlArea</name>
@@ -2173,88 +2252,98 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="237"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="182"/>
+        <source>Graph Control</source>
+        <translation>Grafikeinstellungen</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="203"/>
         <source>Profile</source>
         <translation>Profil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="244"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="370"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="210"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="443"/>
         <source>Speed</source>
         <translation>Geschw.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="251"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="217"/>
         <source>Progress</source>
         <translation>Verlauf</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="194"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
+        <source>Track</source>
+        <translation>Track</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="253"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
         <source>Points</source>
         <translation>Punkte</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="423"/>
         <source>Time</source>
         <translation>Zeit</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="355"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="428"/>
         <source>Ele.</source>
         <translation>Höhe</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="360"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="433"/>
         <source>Delta</source>
         <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="365"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="438"/>
         <source>Dist.</source>
         <translation>Entf.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="448"/>
         <source>Slope</source>
-        <translation>Neigung</translation>
+        <translation>Hangneigung</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="380"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="453"/>
         <source>Ascend</source>
         <translation>Anstieg</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="385"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="458"/>
         <source>Descend</source>
         <translation>Abstieg</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="390"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="463"/>
         <source>Position</source>
         <translation>Position</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="156"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="347"/>
         <source>Info</source>
-        <translation>Info.</translation>
+        <translation>Info</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="273"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="308"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="472"/>
         <source>Filter</source>
         <translation>Filter</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="509"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -2285,7 +2374,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten weren nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
+        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
     </message>
     <message>
         <source><html><head/><body><p>Edit description.</p></body></html></source>
@@ -2379,7 +2468,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
         <source>Remove all hidden track points permanently.</source>
-        <translation>Alle verborgenen Trackpunkte werden dauerhaft entfernt.</translation>
+        <translation>Alle ausgeblendeten Trackpunkte werden dauerhaft entfernt.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
@@ -2397,17 +2486,17 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
         <source><b>Hide Points (Douglas Peuker)</b></source>
-        <translation><b>Trackpunkte verbergen (Douglas Peuker)</b></translation>
+        <translation><b>Trackpunkte ausblenden (Douglas Peuker)</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="57"/>
         <source>Hide track points if the distance to a line between neighboring points is less than</source>
-        <translation>Trackpunkte werden verborgen, wenn der Abstand zu einer Linien zwischen benachbarten Punkten weniger beträgt als</translation>
+        <translation>Trackpunkte werden ausgeblendet, wenn der Abstand zu einer Linie zwischen benachbarten Punkten kleiner ist als</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
         <source>m</source>
-        <translation></translation>
+        <translation> m</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="93"/>
@@ -2440,7 +2529,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
         <source>points</source>
-        <translation>Punkte</translation>
+        <translation> Pkt.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="105"/>
@@ -2491,12 +2580,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
         <source> sec.</source>
-        <translation>S</translation>
+        <translation> s</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="68"/>
         <source>with each track point. 0 sec. will remove timestamps.</source>
-        <translation>für jeden Trackpunkt. 0 s. entfernt alle Zeitstempel.</translation>
+        <translation>für jeden Trackpunkt. 0 s entfernt alle Zeitstempel.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
@@ -2565,12 +2654,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
         <source><b>Reset Hidden Track Points</b></source>
-        <translation><b>Verborgene Trackpunkte wiederherstellen</b></translation>
+        <translation><b>Ausgeblendete Trackpunkte wiederherstellen</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
         <source>Make all trackpoints visible again.</source>
-        <translation>Alle Trackpunkte wieder anzeigen.</translation>
+        <translation>Alle Trackpunkte werden wieder sichtbar.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
@@ -2683,24 +2772,24 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="28"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="45"/>
         <source>Source Database:</source>
         <translation>Quelldatenbank:</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="35"/>
-        <location filename="../qlgt/IImportDatabase.ui" line="76"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="52"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="93"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="42"/>
-        <location filename="../qlgt/IImportDatabase.ui" line="83"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="22"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="63"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="69"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="86"/>
         <source>Target Database:</source>
         <translation>Zieldatenbank:</translation>
     </message>
@@ -2790,17 +2879,17 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Werkzeug</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="128"/>
+        <location filename="../IMainWindow.ui" line="129"/>
         <source>Maps</source>
         <translation>Karten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="165"/>
+        <location filename="../IMainWindow.ui" line="166"/>
         <source>Dig. Elev. Model (DEM)</source>
-        <translation>Höhenmodell (DEM)</translation>
+        <translation>Dig. Höhenmodell (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="198"/>
+        <location filename="../IMainWindow.ui" line="199"/>
         <source>Data</source>
         <translation>Daten</translation>
     </message>
@@ -2809,169 +2898,179 @@ ist keine gültige Koordinatensystemdefinition:
         <translation type="obsolete">Ansicht hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="211"/>
-        <location filename="../IMainWindow.ui" line="214"/>
+        <location filename="../IMainWindow.ui" line="212"/>
+        <location filename="../IMainWindow.ui" line="215"/>
         <source>Add Map View</source>
         <translation>Kartenansicht hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="217"/>
+        <location filename="../IMainWindow.ui" line="218"/>
         <source>Ctrl+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="229"/>
+        <location filename="../IMainWindow.ui" line="230"/>
         <source>Show Scale</source>
         <translation>Maßstab</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="238"/>
+        <location filename="../IMainWindow.ui" line="239"/>
         <source>Setup Map Font</source>
         <translation>Kartenfont einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="250"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Show Grid</source>
         <translation>Gitter</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="253"/>
+        <location filename="../IMainWindow.ui" line="254"/>
         <source>Ctrl+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="262"/>
+        <location filename="../IMainWindow.ui" line="263"/>
         <source>Setup Grid</source>
         <translation>Gitter einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="265"/>
+        <location filename="../IMainWindow.ui" line="266"/>
         <source>Ctrl+Alt+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="277"/>
+        <location filename="../IMainWindow.ui" line="278"/>
         <source>Flip Mouse Wheel</source>
         <translation>Mausrad umdrehen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="286"/>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="287"/>
+        <location filename="../IMainWindow.ui" line="290"/>
         <source>Setup Map Paths</source>
         <translation>Kartenverzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="302"/>
         <source>POI Text</source>
         <translation>POI Text</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="313"/>
+        <location filename="../IMainWindow.ui" line="314"/>
         <source>Night / Day</source>
         <translation>Nacht / Tag</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="326"/>
         <source>Map Tool Tip</source>
         <translation>Kartentooltip</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="335"/>
         <source>Setup DEM Paths</source>
         <translation>DEM Verzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="343"/>
+        <location filename="../IMainWindow.ui" line="344"/>
         <source>About</source>
         <translation>Über</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="352"/>
+        <location filename="../IMainWindow.ui" line="353"/>
         <source>Help</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="361"/>
-        <location filename="../IMainWindow.ui" line="364"/>
+        <location filename="../IMainWindow.ui" line="362"/>
+        <location filename="../IMainWindow.ui" line="365"/>
         <source>Setup Map View</source>
         <translation>Kartenansicht einstellen</translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="479"/>
+        <source>VRT Builder</source>
+        <translation>VRT Builder</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="482"/>
+        <source>GUI front end to gdalbuildvrt</source>
+        <translation>Eine graphische Benutzerschnittstelle zu gdalbuildvrt </translation>
+    </message>
+    <message>
         <source>Setup Map Workspace</source>
         <translation type="obsolete">Arbeitsplatz einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="374"/>
         <source>Load GIS Data</source>
         <translation>GIS Daten laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="376"/>
+        <location filename="../IMainWindow.ui" line="377"/>
         <source>Load projects from file</source>
         <translation>Lade Datei als Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="379"/>
+        <location filename="../IMainWindow.ui" line="380"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="388"/>
+        <location filename="../IMainWindow.ui" line="389"/>
         <source>Save All GIS Data</source>
         <translation>Alle GIS Daten speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="391"/>
+        <location filename="../IMainWindow.ui" line="392"/>
         <source>Save all projects in the workspace</source>
         <translation>Alle Projekte im Arbeitsplatz speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="394"/>
+        <location filename="../IMainWindow.ui" line="395"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="403"/>
+        <location filename="../IMainWindow.ui" line="404"/>
         <source>Setup Time Zone</source>
         <translation>Zeitzone einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="412"/>
+        <location filename="../IMainWindow.ui" line="413"/>
         <source>Add empty project</source>
         <translation>Leeres Projekt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="424"/>
+        <location filename="../IMainWindow.ui" line="425"/>
         <source>Search Google</source>
         <translation>Mit Google suchen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="433"/>
+        <location filename="../IMainWindow.ui" line="434"/>
         <source>Close all projects</source>
         <translation>Alle Projekte schließen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
+        <location filename="../IMainWindow.ui" line="437"/>
         <source>F8</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="445"/>
+        <location filename="../IMainWindow.ui" line="446"/>
         <source>Setup Units</source>
         <translation>Einheiten einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="455"/>
         <source>Setup Workspace</source>
         <translation>Arbeitsplatz einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="458"/>
         <source>Setup save on exit.</source>
         <translation>Speichert Einstellungen beim Beenden.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="467"/>
         <source>Import Database from QLandkarte</source>
         <translation>Datenbankimport aus QLandkarte</translation>
     </message>
@@ -2984,9 +3083,9 @@ ist keine gültige Koordinatensystemdefinition:
         <translation type="obsolete">Datenbank importieren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="470"/>
         <source>Import QLandkarte GT database</source>
-        <translation>QLandkarte Gt Datenbank importieren</translation>
+        <translation>QLandkarte GT Datenbank importieren</translation>
     </message>
 </context>
 <context>
@@ -3024,13 +3123,20 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Kartenpfad einstellen</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="31"/>
-        <location filename="../map/IMapPathSetup.ui" line="51"/>
+        <location filename="../map/IMapPathSetup.ui" line="20"/>
+        <source>Root path of tile cache for online maps:</source>
+        <translation>Hauptverzeichnis für den Kachelspeicher von Onlinekarten:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPathSetup.ui" line="36"/>
+        <location filename="../map/IMapPathSetup.ui" line="73"/>
+        <location filename="../map/IMapPathSetup.ui" line="93"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="93"/>
+        <location filename="../map/IMapPathSetup.ui" line="29"/>
+        <location filename="../map/IMapPathSetup.ui" line="135"/>
         <source>-</source>
         <translation></translation>
     </message>
@@ -3055,7 +3161,6 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../map/IMapPropSetup.ui" line="53"/>
         <location filename="../map/IMapPropSetup.ui" line="90"/>
-        <location filename="../map/IMapPropSetup.ui" line="200"/>
         <source>...</source>
         <translation></translation>
     </message>
@@ -3072,7 +3177,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../map/IMapPropSetup.ui" line="137"/>
         <source>Areas</source>
-        <translation>Flächen</translation>
+        <translation>Gebiete</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="144"/>
@@ -3085,22 +3190,61 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Punkte</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="190"/>
+        <location filename="../map/IMapPropSetup.ui" line="233"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="220"/>
+        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <source>Cache Path</source>
+        <translation>Speicherpfad</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPropSetup.ui" line="196"/>
         <source>Cache Size (MB)</source>
         <translation>Cache (MB)</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <location filename="../map/IMapPropSetup.ui" line="216"/>
         <source>Expiration (Days)</source>
         <translation>Verfallzeit (Tage)</translation>
     </message>
 </context>
 <context>
+    <name>IMapVrtBuilder</name>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="22"/>
+        <location filename="../map/IMapVrtBuilder.ui" line="56"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="39"/>
+        <source>Select source files:</source>
+        <translation>Quelldateien auswählen:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="79"/>
+        <source>Target Filename:</source>
+        <translation>Zieldatei auswählen:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="86"/>
+        <source>-</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="95"/>
+        <source>Start</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
     <name>IMouseEditLine</name>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
@@ -3302,7 +3446,7 @@ sein</translation>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="51"/>
         <source>Copy area into another project.</source>
-        <translation>Fläche in ein anderes Projekt kopieren.</translation>
+        <translation>Gebiet in ein anderes Projekt kopieren.</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="112"/>
@@ -3385,7 +3529,7 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
         <source>Show all points.</source>
-        <translation>Zeigt alle Punkte an.</translation>
+        <translation>Blendet alle Punkte ein.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
@@ -3732,7 +3876,7 @@ sein</translation>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
         <source>Open existing database.</source>
-        <translation>Öffnet ein vorhandene Datenbank.</translation>
+        <translation>Öffnet eine vorhandene Datenbank.</translation>
     </message>
 </context>
 <context>
@@ -3817,7 +3961,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="259"/>
         <source>Ctrl+Z</source>
-        <translation>Strg+Z</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="268"/>
@@ -3827,7 +3971,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="271"/>
         <source>Ctrl+Shift+Z</source>
-        <translation>Strg+Shift+Z</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="280"/>
@@ -3837,7 +3981,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="283"/>
         <source>Ctrl+X</source>
-        <translation>Strg+X</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="292"/>
@@ -3847,7 +3991,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="295"/>
         <source>Ctrl+C</source>
-        <translation>Strg+C</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="304"/>
@@ -3857,7 +4001,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="307"/>
         <source>Ctrl+V</source>
-        <translation>Strg+V</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="319"/>
@@ -3867,7 +4011,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="322"/>
         <source>Ctrl+L</source>
-        <translation>Strg+L</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="334"/>
@@ -3877,7 +4021,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="337"/>
         <source>Ctrl+R</source>
-        <translation>Strg+R</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="349"/>
@@ -3887,7 +4031,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="352"/>
         <source>Ctrl+E</source>
-        <translation>Strg+E</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="364"/>
@@ -3897,7 +4041,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="367"/>
         <source>Ctrl+J</source>
-        <translation>Strg+J</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="379"/>
@@ -3907,7 +4051,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="382"/>
         <source>Ctrl+U</source>
-        <translation>Strg+U</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="394"/>
@@ -3917,7 +4061,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="397"/>
         <source>Ctrl+B</source>
-        <translation>Strg+B</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="409"/>
@@ -3927,7 +4071,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="412"/>
         <source>Ctrl+I</source>
-        <translation>Strg+I</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -3987,23 +4131,33 @@ sein</translation>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../GeoMath.cpp" line="89"/>
+        <location filename="../GeoMath.cpp" line="160"/>
+        <location filename="../GeoMath.cpp" line="166"/>
         <source>Error</source>
         <translation>Fehler</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="89"/>
+        <location filename="../GeoMath.cpp" line="160"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation>Falsches Positionsformat. Muss entweder "[N|S] ddd mm.sss [W|E] ddd mm.sss" oder "[N|S] ddd.ddd [W|E] ddd.ddd" sein.</translation>
+    </message>
+    <message>
+        <location filename="../GeoMath.cpp" line="166"/>
+        <source>Position values out of bounds. </source>
+        <translation>Position außerhalb der gültigen Werte.</translation>
+    </message>
+    <message>
         <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
         <translation>Falsches Positionsformat. Richtig: [N|S] ddd mm.sss [W|E] ddd mm.sss </translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="115"/>
         <source>Failed to read...</source>
         <translation>Lesen fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -4012,9 +4166,9 @@ Zeile %2, Spalte %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="115"/>
         <source>Not a GPX file: </source>
-        <translation>Keien GPX Datei:</translation>
+        <translation>Keine GPX Datei:</translation>
     </message>
     <message>
         <source>
@@ -4042,222 +4196,223 @@ Areas: %1</source>
         <translation type="obsolete">Fläche: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="206"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="208"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Dateiname: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="223"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="225"/>
         <source>Waypoints: %1</source>
         <translation>Wegpunkte: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="227"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="229"/>
         <source>Tracks: %1</source>
         <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="231"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="233"/>
         <source>Routes: %1</source>
         <translation>Routen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
         <source>Areas: %1</source>
-        <translation>Flächen: %1</translation>
+        <translation>Gebiete: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="291"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="293"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Sind Sie sicher, dass Sie '%1' aus dem Projekt '%2' löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="406"/>
+        <location filename="../gis/CGisListDB.cpp" line="407"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
         <translation>Sind Sie sicher, dass Sie '%1' aus dem Ordner '%2' löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="407"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="408"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="294"/>
         <source>Delete...</source>
         <translation>Löschen...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="93"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open...</source>
         <translation>Öffnen fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="93"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
         <translation>Öffnen fehlgeschlagen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="196"/>
+        <location filename="../gis/db/CDBProject.cpp" line="126"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="208"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="157"/>
         <source>Save GIS data to...</source>
         <translation>GIS Daten speichern in...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="157"/>
+        <location filename="../gis/db/CDBProject.cpp" line="158"/>
         <source>Save ...</source>
         <translation>Speichern ...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="157"/>
+        <location filename="../gis/db/CDBProject.cpp" line="158"/>
         <source>Abort save</source>
         <translation>Speichern abbrechen</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="271"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="283"/>
         <source>File exists ...</source>
         <translation>Datei existiert...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="272"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="284"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
         <translation>Diese Datei wurde nicht mit QMapShack erstellt. Wenn Sie 'Ja' drücken werden alle Daten dieser Datei gelöscht. Selbst wenn diese Datei GPX Daten enthält und mit QMapShack geladen wurde, können nicht alle Elemente dieser Datei durch QMapShack geladen und gespeichert werden. Diese Elemente sind verloren. Ich empfehle die Nutzung einer anderen Datei. <b>Wollen Sie die Datei wirklich überschreiben?</b></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="350"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="379"/>
         <source>Failed to create file '%1'</source>
         <translation>Datei %1' konnte nicht erstellt werden</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="364"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="393"/>
         <source>Saveing GIS data failed...</source>
         <translation>Speichern der GIS Daten fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="359"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="388"/>
         <source>Failed to write file '%1'</source>
         <translation>Datei %1' konnte nicht gespeichert werden</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="266"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="287"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Wegpunkte geändert, alle vorherigen Daten sind verloren.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="333"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="363"/>
         <source>Length: %1 %2</source>
         <translation>Länge: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="340"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="370"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="348"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
         <source>Time: %1</source>
-        <translation>Zeit: %1</translation>
+        <translation>Gesamtzeit: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="351"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="361"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="381"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="391"/>
         <source>, Speed: %1 %2</source>
         <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="388"/>
         <source>Moving: %1</source>
-        <translation>Bewegung: %1</translation>
+        <translation>Zeit in Bew.: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="397"/>
         <source>Start: %1</source>
         <translation>Beginn: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="372"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="402"/>
         <source>End: %1</source>
         <translation>Ende: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="376"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="406"/>
         <source>Points: %1 (%2)</source>
-        <translation>Punkte: %1 (%2)</translation>
+        <translation>Punkte: %1 von %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="441"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="478"/>
         <source>Ele.: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation>, Neigung: %1%3 (%2%)</translation>
+        <translation>, Hangneigung: %1%3 (%2%)</translation>
     </message>
     <message>
         <source> slope: %1° (%2%)</source>
         <translation type="obsolete"> Neigung: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1089"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1126"/>
         <source>Hide points.</source>
         <translation>Punkte ausblenden.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1123"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1160"/>
         <source>Show points.</source>
-        <translation>Punkte anzeigen.</translation>
+        <translation>Punkte einblenden.</translation>
     </message>
     <message>
         <source> slope: %1°(%2%)</source>
         <translation type="obsolete">Neigung: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="449"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
         <source> speed: %1%2</source>
         <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="498"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Anstieg: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="465"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="502"/>
         <source>Ascend: - (-)</source>
         <translation>Anstieg: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="471"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="508"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation>, Abstieg: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="475"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="512"/>
         <source> Descend: - (-) </source>
         <translation>, Abstieg: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="519"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Entf.: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
         <source>Dist.: - (-)</source>
         <translation>Entf.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="492"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="529"/>
         <source> Moving: %1%2 (%3%)</source>
-        <translation>, Bewegung: %1 %2 (%3%)</translation>
+        <translation>, Zeit in Bew.: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="496"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="533"/>
         <source> Moving: - (-) </source>
-        <translation>, Bewegung: - (-) </translation>
+        <translation>, Zeit in Bew.: - (-) </translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
@@ -4282,7 +4437,7 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="162"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="164"/>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
         <source>_Clone</source>
         <translation>_Klon</translation>
@@ -4290,12 +4445,12 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="418"/>
         <source>Area: %1%2</source>
-        <translation>Fläche: %1%2</translation>
+        <translation>Gebiet: %1 %2</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="476"/>
         <source>Changed area shape.</source>
-        <translation>Flächenform geändert.</translation>
+        <translation>Gebietsform geändert.</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="484"/>
@@ -4330,86 +4485,91 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="520"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="139"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1493"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="376"/>
         <source>Changed links</source>
         <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="532"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1440"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1505"/>
         <source>Changed color</source>
         <translation>Farbe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="946"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="961"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="980"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1039"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1185"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="190"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="107"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="190"/>
         <source>Enter new waypoint name.</source>
-        <translation>Name eingeben.</translation>
+        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="229"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="242"/>
         <source>Elevation: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="240"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="253"/>
         <source>Proximity: %1 %2</source>
         <translation>Abstand: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1475"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
         <source>Changed name</source>
         <translation>Name geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="318"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
         <source>Changed position</source>
         <translation>Position geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="340"/>
         <source>Changed elevation</source>
         <translation>Höhe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="330"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="346"/>
         <source>Changed proximity</source>
         <translation>Abstandsalarm geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="358"/>
         <source>Changed icon</source>
         <translation>Symbol geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="382"/>
         <source>Changed images</source>
         <translation>Bilder geändert</translation>
     </message>
     <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Add image</source>
+        <translation>Bild hinzufügen</translation>
+    </message>
+    <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="127"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1481"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="364"/>
         <source>Changed comment</source>
         <translation>Kommentar geändert</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="133"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1487"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="370"/>
         <source>Changed description</source>
         <translation>Beschreibung geändert</translation>
     </message>
@@ -4429,84 +4589,84 @@ Dateiname: %1</translation>
         <translation>Nicht verfügbar</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="464"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="845"/>
         <source>Warning...</source>
         <translation>Warnung...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="464"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
         <translation>Dieser Dateityp hat eine unbekannte Polygon Kodierung. Bitte mitteilen!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="845"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
         <translation>Dieser Dateityp hat eine unbekannte Polyline Kodierung. Bitte mitteilen!</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="294"/>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
         <source>Initial version.</source>
         <translation>Erstversion.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="388"/>
+        <location filename="../gis/IGisItem.cpp" line="407"/>
         <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
         <translation>Diese Element ist vermutlich schreibgeschützt, da nicht mit QMapShack erstellt. Normalerweise sollten importierte Daten nicht geändert werden. Wenn doch, drücken Sie 'OK'.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="389"/>
+        <location filename="../gis/IGisItem.cpp" line="408"/>
         <source>Read Only Mode...</source>
         <translation>Schreibgeschützt...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="587"/>
+        <location filename="../gis/IGisItem.cpp" line="613"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Kommentar:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="590"/>
+        <location filename="../gis/IGisItem.cpp" line="616"/>
         <source><p>--- no comment ---</p></source>
-        <translation><p>--- kein Kommentar ---</p></translation>
+        <translation><p>--- kein ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="646"/>
+        <location filename="../gis/IGisItem.cpp" line="627"/>
+        <location filename="../gis/IGisItem.cpp" line="672"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Beschreibung:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="649"/>
+        <location filename="../gis/IGisItem.cpp" line="630"/>
+        <location filename="../gis/IGisItem.cpp" line="675"/>
         <source><p>--- no description ---</p></source>
-        <translation><p>--- keine Beschreibung ---</p></translation>
+        <translation><p>--- keine ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
+        <location filename="../gis/IGisItem.cpp" line="641"/>
+        <location filename="../gis/IGisItem.cpp" line="686"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Verknüpfungen:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
+        <location filename="../gis/IGisItem.cpp" line="644"/>
+        <location filename="../gis/IGisItem.cpp" line="689"/>
         <source><p>--- no links ---</p></source>
-        <translation><p>--- keine Verknüpfungen ---</p></translation>
+        <translation><p>--- keine ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="946"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="961"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="980"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1039"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1185"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="107"/>
         <source>Enter new track name.</source>
-        <translation>Name eingeben.</translation>
+        <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Enter new area name.</source>
-        <translation>Name eingeben.</translation>
+        <translation>Geben Sie einen neuen Namen für das Gebiet ein.</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
@@ -4535,33 +4695,33 @@ Dateiname: %1</translation>
         <translation>Kopiert das Informationsflag aus dem QLandkarte GT Track</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Corrupt track ...</source>
         <translation>Beschädigter Track ...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
         <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der Trackpunkte der Trainingsdaten.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
         <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der erweiterten Trackpunkte.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
         <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der ausgeblendeten Trackpunkte.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="95"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation>Punkte verstecken mit dem Douglas-Peuker Algorithmus (%1%2)</translation>
+        <translation>Punkte ausblenden mit dem Douglas-Peuker Algorithmus (%1 %2)</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="111"/>
@@ -4586,7 +4746,7 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="245"/>
         <source>Offset elevation data by %1%2.</source>
-        <translation>Versatz der Höhendaten um %1%2.</translation>
+        <translation>Versatz der Höhendaten um %1 %2.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="264"/>
@@ -4606,21 +4766,68 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="339"/>
         <source>Changed speed to %1%2.</source>
-        <translation>Geschwindigkeit auf %1%2 geändert.</translation>
+        <translation>Geschwindigkeit auf %1 %2 geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <location filename="../gis/CGisListWks.cpp" line="897"/>
         <source>Delete project...</source>
         <translation>Projekt löschen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <location filename="../gis/CGisListWks.cpp" line="897"/>
         <source>Do you really want to delete %1?</source>
         <translation>Sind Sie sicher, dass sie %1? löschen wollen?</translation>
     </message>
     <message>
         <source>Do you really want to delete %1</source>
-        <translation type="vanished">Sind Sie sicher, dass sie %1 löschen wollen?</translation>
+        <translation>Sind Sie sicher, dass sie %1 löschen wollen?</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="189"/>
+        <location filename="../gis/tnv/serialization.cpp" line="292"/>
+        <location filename="../gis/tnv/serialization.cpp" line="360"/>
+        <location filename="../gis/tnv/serialization.cpp" line="389"/>
+        <location filename="../gis/tnv/serialization.cpp" line="400"/>
+        <location filename="../gis/tnv/serialization.cpp" line="421"/>
+        <location filename="../gis/tnv/serialization.cpp" line="549"/>
+        <location filename="../gis/tnv/serialization.cpp" line="577"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="606"/>
+        <location filename="../gis/tnv/serialization.cpp" line="634"/>
+        <location filename="../gis/tnv/serialization.cpp" line="693"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="189"/>
+        <location filename="../gis/tnv/serialization.cpp" line="292"/>
+        <location filename="../gis/tnv/serialization.cpp" line="360"/>
+        <location filename="../gis/tnv/serialization.cpp" line="549"/>
+        <source>Failed to open %1.</source>
+        <translation>Die Datei %1 konnte nicht geöffnet werden.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="389"/>
+        <location filename="../gis/tnv/serialization.cpp" line="400"/>
+        <location filename="../gis/tnv/serialization.cpp" line="577"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation>Es wird nur lon/lat WGS 84 als Format unterstützt.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="421"/>
+        <location filename="../gis/tnv/serialization.cpp" line="606"/>
+        <location filename="../gis/tnv/serialization.cpp" line="634"/>
+        <location filename="../gis/tnv/serialization.cpp" line="693"/>
+        <source>Failed to read data.</source>
+        <translation>Datenlesen fehlgeschlagen.</translation>
+    </message>
+    <message>
+        <location filename="../device/CDeviceGarmin.cpp" line="191"/>
+        <source>Picture%1</source>
+        <translation>Bild %1</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack_es.ts
index cee3806..b701628 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack_es.ts
@@ -8,9 +8,9 @@
         <translation type="obsolete">Espacio de Trabajo %1</translation>
     </message>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="59"/>
+        <location filename="../canvas/CCanvas.cpp" line="61"/>
         <source>View %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Vista %1</translation>
     </message>
 </context>
 <context>
@@ -29,12 +29,12 @@
 <context>
     <name>CDemPathSetup</name>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="39"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="41"/>
         <source>Add or remove paths containing DEM data. There can be multiple files in a path but no sub-path is parsed. Supported formats are: %1</source>
         <translation>Añadir o quitar rutas que contienen datos DEM. Puede haber múltiples archivos en una ruta, pero no se buscará en los subdirectorios. Los formatos soportados son: %1</translation>
     </message>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="54"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="56"/>
         <source>Select DEM file path...</source>
         <translation>Seleccione la ruta al archivo DEM...</translation>
     </message>
@@ -44,32 +44,32 @@
     <message>
         <location filename="../dem/CDemPropSetup.cpp" line="183"/>
         <source><b>Grade %1</b></source>
-        <translation type="unfinished"></translation>
+        <translation>Nivel %1</translation>
     </message>
 </context>
 <context>
     <name>CDemVRT</name>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
-        <location filename="../dem/CDemVRT.cpp" line="51"/>
-        <location filename="../dem/CDemVRT.cpp" line="60"/>
-        <location filename="../dem/CDemVRT.cpp" line="87"/>
+        <location filename="../dem/CDemVRT.cpp" line="45"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="88"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
+        <location filename="../dem/CDemVRT.cpp" line="45"/>
         <source>Failed to load file: %1</source>
         <translation>Fallo al cargar el archivo: %1</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="51"/>
-        <location filename="../dem/CDemVRT.cpp" line="60"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation>El DEM debe tener una sola banda con datos de 16 o 32 bits.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="87"/>
+        <location filename="../dem/CDemVRT.cpp" line="88"/>
         <source>No georeference information found.</source>
         <translation>No se encontró información de georreferenciación.</translation>
     </message>
@@ -77,16 +77,26 @@
 <context>
     <name>CDetailsGeoCache</name>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="63"/>
         <source>none</source>
         <translation>ninguno</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="102"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="63"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="133"/>
         <source>???</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="160"/>
+        <source>Searching for images...</source>
+        <translation>Buscando imagenes...</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="265"/>
+        <source>No images found</source>
+        <translation>No se encontraron imagenes</translation>
+    </message>
 </context>
 <context>
     <name>CDetailsOvlArea</name>
@@ -97,8 +107,12 @@
     </message>
     <message>
         <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <source>Enter new area name.</source>
+        <translation type="unfinished">Introduzca el nombre del nuevo área.</translation>
+    </message>
+    <message>
         <source>Enter new waypoint name.</source>
-        <translation>Editar el nombre del nuevo waypoint.</translation>
+        <translation type="vanished">Editar el nombre del nuevo waypoint.</translation>
     </message>
     <message>
         <source><h4>Comment:</h4></source>
@@ -123,73 +137,73 @@
         <location filename="../gis/prj/CDetailsPrj.cpp" line="165"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="380"/>
         <source>none</source>
-        <translation type="unfinished">ninguno</translation>
+        <translation>ninguna</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
         <source>Build diary...</source>
-        <translation type="unfinished"></translation>
+        <translation>Creando diario...</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
         <source>Abort</source>
-        <translation type="unfinished">Abortar</translation>
+        <translation>Cancelar</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source><h2>Waypoints</h2></source>
-        <translation type="unfinished"></translation>
+        <translation>Waypoints</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="241"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="272"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="337"/>
         <source>Info</source>
-        <translation type="unfinished">Información</translation>
+        <translation>Información</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="242"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="273"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="338"/>
         <source>Comment</source>
-        <translation type="unfinished"></translation>
+        <translation>Comentario</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="265"/>
         <source><h2>Tracks</h2></source>
-        <translation type="unfinished"></translation>
+        <translation>Tracks</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
         <source><h2>Areas</h2></source>
-        <translation type="unfinished"></translation>
+        <translation>Áreas</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Editar nombre...</translation>
+        <translation>Editar nombre...</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Enter new project name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Introducir nuevo nombre de proyecto.</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Edit keywords...</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar etiquetas...</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Enter keywords.</source>
-        <translation type="unfinished"></translation>
+        <translation>Introducir etiquetas.</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="509"/>
         <source>Print Diary</source>
-        <translation type="unfinished"></translation>
+        <translation>Imprimir Diario</translation>
     </message>
 </context>
 <context>
@@ -197,22 +211,22 @@
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
         <source>Reduce visible track points</source>
-        <translation type="unfinished"></translation>
+        <translation>Reducir puntos visibles del track</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
         <source>Change elevation of track points</source>
-        <translation type="unfinished"></translation>
+        <translation>Cambiar elevación de puntos del track</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
         <source>Change timestamp of track points</source>
-        <translation type="unfinished"></translation>
+        <translation>Cambiar fecha/hora de puntos del track</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
         <source>Cut track into pieces</source>
-        <translation type="unfinished"></translation>
+        <translation>Dividir track en partes</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
@@ -225,6 +239,16 @@
         <translation></translation>
     </message>
     <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Editar nombre...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Introduzca el nombre del nuevo track.</translation>
+    </message>
+    <message>
         <source><h4>Comment:</h4></source>
         <translation type="obsolete"><h4>Comentario:</h4></translation>
     </message>
@@ -286,183 +310,199 @@
 <context>
     <name>CGisListDB</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="73"/>
+        <location filename="../gis/CGisListDB.cpp" line="74"/>
         <source>Add Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir Base de Datos</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="76"/>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
         <source>Add Folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir carpeta</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <location filename="../gis/CGisListDB.cpp" line="78"/>
         <source>Delete Folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Eliminar Carpeta</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="80"/>
-        <location filename="../gis/CGisListDB.cpp" line="90"/>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <location filename="../gis/CGisListDB.cpp" line="91"/>
         <source>Delete Item</source>
-        <translation type="unfinished"></translation>
+        <translation>Eliminar Elemento</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="84"/>
+        <location filename="../gis/CGisListDB.cpp" line="85"/>
         <source>Remove Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Quitar Base de Datos</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="87"/>
+        <location filename="../gis/CGisListDB.cpp" line="88"/>
         <source>Empty</source>
-        <translation type="unfinished"></translation>
+        <translation>Vacío</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="251"/>
+        <location filename="../gis/CGisListDB.cpp" line="252"/>
         <source>Remove database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Quitar Base de Datos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="251"/>
+        <location filename="../gis/CGisListDB.cpp" line="252"/>
         <source>Do you realy want to remove '%1' from the list?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Desea realmente quitar '%1' de la lista?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="293"/>
         <source>Delete database folder...</source>
-        <translation type="unfinished"></translation>
+        <translation>Eliminar Carpeta de la Base de Datos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="293"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Desea realmente eliminar '%1' de la Base de Datos?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="318"/>
-        <location filename="../gis/CGisListDB.cpp" line="333"/>
+        <location filename="../gis/CGisListDB.cpp" line="319"/>
+        <location filename="../gis/CGisListDB.cpp" line="334"/>
         <source>Remove items...</source>
-        <translation type="unfinished"></translation>
+        <translation>Eliminar elementos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="318"/>
+        <location filename="../gis/CGisListDB.cpp" line="319"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Desea realmente eliminar todos los elementos de 'Objetos Perdidos'? Se eliminarán definitivamente.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="333"/>
+        <location filename="../gis/CGisListDB.cpp" line="334"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Desea realmente eliminar todos los elementos.seleccionados de 'Objetos Perdidos'? Se eliminarán definitivamente.</translation>
     </message>
 </context>
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
         <source>Save</source>
         <translation>Guardar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="90"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Save As...</source>
         <translation>Guardar Como...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="89"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Edit..</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
+        <source>Update Project on Devices</source>
+        <translation>Actualizar Proyecto en Dispositivos</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Close</source>
         <translation>Cerrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <source>Update Project on Device</source>
+        <translation>Actualizar Proyecto en Dsipositivo</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="113"/>
         <source>Edit...</source>
         <translation>Editar...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="114"/>
         <source>Copy to...</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar a...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="126"/>
         <source>Move Waypoint</source>
         <translation>Mover Waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
+        <location filename="../gis/CGisListWks.cpp" line="127"/>
         <source>Proj. Waypoint...</source>
         <translation>Proyectar Waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="1215"/>
+        <location filename="../gis/CGisListWks.cpp" line="1253"/>
+        <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
+        <translation type="unfinished"><b>Actualizar dispositivos</b><p>Actualizar %1<br/>Por favor espere...</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="115"/>
         <source>Track Profile</source>
         <translation>Perfil del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="103"/>
+        <location filename="../gis/CGisListWks.cpp" line="117"/>
         <source>Select Range</source>
         <translation>Seleccionar Rango</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
         <source>Edit Track Points</source>
         <translation>Editar Puntos del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
         <source>Reverse Track</source>
         <translation>Invertir Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
+        <location filename="../gis/CGisListWks.cpp" line="120"/>
         <source>Combine Tracks</source>
         <translation>Combinar Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Edit Area Points</source>
         <translation>Editar Puntos del Área</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="93"/>
-        <location filename="../gis/CGisListWks.cpp" line="107"/>
+        <location filename="../gis/CGisListWks.cpp" line="102"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Delete</source>
         <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="657"/>
+        <location filename="../gis/CGisListWks.cpp" line="673"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Guardando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="698"/>
+        <location filename="../gis/CGisListWks.cpp" line="714"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Cargando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1135"/>
+        <location filename="../gis/CGisListWks.cpp" line="1163"/>
         <source>Close all projects...</source>
-        <translation type="unfinished"></translation>
+        <translation>Cerrar todos los proyectos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1135"/>
+        <location filename="../gis/CGisListWks.cpp" line="1163"/>
         <source>This will remove all projects from the workspace.</source>
-        <translation type="unfinished"></translation>
+        <translation>Esto quitará.todos los proyectos.del espacio de trabajo.</translation>
     </message>
 </context>
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="382"/>
+        <location filename="../gis/CGisWidget.cpp" line="381"/>
         <source>Cut Track...</source>
-        <translation type="unfinished"></translation>
+        <translation>Partir Track...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="382"/>
+        <location filename="../gis/CGisWidget.cpp" line="381"/>
         <source>Do you want to delete the original track?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Desea borrar el track original?</translation>
     </message>
 </context>
 <context>
@@ -474,7 +514,7 @@
     <message>
         <location filename="../grid/CGrid.cpp" line="61"/>
         <source>[Grid: %1%2%5 %3%4%5] </source>
-        <translation type="unfinished">[Malla: %1]  {1%2%5 %3%4%5]?}</translation>
+        <translation>[Malla: %1%2%5 %3%4%5] </translation>
     </message>
     <message>
         <location filename="../grid/CGrid.cpp" line="65"/>
@@ -495,28 +535,28 @@
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="29"/>
         <source>Import QLandkarte Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar Base de Datos de Qlandkarte</translation>
     </message>
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="73"/>
         <source>Select source database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccionar origen de base de datos...</translation>
     </message>
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="93"/>
         <source>Select target database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleecionar destino de base de datos...</translation>
     </message>
 </context>
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="440"/>
+        <location filename="../CMainWindow.cpp" line="461"/>
         <source>Ele: %1%2</source>
         <translation>Alt: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="559"/>
+        <location filename="../CMainWindow.cpp" line="587"/>
         <source>Load GIS Data...</source>
         <translation>Cargar Datos GIS...</translation>
     </message>
@@ -1168,17 +1208,17 @@
 <context>
     <name>CMapMAP</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="45"/>
+        <location filename="../map/CMapMAP.cpp" line="46"/>
         <source>Failed ...</source>
         <translation>Falló...</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="62"/>
+        <location filename="../map/CMapMAP.cpp" line="63"/>
         <source>Failed to open: </source>
         <translation>Fallo al abrir: </translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="72"/>
+        <location filename="../map/CMapMAP.cpp" line="73"/>
         <source>Bad file format: </source>
         <translation>Formato de archivo incorrecto: </translation>
     </message>
@@ -1186,63 +1226,67 @@
 <context>
     <name>CMapPathSetup</name>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="39"/>
+        <location filename="../map/CMapPathSetup.cpp" line="45"/>
         <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
         <translation>Añada o elimine rutas que contengan mapas. Puede haber múltiples mapas en una ruta, pero no se buscará en subdirectorios. Los formatos soportados son: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="54"/>
+        <location filename="../map/CMapPathSetup.cpp" line="60"/>
         <source>Select map path...</source>
         <translation>Selecciona la ruta del mapa...</translation>
     </message>
+    <message>
+        <location filename="../map/CMapPathSetup.cpp" line="76"/>
+        <source>Select root path...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CMapPropSetup</name>
     <message>
-        <location filename="../map/CMapPropSetup.cpp" line="147"/>
         <source>Cache path...</source>
-        <translation>Ruta de la caché...</translation>
+        <translation type="vanished">Ruta de la caché...</translation>
     </message>
 </context>
 <context>
     <name>CMapRMAP</name>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="47"/>
-        <location filename="../map/CMapRMAP.cpp" line="56"/>
-        <location filename="../map/CMapRMAP.cpp" line="126"/>
-        <location filename="../map/CMapRMAP.cpp" line="143"/>
-        <location filename="../map/CMapRMAP.cpp" line="164"/>
-        <location filename="../map/CMapRMAP.cpp" line="186"/>
-        <location filename="../map/CMapRMAP.cpp" line="208"/>
-        <location filename="../map/CMapRMAP.cpp" line="236"/>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="47"/>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
         <source>This is not a TwoNav RMAP file.</source>
         <translation>Éste no es un archivo en formato TwoNav RMAP.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="56"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
         <source>Unknown sub-format.</source>
         <translation>Sub-formato desconocido.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="126"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
         <source>Unknown version.</source>
         <translation>Versión desconocida.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="143"/>
-        <location filename="../map/CMapRMAP.cpp" line="164"/>
-        <location filename="../map/CMapRMAP.cpp" line="186"/>
-        <location filename="../map/CMapRMAP.cpp" line="208"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
         <source>Failed to read reference point.</source>
         <translation>Fallo al leer el punto de referencia.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="236"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
         <source>Unknown projection and datum (%1%2).</source>
         <translation>Proyección y datum desconocidos (%1%2).</translation>
     </message>
@@ -1250,18 +1294,18 @@
 <context>
     <name>CMapTMS</name>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="69"/>
-        <location filename="../map/CMapTMS.cpp" line="79"/>
+        <location filename="../map/CMapTMS.cpp" line="70"/>
+        <location filename="../map/CMapTMS.cpp" line="80"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="69"/>
+        <location filename="../map/CMapTMS.cpp" line="70"/>
         <source>Failed to open %1</source>
         <translation>Fallo al abrir %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="79"/>
+        <location filename="../map/CMapTMS.cpp" line="80"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -1270,12 +1314,12 @@ línea %2, columna %3.
  %4</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="117"/>
+        <location filename="../map/CMapTMS.cpp" line="118"/>
         <source>Layer %1</source>
         <translation>Capa %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="288"/>
+        <location filename="../map/CMapTMS.cpp" line="289"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 teselas pendientes<br/></translation>
     </message>
@@ -1283,31 +1327,55 @@ línea %2, columna %3.
 <context>
     <name>CMapVRT</name>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="46"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="88"/>
-        <location filename="../map/CMapVRT.cpp" line="123"/>
+        <location filename="../map/CMapVRT.cpp" line="47"/>
+        <location filename="../map/CMapVRT.cpp" line="61"/>
+        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="124"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="46"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
+        <location filename="../map/CMapVRT.cpp" line="47"/>
+        <location filename="../map/CMapVRT.cpp" line="61"/>
         <source>Failed to load file: %1</source>
         <translation>Fallo al leer el archivo: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="88"/>
+        <location filename="../map/CMapVRT.cpp" line="89"/>
         <source>File must be 8 bit palette or gray indexed.</source>
         <translation>El archivo debe ser con paleta de 8 bits o escala de grises indexada.</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="123"/>
+        <location filename="../map/CMapVRT.cpp" line="124"/>
         <source>No georeference information found.</source>
         <translation>No se encontró información de georreferenciación.</translation>
     </message>
 </context>
 <context>
+    <name>CMapVrtBuilder</name>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="29"/>
+        <source>Build GDAL VRT</source>
+        <translation>Crear GDAL VRT</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="51"/>
+        <source>Select files...</source>
+        <translation>Seleccionar ficheros de origen...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="75"/>
+        <source>Select target file...</source>
+        <translation>Seleccionar fichero de destino...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="196"/>
+        <source>!!! failed !!!
+</source>
+        <translation>!!! fallo !!!</translation>
+    </message>
+</context>
+<context>
     <name>CMapWMTS</name>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="45"/>
@@ -1366,7 +1434,7 @@ Estructura desconocida.</translation>
 <context>
     <name>CMouseEditTrk</name>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="46"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="47"/>
         <source><b>Edit Track Points</b><br/>Select a track point for more options.<br/></source>
         <translation><b>Editar Puntos del Track</b><br/>Selecciones un punto del track para más opciones.<br/></translation>
     </message>
@@ -1405,9 +1473,9 @@ Estructura desconocida.</translation>
 <context>
     <name>CPhotoAlbum</name>
     <message>
-        <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
+        <location filename="../helpers/CPhotoAlbum.cpp" line="69"/>
         <source>Select images...</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccionar imagenes...</translation>
     </message>
 </context>
 <context>
@@ -1420,7 +1488,7 @@ Estructura desconocida.</translation>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="57"/>
         <source>time</source>
-        <translation type="unfinished"></translation>
+        <translation>tiempo</translation>
     </message>
     <message>
         <source>time [h]</source>
@@ -1471,22 +1539,22 @@ Estructura desconocida.</translation>
 <context>
     <name>CProjWizard</name>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="55"/>
+        <location filename="../grid/CProjWizard.cpp" line="57"/>
         <source>north</source>
         <translation>norte</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="56"/>
+        <location filename="../grid/CProjWizard.cpp" line="58"/>
         <source>south</source>
         <translation>sur</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="213"/>
+        <location filename="../grid/CProjWizard.cpp" line="215"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="213"/>
+        <location filename="../grid/CProjWizard.cpp" line="215"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1515,144 +1583,144 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="304"/>
         <source>Migrating database from version 4 to 5.</source>
-        <translation type="unfinished"></translation>
+        <translation>Convirtiendo base de datos de version 4 a 5.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="357"/>
         <source>Migrating database from version 5 to 6.</source>
-        <translation type="unfinished"></translation>
+        <translation>Convirtiendo base de datos de version 5 a 6.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="414"/>
         <source>Migrating database from version 6 to 7.</source>
-        <translation type="unfinished"></translation>
+        <translation>Convirtiendo base de datos de version 6 a 7.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="480"/>
         <source>Migrating database from version 7 to 8.</source>
-        <translation type="unfinished"></translation>
+        <translation>Convirtiendo base de datos de version 7 a 8.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="509"/>
         <source>Migrating database from version 8 to 9.</source>
-        <translation type="unfinished"></translation>
+        <translation>Convirtiendo base de datos de version 8 a 9.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="532"/>
         <source>Open database: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir base de datos:%1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="541"/>
         <source>Folders:          %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Carpetas:          %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="550"/>
         <source>Tracks:           %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Tracks:           %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="558"/>
         <source>Routes:           %1 (Only the basic route will be copied)</source>
-        <translation type="unfinished"></translation>
+        <translation>Routes:           %1 (Only the basic route will be copied)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="566"/>
         <source>Waypoints:        %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Waypoints:        %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
         <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
-        <translation type="unfinished"></translation>
+        <translation>Superposiciones:         %1 (solo las superposiciones de área se copiaran a QMapShack)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="581"/>
         <source>Diaries:          %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Diarios:          %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="588"/>
         <source>Map selections:   %1 (can't be converted to QMapShack)</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecciones de mapa:   %1 (NO pueden convertirse a QMapShack)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
         <source>------ Start to convert database to %1------</source>
-        <translation type="unfinished"></translation>
+        <translation>------ Comenzar a convertir base de datos a %1------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="598"/>
         <source>Failed to create target database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al crear la base de datos de destino.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="599"/>
         <source>------ Abort ------</source>
-        <translation type="unfinished"></translation>
+        <translation>------ Abortar ------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="627"/>
         <source>------ Done ------</source>
-        <translation type="unfinished"></translation>
+        <translation>------ Hecho ------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
         <source>Restore folders...</source>
-        <translation type="unfinished"></translation>
+        <translation>Restaurar carpetas...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
         <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Abort</source>
-        <translation type="unfinished">Abortar</translation>
+        <translation>Abortar</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="662"/>
         <source>Imported %1 folders and %2 diaries</source>
-        <translation type="unfinished"></translation>
+        <translation>Importadas %1 carpetas y %2 diarios</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Copy items...</source>
-        <translation type="unfinished"></translation>
+        <translation>Copia elementos....</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="692"/>
         <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
-        <translation type="unfinished"></translation>
+        <translation>Importado: %1 tracks, %2 waypoints, %3 routes, %4 areas</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="693"/>
         <source>Import folders...</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar carpetas...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="748"/>
         <source>Overlay of type '%1' cant be converted</source>
-        <translation type="unfinished"></translation>
+        <translation>No puede convertirse superposición del tipo '%1' </translation>
     </message>
 </context>
 <context>
     <name>CQmsDb</name>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Existing file...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Remove existing %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="51"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="52"/>
         <source>Remove existing file %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="160"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="162"/>
         <source>%1: drop item with QLGT DB ID %2</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1688,24 +1756,24 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
         <source>Error...</source>
-        <translation type="unfinished">Error...</translation>
+        <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
         <source>There is already a database with name '%1'</source>
-        <translation type="unfinished"></translation>
+        <translation>Ya existe una base de datos con el nombre '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="83"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
         <source>New database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nueva base de datos...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="108"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
         <source>Open database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir base de datos...</translation>
     </message>
 </context>
 <context>
@@ -1713,12 +1781,12 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Setup database...</source>
-        <translation type="unfinished">Configurar la base de datos...</translation>
+        <translation>Configurar la base de datos...</translation>
     </message>
     <message>
         <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Changes will become active after an application's restart.</source>
-        <translation type="unfinished">Los cambios surtirán efecto tras reiniciar la aplicación.</translation>
+        <translation>Los cambios surtirán efecto tras reiniciar la aplicación.</translation>
     </message>
 </context>
 <context>
@@ -1784,7 +1852,7 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="14"/>
         <source>Setup Map View...</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Vista de Mapa...</translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="22"/>
@@ -1866,27 +1934,27 @@ no es una definición de sistema de coordenadas válido:
         <translation><html><head/><body><p>Pulse para usar la escala actual como la escala máxima a la que mostrar el mapa</p></body></html></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="115"/>
+        <location filename="../dem/IDemPropSetup.ui" line="118"/>
         <source>Hillshading</source>
         <translation>Sombreado</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="141"/>
+        <location filename="../dem/IDemPropSetup.ui" line="144"/>
         <source>Slope </source>
-        <translation type="unfinished"></translation>
+        <translation>Pendiente</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="183"/>
-        <location filename="../dem/IDemPropSetup.ui" line="190"/>
-        <location filename="../dem/IDemPropSetup.ui" line="197"/>
-        <location filename="../dem/IDemPropSetup.ui" line="204"/>
-        <location filename="../dem/IDemPropSetup.ui" line="223"/>
-        <location filename="../dem/IDemPropSetup.ui" line="242"/>
-        <location filename="../dem/IDemPropSetup.ui" line="261"/>
-        <location filename="../dem/IDemPropSetup.ui" line="268"/>
-        <location filename="../dem/IDemPropSetup.ui" line="275"/>
-        <location filename="../dem/IDemPropSetup.ui" line="294"/>
-        <location filename="../dem/IDemPropSetup.ui" line="301"/>
+        <location filename="../dem/IDemPropSetup.ui" line="186"/>
+        <location filename="../dem/IDemPropSetup.ui" line="193"/>
+        <location filename="../dem/IDemPropSetup.ui" line="200"/>
+        <location filename="../dem/IDemPropSetup.ui" line="207"/>
+        <location filename="../dem/IDemPropSetup.ui" line="226"/>
+        <location filename="../dem/IDemPropSetup.ui" line="245"/>
+        <location filename="../dem/IDemPropSetup.ui" line="264"/>
+        <location filename="../dem/IDemPropSetup.ui" line="271"/>
+        <location filename="../dem/IDemPropSetup.ui" line="278"/>
+        <location filename="../dem/IDemPropSetup.ui" line="297"/>
+        <location filename="../dem/IDemPropSetup.ui" line="304"/>
         <source>TextLabel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1922,51 +1990,62 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="67"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="89"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="115"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="128"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="141"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="154"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="167"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="193"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="206"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="219"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="232"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="245"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="47"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="73"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="86"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="99"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="112"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="151"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="164"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="177"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="190"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="203"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="252"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="267"/>
         <source>about:blank</source>
         <translation>about:blank</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="82"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="40"/>
         <source>Position:</source>
         <translation>Posición:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="102"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="60"/>
         <source>Difficulty</source>
         <translation>Dificultad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="180"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="138"/>
         <source>Terrain</source>
         <translation>Terreno</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="32"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="214"/>
+        <source>Update spoilers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="217"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="275"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="256"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="293"/>
         <source>Hint:</source>
         <translation>Consejo:</translation>
     </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="324"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IDetailsOvlArea</name>
@@ -2032,38 +2111,38 @@ no es una definición de sistema de coordenadas válido:
         <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
         <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
         <source>-</source>
-        <translation type="unfinished">-</translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
         <source>Sort By Time</source>
-        <translation type="unfinished"></translation>
+        <translation>Ordenar por Fecha/Hora</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
         <source>Keep Order of Project</source>
-        <translation type="unfinished"></translation>
+        <translation>Mantener orden del proyecto</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="93"/>
         <source>Print diary</source>
-        <translation type="unfinished"></translation>
+        <translation>Imprimir diario</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="96"/>
         <location filename="../gis/prj/IDetailsPrj.ui" line="116"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="113"/>
         <source>Rebuild diary.</source>
-        <translation type="unfinished"></translation>
+        <translation>Recargar diario.</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Etiquetas:</translation>
     </message>
 </context>
 <context>
@@ -2082,88 +2161,98 @@ no es una definición de sistema de coordenadas válido:
 -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="237"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="182"/>
+        <source>Graph Control</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="203"/>
         <source>Profile</source>
         <translation>Perfil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="244"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="370"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="210"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="443"/>
         <source>Speed</source>
         <translation>Velocidad</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="251"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="217"/>
         <source>Progress</source>
         <translation>Progreso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="194"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
+        <source>Track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="253"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
         <source>Points</source>
         <translation>Puntos</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="423"/>
         <source>Time</source>
         <translation>Tiempo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="355"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="428"/>
         <source>Ele.</source>
         <translation>Altitud</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="360"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="433"/>
         <source>Delta</source>
         <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="365"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="438"/>
         <source>Dist.</source>
         <translation>Distancia</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="448"/>
         <source>Slope</source>
         <translation>Pendiente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="380"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="453"/>
         <source>Ascend</source>
         <translation>Ascenso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="385"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="458"/>
         <source>Descend</source>
         <translation>Descenso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="390"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="463"/>
         <source>Position</source>
         <translation>Posición</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="156"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="347"/>
         <source>Info</source>
         <translation>Información</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="273"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="308"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="472"/>
         <source>Filter</source>
-        <translation type="unfinished"></translation>
+        <translation>Filtro</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="509"/>
         <source>Hist.</source>
         <translation>Historial</translation>
     </message>
@@ -2220,12 +2309,12 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="270"/>
         <source>Add images.</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir imagenes.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="290"/>
         <source>Delete selected image.</source>
-        <translation type="unfinished"></translation>
+        <translation>Eliminar imagen seleccionada.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="144"/>
@@ -2271,17 +2360,17 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
         <source><b>Remove Track Points</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Eliminar puntos del Track</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
         <source>Remove all hidden track points permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>Eliminar todos los puntos ocultos del track definitavamente.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2294,27 +2383,27 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
         <source><b>Hide Points (Douglas Peuker)</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Ocultar Puntos (Douglas Peuker)</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="57"/>
         <source>Hide track points if the distance to a line between neighboring points is less than</source>
-        <translation type="unfinished"></translation>
+        <translation>Ocultar puntos del track si la distancia a una linea entre puntos vecinos es menor que</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
         <source>m</source>
-        <translation type="unfinished">m</translation>
+        <translation>m</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="93"/>
         <source>Apply filter now.</source>
-        <translation type="unfinished"></translation>
+        <translation>Aplicar filtro ahora.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="96"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2327,22 +2416,22 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="51"/>
         <source><b>Smooth Profile (Median Method)</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Suavizar Perfil (Mediana)</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="63"/>
         <source>Smooth deviation of the track points elevation with a Median filter of size </source>
-        <translation type="unfinished"></translation>
+        <translation>Suavizar el desvio de la elevación de los puntos del track con la Mediana de</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
         <source>points</source>
-        <translation type="unfinished"></translation>
+        <translation>puntos</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="105"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2355,17 +2444,17 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="35"/>
         <source><b>Change Time</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Cambiar Fecha/hora</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="44"/>
         <source>Change start of track to </source>
-        <translation type="unfinished"></translation>
+        <translation>Modificar el inicio del track a </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="71"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2378,27 +2467,27 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="45"/>
         <source><b>Obscure Timestamps</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Ocultar Marcas de tiempo</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="54"/>
         <source>Increase timestamp by</source>
-        <translation type="unfinished"></translation>
+        <translation>Incrementar marca de tiempo en</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
         <source> sec.</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="68"/>
         <source>with each track point. 0 sec. will remove timestamps.</source>
-        <translation type="unfinished"></translation>
+        <translation>con cada punto del track. ( 0 sec. eliminará las marcas de tiempo).</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2411,22 +2500,22 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
         <source><b>Offset Elevation</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Desplazar Elevación</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
         <source>Add offset of</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir corrección de </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
         <source>to track points elevation.</source>
-        <translation type="unfinished"></translation>
+        <translation>a la elevación de los puntos del track.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2439,17 +2528,17 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="51"/>
         <source><b>Replace Elevation Data</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Reemplazar Datos de Elevación</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="63"/>
         <source>Replace elevation of track points with the values from loaded DEM files.</source>
-        <translation type="unfinished"></translation>
+        <translation>Reemplazar elevación de los puntos del track utilizando los valores del fichero DEM cargado.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="70"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2462,17 +2551,17 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
         <source><b>Reset Hidden Track Points</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Restaurar Puntos Ocultos del Track</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
         <source>Make all trackpoints visible again.</source>
-        <translation type="unfinished"></translation>
+        <translation>Hacer visibles de nuevo todos los puntos del track.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2485,22 +2574,22 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
         <source><b>Change Speed</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Modificar Velocidad</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
         <source>Set speed to </source>
-        <translation type="unfinished"></translation>
+        <translation>Ajustar velocidad a </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
         <source> km/h</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2514,12 +2603,12 @@ no es una definición de sistema de coordenadas válido:
         <location filename="../gis/IGisWidget.ui" line="69"/>
         <location filename="../gis/IGisWidget.ui" line="99"/>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>Nombre</translation>
     </message>
     <message>
         <location filename="../gis/IGisWidget.ui" line="133"/>
         <source>To add a database do a right click on the database list above.</source>
-        <translation type="unfinished"></translation>
+        <translation>Para añadir una base de datos haga click-derecho en el espacio superior.  </translation>
     </message>
 </context>
 <context>
@@ -2576,31 +2665,31 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="28"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="45"/>
         <source>Source Database:</source>
-        <translation type="unfinished"></translation>
+        <translation>Origen de Base de datos:</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="35"/>
-        <location filename="../qlgt/IImportDatabase.ui" line="76"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="52"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="93"/>
         <source>-</source>
-        <translation type="unfinished">-</translation>
+        <translation>-</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="42"/>
-        <location filename="../qlgt/IImportDatabase.ui" line="83"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="22"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="63"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="69"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="86"/>
         <source>Target Database:</source>
-        <translation type="unfinished"></translation>
+        <translation>Destino de Base de Datos:</translation>
     </message>
     <message>
         <location filename="../qlgt/IImportDatabase.ui" line="102"/>
         <source>Start</source>
-        <translation type="unfinished"></translation>
+        <translation>Comenzar</translation>
     </message>
 </context>
 <context>
@@ -2621,28 +2710,28 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
         <source>Links...</source>
-        <translation type="unfinished"></translation>
+        <translation>Links...</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="23"/>
         <source>Type</source>
-        <translation type="unfinished"></translation>
+        <translation>Tipo</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="28"/>
         <source>Text</source>
-        <translation type="unfinished"></translation>
+        <translation>Texto</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="33"/>
         <source>Uri</source>
-        <translation type="unfinished"></translation>
+        <translation>Uri</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="43"/>
         <location filename="../helpers/ILinksDialog.ui" line="63"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2680,20 +2769,20 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../IMainWindow.ui" line="111"/>
         <source>Tool</source>
-        <translation type="unfinished"></translation>
+        <translation>Herramientas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="128"/>
+        <location filename="../IMainWindow.ui" line="129"/>
         <source>Maps</source>
         <translation>Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="165"/>
+        <location filename="../IMainWindow.ui" line="166"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Modelo Digital del Terreno (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="198"/>
+        <location filename="../IMainWindow.ui" line="199"/>
         <source>Data</source>
         <translation>Datos</translation>
     </message>
@@ -2702,91 +2791,101 @@ no es una definición de sistema de coordenadas válido:
         <translation type="obsolete">Añadir Espacio de Trabajo de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="211"/>
-        <location filename="../IMainWindow.ui" line="214"/>
+        <location filename="../IMainWindow.ui" line="212"/>
+        <location filename="../IMainWindow.ui" line="215"/>
         <source>Add Map View</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir Vista de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="217"/>
+        <location filename="../IMainWindow.ui" line="218"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="229"/>
+        <location filename="../IMainWindow.ui" line="230"/>
         <source>Show Scale</source>
         <translation>Mostrar Escala</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="238"/>
+        <location filename="../IMainWindow.ui" line="239"/>
         <source>Setup Map Font</source>
         <translation>Configurar Fuente del Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="250"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Show Grid</source>
         <translation>Mostrar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="253"/>
+        <location filename="../IMainWindow.ui" line="254"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="262"/>
+        <location filename="../IMainWindow.ui" line="263"/>
         <source>Setup Grid</source>
         <translation>Configurar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="265"/>
+        <location filename="../IMainWindow.ui" line="266"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="277"/>
+        <location filename="../IMainWindow.ui" line="278"/>
         <source>Flip Mouse Wheel</source>
         <translation>Invertir la Rueda del Ratón</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="286"/>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="287"/>
+        <location filename="../IMainWindow.ui" line="290"/>
         <source>Setup Map Paths</source>
         <translation>Configurar Rutas de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="302"/>
         <source>POI Text</source>
         <translation>Texto del POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="313"/>
+        <location filename="../IMainWindow.ui" line="314"/>
         <source>Night / Day</source>
         <translation>Noche / Día</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="326"/>
         <source>Map Tool Tip</source>
         <translation>Mostrar Tooltips en los Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="335"/>
         <source>Setup DEM Paths</source>
         <translation>Configurar Rutas a los DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="343"/>
+        <location filename="../IMainWindow.ui" line="344"/>
         <source>About</source>
         <translation>Acerca de</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="352"/>
+        <location filename="../IMainWindow.ui" line="353"/>
         <source>Help</source>
         <translation>Ayuda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="361"/>
-        <location filename="../IMainWindow.ui" line="364"/>
+        <location filename="../IMainWindow.ui" line="362"/>
+        <location filename="../IMainWindow.ui" line="365"/>
         <source>Setup Map View</source>
+        <translation>Configurar Vista de Mapa</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="479"/>
+        <source>VRT Builder</source>
+        <translation>Asistente VRT</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="482"/>
+        <source>GUI front end to gdalbuildvrt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -2794,82 +2893,82 @@ no es una definición de sistema de coordenadas válido:
         <translation type="obsolete">Configurar Espacio de Trabajo de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="374"/>
         <source>Load GIS Data</source>
         <translation>Cargar Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="376"/>
+        <location filename="../IMainWindow.ui" line="377"/>
         <source>Load projects from file</source>
         <translation>Cargar proyectos desde archivo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="379"/>
+        <location filename="../IMainWindow.ui" line="380"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="388"/>
+        <location filename="../IMainWindow.ui" line="389"/>
         <source>Save All GIS Data</source>
         <translation>Guardar Todos los Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="391"/>
+        <location filename="../IMainWindow.ui" line="392"/>
         <source>Save all projects in the workspace</source>
         <translation>Guardar todos los proyectos del espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="394"/>
+        <location filename="../IMainWindow.ui" line="395"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="403"/>
+        <location filename="../IMainWindow.ui" line="404"/>
         <source>Setup Time Zone</source>
         <translation>Configurar Zona Horaria</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="412"/>
+        <location filename="../IMainWindow.ui" line="413"/>
         <source>Add empty project</source>
         <translation>Añadir proyecto vacío</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="424"/>
+        <location filename="../IMainWindow.ui" line="425"/>
         <source>Search Google</source>
         <translation>Buscar en Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="433"/>
+        <location filename="../IMainWindow.ui" line="434"/>
         <source>Close all projects</source>
         <translation>Cerrar todos los proyectos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
+        <location filename="../IMainWindow.ui" line="437"/>
         <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="445"/>
+        <location filename="../IMainWindow.ui" line="446"/>
         <source>Setup Units</source>
         <translation>Configurar Unidades</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="455"/>
         <source>Setup Workspace</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="458"/>
         <source>Setup save on exit.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="467"/>
         <source>Import Database from QLandkarte</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar base de datos de Qlandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="470"/>
         <source>Import QLandkarte GT database</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2909,13 +3008,20 @@ no es una definición de sistema de coordenadas válido:
         <translation>Configurar rutas de mapas</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="31"/>
-        <location filename="../map/IMapPathSetup.ui" line="51"/>
+        <location filename="../map/IMapPathSetup.ui" line="20"/>
+        <source>Root path of tile cache for online maps:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPathSetup.ui" line="36"/>
+        <location filename="../map/IMapPathSetup.ui" line="73"/>
+        <location filename="../map/IMapPathSetup.ui" line="93"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="93"/>
+        <location filename="../map/IMapPathSetup.ui" line="29"/>
+        <location filename="../map/IMapPathSetup.ui" line="135"/>
         <source>-</source>
         <translation>-</translation>
     </message>
@@ -2940,7 +3046,6 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../map/IMapPropSetup.ui" line="53"/>
         <location filename="../map/IMapPropSetup.ui" line="90"/>
-        <location filename="../map/IMapPropSetup.ui" line="200"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -2970,22 +3075,61 @@ no es una definición de sistema de coordenadas válido:
         <translation>Puntos</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="190"/>
+        <location filename="../map/IMapPropSetup.ui" line="233"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="220"/>
+        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <source>Cache Path</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPropSetup.ui" line="196"/>
         <source>Cache Size (MB)</source>
         <translation>Tamaño de Caché (MiB)</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <location filename="../map/IMapPropSetup.ui" line="216"/>
         <source>Expiration (Days)</source>
         <translation>Caducidad (Días)</translation>
     </message>
 </context>
 <context>
+    <name>IMapVrtBuilder</name>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="22"/>
+        <location filename="../map/IMapVrtBuilder.ui" line="56"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="39"/>
+        <source>Select source files:</source>
+        <translation>Seleccionar ficheros de origen:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="79"/>
+        <source>Target Filename:</source>
+        <translation>Fichero de destino:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="86"/>
+        <source>-</source>
+        <translation>-</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="95"/>
+        <source>Start</source>
+        <translation>Comenzar</translation>
+    </message>
+</context>
+<context>
     <name>IMouseEditLine</name>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
@@ -3013,13 +3157,13 @@ no es una definición de sistema de coordenadas válido:
     <message>
         <location filename="../helpers/IPhotoAlbum.ui" line="20"/>
         <source>Form</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/IPhotoAlbum.ui" line="50"/>
         <location filename="../helpers/IPhotoAlbum.ui" line="77"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -3150,7 +3294,7 @@ o
     <message>
         <location filename="../mouse/IScrOptEditLine.ui" line="26"/>
         <source>Form</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptEditLine.ui" line="47"/>
@@ -3173,7 +3317,7 @@ o
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="40"/>
@@ -3186,7 +3330,7 @@ o
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="51"/>
         <source>Copy area into another project.</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar área en otro proyecto.</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="112"/>
@@ -3311,7 +3455,7 @@ o
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="42"/>
         <source>Copy route into another project.</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar ruta en otro proyecto.</translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="56"/>
@@ -3334,12 +3478,12 @@ o
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="40"/>
         <source>View details &amp; Edit properties of track.</source>
-        <translation>Ver detalles &amp; Editar las propiedades del track.</translation>
+        <translation>Ver detalles / Editar las propiedades del track.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="68"/>
         <source>Delete</source>
-        <translation>Borrar.</translation>
+        <translation>Eliminar</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="89"/>
@@ -3372,12 +3516,12 @@ o
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
         <source>Copy track into another project.</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar track en otro proyecto.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
         <source>Select a range of points.</source>
-        <translation type="unfinished">Selecciones un rango de puntos.</translation>
+        <translation>Seleccionar un rango de puntos.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
@@ -3405,7 +3549,7 @@ o
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="49"/>
         <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation><html><head/><body><p>Ver detalles &amp; Editar</p></body></html></translation>
+        <translation>Ver detalles / Editar</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
@@ -3419,12 +3563,12 @@ o
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="63"/>
         <source>Copy waypoint into another project.</source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Copiar waypoint en otro proyecto.</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="77"/>
         <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation><html><head/><body><p>Borrar</p></body></html></translation>
+        <translation>Eliminar</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
@@ -3447,12 +3591,12 @@ o
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
         <source>Copy item...</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar elemento...</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
         <source>Replace existing item</source>
-        <translation type="unfinished"></translation>
+        <translation>Sustituir el elemento existente</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
@@ -3465,32 +3609,32 @@ o
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
         <source>Do not copy item</source>
-        <translation type="unfinished"></translation>
+        <translation>NO copiar el elemento</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
         <source>Create a clone</source>
-        <translation type="unfinished"></translation>
+        <translation>Crear un duplicado</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
         <source>Replace with:</source>
-        <translation type="unfinished"></translation>
+        <translation>Sustituir por:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
         <source>Keep item:</source>
-        <translation type="unfinished"></translation>
+        <translation>Mantener:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
         <source>The clone's name will be appended with '_Clone'</source>
-        <translation type="unfinished"></translation>
+        <translation>Se añadirá el sufijo '_Clone' al nombre del duplicado</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="132"/>
         <source>And for all other items, too.</source>
-        <translation type="unfinished"></translation>
+        <translation>Hacer igual para todos los elementos.</translation>
     </message>
 </context>
 <context>
@@ -3553,38 +3697,38 @@ o
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
         <source>Add database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir Base de Datos...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>File</source>
-        <translation type="unfinished">Archivo</translation>
+        <translation>Archivo</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
         <source>-</source>
-        <translation type="unfinished">-</translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>Nombre</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
         <source>Add new database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir nueva base de datos.</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
         <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
         <source>Open existing database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir base de datos existente.</translation>
     </message>
 </context>
 <context>
@@ -3592,27 +3736,27 @@ o
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="14"/>
         <source>Folder...</source>
-        <translation type="unfinished"></translation>
+        <translation>Carpeta...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="22"/>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>Nombre</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="34"/>
         <source>Group</source>
-        <translation type="unfinished"></translation>
+        <translation>Grupo</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="45"/>
         <source>Project</source>
-        <translation type="unfinished">Proyecto</translation>
+        <translation>Proyecto</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="59"/>
         <source>Other</source>
-        <translation type="unfinished"></translation>
+        <translation>Otros</translation>
     </message>
 </context>
 <context>
@@ -3624,17 +3768,17 @@ o
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
         <source>Setup workspace...</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar espacio de trabajo...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
         <source>save workspace on exit, and every</source>
-        <translation type="unfinished">guardar el espacio de trabajo al salir, y cada</translation>
+        <translation>guardar el espacio de trabajo al salir, y cada</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
         <source>minutes</source>
-        <translation type="unfinished">minutos</translation>
+        <translation>minutos</translation>
     </message>
 </context>
 <context>
@@ -3839,23 +3983,33 @@ o
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../GeoMath.cpp" line="89"/>
+        <location filename="../GeoMath.cpp" line="160"/>
+        <location filename="../GeoMath.cpp" line="166"/>
         <source>Error</source>
         <translation>Error</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="89"/>
+        <location filename="../GeoMath.cpp" line="160"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation>Formato de coordenadas incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss" o "[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
+    </message>
+    <message>
+        <location filename="../GeoMath.cpp" line="166"/>
+        <source>Position values out of bounds. </source>
+        <translation type="unfinished">Valores de posición fuera del límite.</translation>
+    </message>
+    <message>
         <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
-        <translation>Formato de posición incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss"</translation>
+        <translation type="vanished">Formato de posición incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss"</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="115"/>
         <source>Failed to read...</source>
         <translation>Fallo al leer...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -3864,7 +4018,7 @@ línea %2, columna %3.
  %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="115"/>
         <source>Not a GPX file: </source>
         <translation>No es un archivo GPX: </translation>
     </message>
@@ -3899,211 +4053,212 @@ Areas: %1</source>
 Áreas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="206"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="208"/>
         <source><br/>
 Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="223"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="225"/>
         <source>Waypoints: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="227"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="229"/>
         <source>Tracks: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="231"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="233"/>
         <source>Routes: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
         <source>Areas: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="291"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="293"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation>¿Está seguro de que quiere borrar '%1' del proyecto '%2'?</translation>
+        <translation>¿Desea realmente eleiminar '%1' del proyecto '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="406"/>
+        <location filename="../gis/CGisListDB.cpp" line="407"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Desea realmente eleiminar '%1' de la carpeta '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="407"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="408"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="294"/>
         <source>Delete...</source>
         <translation>Borrar...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="93"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open...</source>
         <translation>Fallo al abrir...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="93"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
         <translation>Fallo al abrir %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="196"/>
+        <location filename="../gis/db/CDBProject.cpp" line="126"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="208"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="157"/>
         <source>Save GIS data to...</source>
         <translation>Guardar los datos GIS en...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="157"/>
+        <location filename="../gis/db/CDBProject.cpp" line="158"/>
         <source>Save ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="157"/>
+        <location filename="../gis/db/CDBProject.cpp" line="158"/>
         <source>Abort save</source>
-        <translation type="unfinished"></translation>
+        <translation>Cancelar guardar</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="271"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="283"/>
         <source>File exists ...</source>
         <translation>El archivo ya existe ...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="272"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="284"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
         <translation>El archivo ya existe y no lo ha creado QMapShack. Si pulsa 'sí' todos los datos de este archivo se perderán. Incluso si el archivo contiene datos GPX y QMapShack lo ha leído, QMapShack podría no ser capaz de leer y almacenar todos los elementos en el archivo, y aquellos que no haya leído se perderán. Se le recomienda usar otro archivo distinto. <b>¿Quiere realmente sobrescribir el archivo</b></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="350"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="379"/>
         <source>Failed to create file '%1'</source>
         <translation>Fallo al crear el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="364"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="393"/>
         <source>Saveing GIS data failed...</source>
         <translation>Fallo al guardar los datos GIS...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="359"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="388"/>
         <source>Failed to write file '%1'</source>
         <translation>Fallo al escribir en el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="333"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="363"/>
         <source>Length: %1 %2</source>
         <translation>Longitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="340"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="370"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation>, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="348"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
         <source>Time: %1</source>
         <translation>Tiempo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="351"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="361"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="381"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="391"/>
         <source>, Speed: %1 %2</source>
         <translation>, Velocidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="388"/>
         <source>Moving: %1</source>
         <translation>En movimiento: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="397"/>
         <source>Start: %1</source>
         <translation>Comienzo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="372"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="402"/>
         <source>End: %1</source>
         <translation>Final: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="376"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="406"/>
         <source>Points: %1 (%2)</source>
         <translation>Puntos: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="441"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="478"/>
         <source>Ele.: %1 %2</source>
         <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source> slope: %1%3 (%2%)</source>
         <translation> pendiente: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="449"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
         <source> speed: %1%2</source>
         <translation> velocidad: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="498"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Ascenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="465"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="502"/>
         <source>Ascend: - (-)</source>
         <translation>Ascenso: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="475"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="512"/>
         <source> Descend: - (-) </source>
         <translation> Descenso: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="496"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="533"/>
         <source> Moving: - (-) </source>
         <translation> En movimiento: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1089"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1126"/>
         <source>Hide points.</source>
         <translation>Ocultar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1123"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1160"/>
         <source>Show points.</source>
         <translation>Mostrar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="471"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="508"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Descenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="266"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="287"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Se cambiaron los puntos del track, y descartados todos los datos previos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="519"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Distancia: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
         <source>Dist.: - (-)</source>
         <translation>Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="492"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="529"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation> En movimiento: %1%2 (%3%)</translation>
     </message>
@@ -4130,7 +4285,7 @@ Filename: %1</source>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="162"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="164"/>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
         <source>_Clone</source>
         <translation type="unfinished"></translation>
@@ -4178,86 +4333,91 @@ Filename: %1</source>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="520"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="139"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1493"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="376"/>
         <source>Changed links</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió el enlace</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="532"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1440"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1505"/>
         <source>Changed color</source>
         <translation>Se cambió el color</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="229"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="242"/>
         <source>Elevation: %1 %2</source>
         <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="240"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="253"/>
         <source>Proximity: %1 %2</source>
         <translation>Proximidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1475"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
         <source>Changed name</source>
         <translation>Se cambió el nombre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="946"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="961"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="980"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1039"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1185"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="190"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="107"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="190"/>
         <source>Enter new waypoint name.</source>
         <translation>Introduzca el nuevo nombre del waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="318"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
         <source>Changed position</source>
         <translation>Se cambió la posición</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="340"/>
         <source>Changed elevation</source>
         <translation>Se cambió la altitud</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="330"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="346"/>
         <source>Changed proximity</source>
         <translation>Se cambió la proximidad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="358"/>
         <source>Changed icon</source>
         <translation>Se cambió el icono</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="382"/>
         <source>Changed images</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió la imagen</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Add image</source>
+        <translation>Añadir Imagen</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="127"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1481"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="364"/>
         <source>Changed comment</source>
         <translation>Se cambió el comentario</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="133"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1487"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="370"/>
         <source>Changed description</source>
         <translation>Se cambió la descripción</translation>
     </message>
@@ -4277,77 +4437,77 @@ Filename: %1</source>
         <translation>No Disponible</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="464"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="845"/>
         <source>Warning...</source>
         <translation>Aviso...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="464"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
         <translation>Este es un fichero TYP con una codificación de polígonos desconocida. ¡Por favor repórtelo!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="845"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
         <translation>Este es un fichero TYP con una codificación de polilíneas desconocida. ¡Por favor repórtelo!</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="294"/>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
         <source>Initial version.</source>
         <translation>Versión inicial</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="388"/>
+        <location filename="../gis/IGisItem.cpp" line="407"/>
         <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
         <translation>Este elemento probablemente sea de sólo lectura por no haber sido creado por QMapShack. Habitualmente no deseará cambiar los datos importados. De lo contrario, es correcto pulsar 'OK'.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="389"/>
+        <location filename="../gis/IGisItem.cpp" line="408"/>
         <source>Read Only Mode...</source>
         <translation>Modo Sólo Lectura...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="587"/>
+        <location filename="../gis/IGisItem.cpp" line="613"/>
         <source><h4>Comment:</h4></source>
-        <translation type="unfinished"><h4>Comentario:</h4></translation>
+        <translation><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="590"/>
+        <location filename="../gis/IGisItem.cpp" line="616"/>
         <source><p>--- no comment ---</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>---sin comentario---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="646"/>
+        <location filename="../gis/IGisItem.cpp" line="627"/>
+        <location filename="../gis/IGisItem.cpp" line="672"/>
         <source><h4>Description:</h4></source>
-        <translation type="unfinished"><h4>Descripción:</h4></translation>
+        <translation><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="649"/>
+        <location filename="../gis/IGisItem.cpp" line="630"/>
+        <location filename="../gis/IGisItem.cpp" line="675"/>
         <source><p>--- no description ---</p></source>
-        <translation type="unfinished"><p>---sin descripción---</p></translation>
+        <translation><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
+        <location filename="../gis/IGisItem.cpp" line="641"/>
+        <location filename="../gis/IGisItem.cpp" line="686"/>
         <source><h4>Links:</h4></source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
+        <location filename="../gis/IGisItem.cpp" line="644"/>
+        <location filename="../gis/IGisItem.cpp" line="689"/>
         <source><p>--- no links ---</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>--- sin links ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="946"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="961"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="980"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1039"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1185"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="107"/>
         <source>Enter new track name.</source>
         <translation>Introduzca el nombre del nuevo track.</translation>
     </message>
@@ -4360,18 +4520,18 @@ Filename: %1</source>
         <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
         <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
         <source>All your data grouped by folders.</source>
-        <translation type="unfinished"></translation>
+        <translation>Todos tus datos agrupados en carpetas.</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
         <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
-        <translation type="unfinished"></translation>
+        <translation>Objetos Perdidos</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
         <source>Lost & Found (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation>Objetos Perdidos (%1)</translation>
     </message>
     <message>
         <location filename="../qlgt/converter.cpp" line="194"/>
@@ -4379,87 +4539,134 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Corrupt track ...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Track corrupto...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="95"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation type="unfinished"></translation>
+        <translation>Ocultar puntos con algoritmo Douglas Peuker (%1%2)</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="111"/>
         <source>Reset all hidden track points to visible</source>
-        <translation type="unfinished"></translation>
+        <translation>Restaurados todos los puntos a visible</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="136"/>
         <source>Permanently removed all hidden track points</source>
-        <translation type="unfinished"></translation>
+        <translation>Elminados definitivamente todos los puntos ocultos del track</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="186"/>
         <source>Smoothed profile with a Median filter of size %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Pefil suavizado con Mediana de %1 puntos</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="222"/>
         <source>Replaced elevation data with data from DEM files.</source>
-        <translation type="unfinished"></translation>
+        <translation>Datos de elevación sustituidos por valores de fichero DEM.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="245"/>
         <source>Offset elevation data by %1%2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Elevación desplazada %1%2.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="264"/>
         <source>Changed start of track to %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Cambiado el inicio de track a %1.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="283"/>
         <source>Remove timestamps.</source>
-        <translation type="unfinished"></translation>
+        <translation>Eliminadas las marcas de tiempo.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="306"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation type="unfinished"></translation>
+        <translation>Marcas de tiempo ficticias con incremento de %1 sec.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="339"/>
         <source>Changed speed to %1%2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Velocidad modificada a %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <location filename="../gis/CGisListWks.cpp" line="897"/>
         <source>Delete project...</source>
-        <translation type="unfinished"></translation>
+        <translation>Eliminar Proyecto...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <location filename="../gis/CGisListWks.cpp" line="897"/>
         <source>Do you really want to delete %1?</source>
+        <translation>¿Desea realmente eliminar %1?</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="189"/>
+        <location filename="../gis/tnv/serialization.cpp" line="292"/>
+        <location filename="../gis/tnv/serialization.cpp" line="360"/>
+        <location filename="../gis/tnv/serialization.cpp" line="389"/>
+        <location filename="../gis/tnv/serialization.cpp" line="400"/>
+        <location filename="../gis/tnv/serialization.cpp" line="421"/>
+        <location filename="../gis/tnv/serialization.cpp" line="549"/>
+        <location filename="../gis/tnv/serialization.cpp" line="577"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="606"/>
+        <location filename="../gis/tnv/serialization.cpp" line="634"/>
+        <location filename="../gis/tnv/serialization.cpp" line="693"/>
+        <source>Error...</source>
+        <translation>Error...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="189"/>
+        <location filename="../gis/tnv/serialization.cpp" line="292"/>
+        <location filename="../gis/tnv/serialization.cpp" line="360"/>
+        <location filename="../gis/tnv/serialization.cpp" line="549"/>
+        <source>Failed to open %1.</source>
+        <translation>Fallo al abrir %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="389"/>
+        <location filename="../gis/tnv/serialization.cpp" line="400"/>
+        <location filename="../gis/tnv/serialization.cpp" line="577"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished">Solamente soporta formato lon/lat WGS84.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="421"/>
+        <location filename="../gis/tnv/serialization.cpp" line="606"/>
+        <location filename="../gis/tnv/serialization.cpp" line="634"/>
+        <location filename="../gis/tnv/serialization.cpp" line="693"/>
+        <source>Failed to read data.</source>
+        <translation>Fallo al leer los datos.</translation>
+    </message>
+    <message>
+        <location filename="../device/CDeviceGarmin.cpp" line="191"/>
+        <source>Picture%1</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_fr.ts
similarity index 64%
copy from src/locale/qmapshack_de.ts
copy to src/locale/qmapshack_fr.ts
index 695c581..a3a937b 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_fr.ts
@@ -1,16 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="de_DE">
+<TS version="2.1" language="fr">
 <context>
     <name>CCanvas</name>
     <message>
-        <source>Workspace %1</source>
-        <translation type="obsolete">Ansicht %1</translation>
-    </message>
-    <message>
-        <location filename="../canvas/CCanvas.cpp" line="59"/>
+        <location filename="../canvas/CCanvas.cpp" line="61"/>
         <source>View %1</source>
-        <translation>Ansicht %1</translation>
+        <translation>Vue %1</translation>
     </message>
 </context>
 <context>
@@ -18,25 +14,25 @@
     <message>
         <location filename="../dem/CDemList.cpp" line="145"/>
         <source>Deactivate</source>
-        <translation>Deaktivieren</translation>
+        <translation>Désactiver</translation>
     </message>
     <message>
         <location filename="../dem/CDemList.cpp" line="145"/>
         <source>Activate</source>
-        <translation>Aktivieren</translation>
+        <translation>Activer</translation>
     </message>
 </context>
 <context>
     <name>CDemPathSetup</name>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="39"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="41"/>
         <source>Add or remove paths containing DEM data. There can be multiple files in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <translation>Hinzufügen oder Entfernen von Verzeichnissen mit DEM Daten. Im Verzeichnis können mehrere Dateien vorliegen. Allerdings wird kein Unterverzeichnis durchsucht. Unterstützte Formate sind: %1</translation>
+        <translation>Ajoutez ou retirez des répertoires qui contiennent des données DEM. Il peut y avoir plusieurs fichiers dans un répertoire mais les sous-répertoires ne sont pas prises en compte.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="54"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="56"/>
         <source>Select DEM file path...</source>
-        <translation>Pfad für DEM Dateien wählen...</translation>
+        <translation>Sélectionnez le répertoire qui contient les fichiers DEM</translation>
     </message>
 </context>
 <context>
@@ -44,81 +40,76 @@
     <message>
         <location filename="../dem/CDemPropSetup.cpp" line="183"/>
         <source><b>Grade %1</b></source>
-        <translation><b>Stufe %1</b></translation>
+        <translation type="unfinished"><b>Niveau %1</b></translation>
     </message>
 </context>
 <context>
     <name>CDemVRT</name>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
-        <location filename="../dem/CDemVRT.cpp" line="51"/>
-        <location filename="../dem/CDemVRT.cpp" line="60"/>
-        <location filename="../dem/CDemVRT.cpp" line="87"/>
+        <location filename="../dem/CDemVRT.cpp" line="45"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="88"/>
         <source>Error...</source>
-        <translation>Fehler...</translation>
+        <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
+        <location filename="../dem/CDemVRT.cpp" line="45"/>
         <source>Failed to load file: %1</source>
-        <translation>Die Datei konnte nicht geladen werden: %1</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="51"/>
-        <location filename="../dem/CDemVRT.cpp" line="60"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
-        <translation>DEM muss aus einem Satz mit 16 bit oder 32 bit Daten bestehen.</translation>
-    </message>
-    <message>
-        <source>DEM must have one band with 16 bit or 32 bit data.</source>
-        <translation type="obsolete">Das DEM muss aus einem Satz mit 16 bit oder 32 bit Daten bestehen.</translation>
+        <translation>Le DEM doit contenir un seule bande avec des données en 16 ou 32 bits.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="87"/>
+        <location filename="../dem/CDemVRT.cpp" line="88"/>
         <source>No georeference information found.</source>
-        <translation>Keine Georeferenzierung gefunden.</translation>
+        <translation>Aucune information de géoréférencement trouvé</translation>
     </message>
 </context>
 <context>
     <name>CDetailsGeoCache</name>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="63"/>
         <source>none</source>
-        <translation>keiner</translation>
+        <translatorcomment>...indice?</translatorcomment>
+        <translation>aucun</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="102"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="63"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="133"/>
         <source>???</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="160"/>
+        <source>Searching for images...</source>
+        <translation>Recherche d'images...</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="265"/>
+        <source>No images found</source>
+        <translation>Aucune image trouvée</translation>
+    </message>
 </context>
 <context>
     <name>CDetailsOvlArea</name>
     <message>
         <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
         <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
+        <translation>Éditer le nom...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
-        <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen ein.</translation>
-    </message>
-    <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Kommentar:</h4></translation>
-    </message>
-    <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
-    </message>
-    <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
+        <source>Enter new area name.</source>
+        <translation type="unfinished">Saisir le nouveau nom de la surface.</translation>
     </message>
     <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
+        <source>Enter new waypoint name.</source>
+        <translation type="vanished">Saisir le nouveau nom du waypoint.</translation>
     </message>
 </context>
 <context>
@@ -127,22 +118,22 @@
         <location filename="../gis/prj/CDetailsPrj.cpp" line="165"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="380"/>
         <source>none</source>
-        <translation>keine</translation>
+        <translation>aucun</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
         <source>Build diary...</source>
-        <translation>Tagebuch erstellen...</translation>
+        <translation>Créer le journal...</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
         <source>Abort</source>
-        <translation>Abbrechen</translation>
+        <translation>Annuler</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source><h2>Waypoints</h2></source>
-        <translation><h2>Wegpunkte</h2></translation>
+        <translation><h2>Waypoints</h2></translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="241"/>
@@ -156,48 +147,44 @@
         <location filename="../gis/prj/CDetailsPrj.cpp" line="273"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="338"/>
         <source>Comment</source>
-        <translation>Kommentar</translation>
+        <translation>Commentaire</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="265"/>
         <source><h2>Tracks</h2></source>
-        <translation><h2>Tracks</h2></translation>
+        <translation><h2>Traces</h2></translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
         <source><h2>Areas</h2></source>
-        <translation><h2>Flächen</h2></translation>
+        <translation><h2>Surfaces</h2></translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
+        <translation>Éditer le nom...</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Enter new project name.</source>
-        <translation>Geben Sie einen Projektnamen ein.</translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="509"/>
-        <source>Print Diary</source>
-        <translation>Tagebuch drucken</translation>
-    </message>
-    <message>
-        <source>Enter new waypoint name.</source>
-        <translation type="obsolete">Name eingeben.</translation>
+        <translation>Saisir le nom du projet.</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Edit keywords...</source>
-        <translation>Stichwörter bearbeiten...</translation>
+        <translation>Éditer les mots-clés...</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Enter keywords.</source>
-        <translation>Stichwörter eingeben.</translation>
+        <translation>Saisir les mots-clés.</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="509"/>
+        <source>Print Diary</source>
+        <translation>Imprimer le journal</translation>
     </message>
 </context>
 <context>
@@ -205,22 +192,22 @@
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
         <source>Reduce visible track points</source>
-        <translation>Sichtbare Trackpunkte reduzieren</translation>
+        <translation>Réduire les points visibles de la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
         <source>Change elevation of track points</source>
-        <translation>Höhe von Trackpunkten ändern</translation>
+        <translation>Modifier l'altitude des points de la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
         <source>Change timestamp of track points</source>
-        <translation>Zeitstempel von Trackpunkten ändern</translation>
+        <translation>Modifier l'horodatage des points de la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
         <source>Cut track into pieces</source>
-        <translation>Track in Stücke teilen</translation>
+        <translation>Découper la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
@@ -233,66 +220,32 @@
         <translation></translation>
     </message>
     <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Kommentar:</h4></translation>
-    </message>
-    <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
-    </message>
-    <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Éditer le nom...</translation>
     </message>
     <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Saisir le nouveau nom de la trace.</translation>
     </message>
 </context>
 <context>
     <name>CDetailsWpt</name>
     <message>
-        <source>no comment</source>
-        <translation type="obsolete">kein Kommentar vorhanden</translation>
-    </message>
-    <message>
-        <source>no description</source>
-        <translation type="obsolete">keine Beschreibung vorhanden</translation>
-    </message>
-    <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Kommentar:</h4></translation>
-    </message>
-    <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
-    </message>
-    <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
-    </message>
-    <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
-    </message>
-    <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
+        <translation>Éditer le nom...</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen ein.</translation>
-    </message>
-    <message>
-        <source>Enter new elevation.</source>
-        <translation type="obsolete">Geben Sie eine Höhe ein.</translation>
+        <translation>Saisir le nouveau nom du waypoint.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
         <source>Enter new proximity range.</source>
-        <translation>Geben Sie einen Abstandsalarm ein.</translation>
+        <translation>Saisir le rayon de l'alarme de proximité</translation>
     </message>
 </context>
 <context>
@@ -300,230 +253,218 @@
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
         <source>No DEM data found for that point.</source>
-        <translation>Keine Höhendaten für diesen Punkt gefunden.</translation>
+        <translation>Pas de données DEM disponibles pour ce point</translation>
     </message>
 </context>
 <context>
     <name>CGisListDB</name>
     <message>
-        <source>Lost & Found</source>
-        <translation type="obsolete">Verloren & Gefunden</translation>
-    </message>
-    <message>
-        <source>Database</source>
-        <translation type="obsolete">Datenbank</translation>
+        <location filename="../gis/CGisListDB.cpp" line="74"/>
+        <source>Add Database</source>
+        <translation>Ajouter une base de données</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="76"/>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
         <source>Add Folder</source>
-        <translation>Ordner hinzufügen</translation>
+        <translation>Ajouter un dossier</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <location filename="../gis/CGisListDB.cpp" line="78"/>
         <source>Delete Folder</source>
-        <translation>Ordner löschen</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation type="obsolete">Löschen</translation>
-    </message>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="73"/>
-        <source>Add Database</source>
-        <translation>Datenbank hinzufügen</translation>
+        <translation>Supprimer le dossier</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="80"/>
-        <location filename="../gis/CGisListDB.cpp" line="90"/>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <location filename="../gis/CGisListDB.cpp" line="91"/>
         <source>Delete Item</source>
-        <translation>Element löschen</translation>
+        <translation>Supprimer un élément</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="84"/>
+        <location filename="../gis/CGisListDB.cpp" line="85"/>
         <source>Remove Database</source>
-        <translation>Datenbank entfernen</translation>
+        <translation>Enlever la base de données</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="87"/>
+        <location filename="../gis/CGisListDB.cpp" line="88"/>
         <source>Empty</source>
-        <translation>Leer</translation>
+        <translation>Vider</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="251"/>
+        <location filename="../gis/CGisListDB.cpp" line="252"/>
         <source>Remove database...</source>
-        <translation>Datenbank entfernen...</translation>
+        <translation>Enlever la base de données</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="251"/>
+        <location filename="../gis/CGisListDB.cpp" line="252"/>
         <source>Do you realy want to remove '%1' from the list?</source>
-        <translation>Wollen Sie '%1' wirklich aus der Liste entfernen?</translation>
+        <translation>Êtes-vous sûr de vouloir enlever '%1' de la liste ?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="293"/>
         <source>Delete database folder...</source>
-        <translation>Datenbankordner löschen...</translation>
+        <translation>Supprimer la base de données...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="292"/>
+        <location filename="../gis/CGisListDB.cpp" line="293"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
-        <translation>Sind Sie sicher, dass Sie "%1" aus der Datenbank löschen wollen? </translation>
+        <translation>Êtes-vous sûr de vouloir enlever '%1' de la liste ?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="318"/>
-        <location filename="../gis/CGisListDB.cpp" line="333"/>
+        <location filename="../gis/CGisListDB.cpp" line="319"/>
+        <location filename="../gis/CGisListDB.cpp" line="334"/>
         <source>Remove items...</source>
-        <translation>Element entfernen...</translation>
+        <translation>Supprimer les éléments...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="318"/>
+        <location filename="../gis/CGisListDB.cpp" line="319"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
-        <translation>Sind Sie sicher, dass Sie alle Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaftentfernt.</translation>
+        <translation>Êtes-vous sûr de vouloir supprimer tous les éléments dans Perdu & Trouvé ? Les éléments seront supprimés définitivement.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="333"/>
+        <location filename="../gis/CGisListDB.cpp" line="334"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
-        <translation>Sind Sie sicher, dass Sie alle ausgewählten Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaft entfernt.</translation>
+        <translation>Êtes-vous sûr de vouloir supprimer les éléments sélectionnés dans Perdu & Trouvé ? Les éléments seront supprimés définitivement.</translation>
     </message>
 </context>
 <context>
     <name>CGisListWks</name>
     <message>
         <location filename="../gis/CGisListWks.cpp" line="91"/>
-        <source>Save</source>
-        <translation>Speichern</translation>
+        <source>Edit..</source>
+        <translation>Éditer..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="90"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Save As...</source>
-        <translation>Speichern unter...</translation>
+        <translation>Enregistrer sous...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="89"/>
-        <source>Edit..</source>
-        <translation>Bearbeiten..</translation>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
+        <source>Save</source>
+        <translation>Enregistrer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
-        <source>Close</source>
-        <translation>Schließen</translation>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
+        <source>Update Project on Devices</source>
+        <translation>Mettre à jour le projet sur tous les appareils</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
-        <source>Edit...</source>
-        <translation>Bearbeiten...</translation>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
+        <source>Close</source>
+        <translation>Fermer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
-        <source>Copy to...</source>
-        <translation>Kopieren nach...</translation>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <source>Update Project on Device</source>
+        <translation>Mettre à jour le projet sur l'appareil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
-        <source>Move Waypoint</source>
-        <translation>Wegpunkt verschieben</translation>
+        <location filename="../gis/CGisListWks.cpp" line="102"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
+        <source>Delete</source>
+        <translation>Supprimer</translation>
     </message>
     <message>
-        <source>Move Waypoint...</source>
-        <translation type="obsolete">Wegpunkt verschieben...</translation>
+        <location filename="../gis/CGisListWks.cpp" line="113"/>
+        <source>Edit...</source>
+        <translation>Éditer..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
-        <source>Proj. Waypoint...</source>
-        <translation>Wegpunkt Projektion...</translation>
+        <location filename="../gis/CGisListWks.cpp" line="114"/>
+        <source>Copy to...</source>
+        <translation>Copier vers...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="115"/>
         <source>Track Profile</source>
-        <translation>Trackprofil</translation>
+        <translation>Profile de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="103"/>
+        <location filename="../gis/CGisListWks.cpp" line="117"/>
         <source>Select Range</source>
-        <translation>Bereich wählen</translation>
+        <translation>Sélectionner des points</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
         <source>Edit Track Points</source>
-        <translation>Trackpunkte bearbeiten</translation>
+        <translation>Éditer les points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
         <source>Reverse Track</source>
-        <translation>Track umkehren</translation>
+        <translation>Inverser la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
+        <location filename="../gis/CGisListWks.cpp" line="120"/>
         <source>Combine Tracks</source>
-        <translation>Tracks verbinden</translation>
+        <translation>Joindre des traces</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
-        <source>Edit Area Points</source>
-        <translation>Flächenpunkte bearbeiten</translation>
+        <location filename="../gis/CGisListWks.cpp" line="126"/>
+        <source>Move Waypoint</source>
+        <translation>Déplacer le waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="93"/>
-        <location filename="../gis/CGisListWks.cpp" line="107"/>
-        <source>Delete</source>
-        <translation>Löschen</translation>
+        <location filename="../gis/CGisListWks.cpp" line="127"/>
+        <source>Proj. Waypoint...</source>
+        <translation>Projection du waypoint...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
+        <source>Edit Area Points</source>
+        <translation>Éditer les points de la surface</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="657"/>
+        <location filename="../gis/CGisListWks.cpp" line="673"/>
         <source>Saving workspace. Please wait.</source>
-        <translation>Ansicht speichern. Bitte warten.</translation>
+        <translation>Sauvegarde de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="698"/>
+        <location filename="../gis/CGisListWks.cpp" line="714"/>
         <source>Loading workspace. Please wait.</source>
-        <translation>Ansicht laden. Bitte warten.</translation>
+        <translation>Chargement de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1135"/>
+        <location filename="../gis/CGisListWks.cpp" line="1163"/>
         <source>Close all projects...</source>
-        <translation>Alle Projkete schließen...</translation>
+        <translation>Fermer tous les projets...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1135"/>
+        <location filename="../gis/CGisListWks.cpp" line="1163"/>
         <source>This will remove all projects from the workspace.</source>
-        <translation>Dies wird alle Projekte aus der Ansicht entfernen.</translation>
-    </message>
-    <message>
-        <source>Add Empty Project</source>
-        <translation type="obsolete">Leeres Projekt hinzufügen</translation>
+        <translation>Ceci enlevera tous les projets de l'espace de travail.</translation>
     </message>
     <message>
-        <source>New Project</source>
-        <translation type="obsolete">Neues Projekt</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1215"/>
+        <location filename="../gis/CGisListWks.cpp" line="1253"/>
+        <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
+        <translation><b>Mise à jour des appareils</b><p>Mise à jour de %1<br/>Patientez...</p></translation>
     </message>
 </context>
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="382"/>
+        <location filename="../gis/CGisWidget.cpp" line="381"/>
         <source>Cut Track...</source>
-        <translation>Track teilen...</translation>
+        <translation>Couper la trace...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="382"/>
+        <location filename="../gis/CGisWidget.cpp" line="381"/>
         <source>Do you want to delete the original track?</source>
-        <translation>Wollen Sie den ursprünglichen Track löschen?</translation>
+        <translation>Voulez-vous garder la trace originale ?</translation>
     </message>
 </context>
 <context>
     <name>CGrid</name>
     <message>
-        <source>[Grid: %1] </source>
-        <translation type="obsolete">[Gitter: %1]</translation>
-    </message>
-    <message>
         <location filename="../grid/CGrid.cpp" line="61"/>
         <source>[Grid: %1%2%5 %3%4%5] </source>
-        <translation>[Gitter: %1%2%5 %3%4%5] </translation>
+        <translation>[Grille : %1%2%5 %3%4%5]</translation>
     </message>
     <message>
         <location filename="../grid/CGrid.cpp" line="65"/>
         <source>[Grid: N %1m, E %2m] </source>
-        <translation>[Gitter: N %1m, E %2m]</translation>
+        <translation>[Grille : N %1m, E %2m]</translation>
     </message>
 </context>
 <context>
@@ -531,7 +472,7 @@
     <message>
         <location filename="../helpers/CHistoryListWidget.cpp" line="33"/>
         <source>Cut history</source>
-        <translation>Historie kürzen</translation>
+        <translation>Tronquer l'historique</translation>
     </message>
 </context>
 <context>
@@ -539,38 +480,30 @@
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="29"/>
         <source>Import QLandkarte Database</source>
-        <translation>QLandkarte Datenbank importieren</translation>
+        <translation>Importer une base de données QLandkarte</translation>
     </message>
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="73"/>
         <source>Select source database...</source>
-        <translation>Quelldatenbank wählen...</translation>
+        <translation>Choisissez la base de données à importer...</translation>
     </message>
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="93"/>
         <source>Select target database...</source>
-        <translation>Zieldatenbank wählen...</translation>
-    </message>
-    <message>
-        <source>Select source databse...</source>
-        <translation type="obsolete">Quelldatenbank wählen...</translation>
-    </message>
-    <message>
-        <source>Select target databse...</source>
-        <translation type="obsolete">Zieldatenbank wählen...</translation>
+        <translation>Choisissez la base de données cible...</translation>
     </message>
 </context>
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="440"/>
+        <location filename="../CMainWindow.cpp" line="461"/>
         <source>Ele: %1%2</source>
-        <translation>Höhe: %1%2</translation>
+        <translation>Altitude: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="559"/>
+        <location filename="../CMainWindow.cpp" line="587"/>
         <source>Load GIS Data...</source>
-        <translation>GIS Daten laden...</translation>
+        <translation>Charger des données SIG...</translation>
     </message>
 </context>
 <context>
@@ -578,17 +511,17 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="151"/>
         <source>Failed ...</source>
-        <translation>Fehlgeschlagen...</translation>
+        <translation>Échec...</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Unspecified</source>
-        <translation>Nicht angegeben</translation>
+        <translation>Non défini</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>French</source>
-        <translation>Französisch</translation>
+        <translation>Français</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="168"/>
@@ -598,449 +531,448 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Dutch</source>
-        <translation>Niederländisch</translation>
+        <translation>Néerlandais</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>English</source>
-        <translation>Englisch</translation>
+        <translation>Anglais</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Italian</source>
-        <translation>Italienisch</translation>
+        <translation>Italien</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Finnish</source>
-        <translation>Finnisch</translation>
+        <translation>Finlandais</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Swedish</source>
-        <translation>Schwedisch</translation>
+        <translation>Suédois</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Spanish</source>
-        <translation>Spanisch</translation>
+        <translation>Espagnol</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Basque</source>
-        <translation>Baskisch</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Catalan</source>
-        <translation>Catalanisch</translation>
+        <translation>Catalan</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Galician</source>
-        <translation>Galizisch</translation>
+        <translation>Galicien</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Welsh</source>
-        <translation>Walisisch</translation>
+        <translation>Gallois</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Gaelic</source>
-        <translation>Gälisch</translation>
+        <translation>Gaëlic</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Danish</source>
-        <translation>Dänisch</translation>
+        <translation>Danois</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Norwegian</source>
-        <translation>Norwegisch</translation>
+        <translation>Norvégien</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Portuguese</source>
-        <translation>Portugiesisch</translation>
+        <translation>Portugais</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Slovak</source>
-        <translation>Slovakisch</translation>
+        <translation>Slovaque</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Czech</source>
-        <translation>Tschechisch</translation>
+        <translation>Tchèque</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Croatian</source>
-        <translation>Kroatisch</translation>
+        <translation>Croate</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Hungarian</source>
-        <translation>Ungarisch</translation>
+        <translation>Hongrois</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Polish</source>
-        <translation>Polnisch</translation>
+        <translation>Polonais</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Turkish</source>
-        <translation>Türkisch</translation>
+        <translation>Turque</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Greek</source>
-        <translation>Griechisch</translation>
+        <translation>Grèc</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Slovenian</source>
-        <translation>Slowenisch</translation>
+        <translation>Slovène</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="191"/>
         <source>Russian</source>
-        <translation>Russisch</translation>
+        <translation>Russe</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="192"/>
         <source>Estonian</source>
-        <translation>Estnisch</translation>
+        <translation>Estonien</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="193"/>
         <source>Latvian</source>
-        <translation>Lettisch</translation>
+        <translation>Letton</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="194"/>
         <source>Romanian</source>
-        <translation>Rumänisch</translation>
+        <translation>Roumain</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="195"/>
         <source>Albanian</source>
-        <translatorcomment>Albanisch</translatorcomment>
-        <translation>Albanisch</translation>
+        <translation>Albanais</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="196"/>
         <source>Bosnian</source>
-        <translation>Bosnisch</translation>
+        <translation>Bosnien</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="197"/>
         <source>Lithuanian</source>
-        <translation>Litauisch</translation>
+        <translation>Lituanien</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="198"/>
         <source>Serbian</source>
-        <translation>Serbisch</translation>
+        <translation>Serbe</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="199"/>
         <source>Macedonian</source>
-        <translation>Makedonisch</translation>
+        <translation>Macédonien</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="200"/>
         <source>Bulgarian</source>
-        <translation>Bulgarisch</translation>
+        <translation>Bulgare</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway</source>
-        <translation></translation>
+        <translation>Route majeure</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Principal highway</source>
-        <translation></translation>
+        <translation>Route principale</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Other highway</source>
-        <translation></translation>
+        <translation>Autre route</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Arterial road</source>
-        <translation></translation>
+        <translation>Artère urbaine</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Collector road</source>
-        <translation></translation>
+        <translation>Rue principale</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Residential street</source>
-        <translation></translation>
+        <translation>Rue résidentielle</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Alley/Private road</source>
-        <translation></translation>
+        <translation>Ruelle/Route privée</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="264"/>
         <source>Highway ramp, low speed</source>
-        <translation></translation>
+        <translation>Bretelle d'accès, basse vitesse</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Highway ramp, high speed</source>
-        <translation></translation>
+        <translation>Bretelle d'accès, grande vitesse</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>Unpaved road</source>
-        <translation></translation>
+        <translation>Route non bitumé</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>Major highway connector</source>
-        <translation></translation>
+        <translation>Bretelle majeure</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>Roundabout</source>
-        <translation>Kreisverkehr</translation>
+        <translation>Rond-point</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>Railroad</source>
-        <translation>Eisenbahn</translation>
+        <translation>Voie ferrée</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Shoreline</source>
-        <translation>Küstenlinie</translation>
+        <translation>Ligne côtière</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Trail</source>
-        <translation></translation>
+        <translation>Sentier</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Stream</source>
-        <translation></translation>
+        <translation>Ruisseau</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Time zone</source>
-        <translation>Zeitzone</translation>
+        <translation>Fuseau horaire</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="274"/>
         <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Ferry</source>
-        <translation>Fähre</translation>
+        <translation>Bac</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>State/province border</source>
-        <translation></translation>
+        <translation>Frontière de province</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="277"/>
         <source>County/parish border</source>
-        <translation></translation>
+        <translation>Frontière de canton</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>International border</source>
-        <translation></translation>
+        <translation>Frontière internationale</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>River</source>
-        <translation>Fluss</translation>
+        <translation>Rivière</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Minor land contour</source>
-        <translation>Höhenlinie klein</translation>
+        <translation>Courbe de niveau mineure</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Intermediate land contour</source>
-        <translation>Höhenlinie mittel</translation>
+        <translation>Courbe de niveau intermédiaire</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="282"/>
         <source>Major land contour</source>
-        <translation>Höhenlinie groß</translation>
+        <translation>Courbe de niveau majeure</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="283"/>
         <source>Minor depth contour</source>
-        <translation>Tiefenlinie klein</translation>
+        <translation>Courbe isobathe mineure</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="284"/>
         <source>Intermediate depth contour</source>
-        <translation>Tiefenlinie mittel</translation>
+        <translation>Courbe isobathe intermédiaire</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="285"/>
         <source>Major depth contour</source>
-        <translation>Tiefenlinie groß</translation>
+        <translation>Courbe isobathe majeure</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="286"/>
         <source>Intermittent stream</source>
-        <translation></translation>
+        <translation>Ruisseau intermittent</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="287"/>
         <location filename="../map/CMapIMG.cpp" line="369"/>
         <source>Airport runway</source>
-        <translation>Landebahn</translation>
+        <translation>Tarmac</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="288"/>
         <source>Pipeline</source>
-        <translation></translation>
+        <translation>Oléoduc</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="289"/>
         <source>Powerline</source>
-        <translation></translation>
+        <translation>Ligne à haute tension</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="290"/>
         <source>Marine boundary</source>
-        <translation></translation>
+        <translation>Frontière maritime</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="291"/>
         <source>Hazard boundary</source>
-        <translation></translation>
+        <translation>Limite de zone à risque</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Large urban area (&gt;200K)</source>
-        <translation></translation>
+        <translation>Grande agglomération urbaine (&gt;200K)</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Small urban area (&lt;200K)</source>
-        <translation></translation>
+        <translation>Petite agglomération urbaine (&lt;200K)</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Rural housing area</source>
-        <translation></translation>
+        <translation>Zone résidentielle rurale</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Military base</source>
-        <translation>Militärbasis</translation>
+        <translation>Base militaire</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Parking lot</source>
-        <translation>Parkplatz</translation>
+        <translation>Parking</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Parking garage</source>
-        <translation>Parkhaus</translation>
+        <translation>Parking couvert</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Airport</source>
-        <translation>Flugplatz</translation>
+        <translation>Aéroport</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Shopping center</source>
-        <translation>Einkaufszentrum</translation>
+        <translation>Centre commercial</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="364"/>
         <source>Marina</source>
-        <translation></translation>
+        <translation>Marina</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="365"/>
         <source>University/College</source>
-        <translation>Universität/Hochschule</translation>
+        <translation>Université</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>Hospital</source>
-        <translation>Krankenhaus</translation>
+        <translation>Hôpital</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>Industrial complex</source>
-        <translation>Industrie</translation>
+        <translation>Complexe industriel</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="368"/>
         <source>Reservation</source>
-        <translation>Schutzgebiet</translation>
+        <translation>Reserve naturelle</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>Man-made area</source>
-        <translation>Fabrikgelände</translation>
+        <translation>Zone industrielle</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Sports complex</source>
-        <translation>Sportanlage</translation>
+        <translation>Complexe sportif</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Golf course</source>
-        <translation>Golfplatz</translation>
+        <translation>Golf</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="373"/>
         <source>Cemetery</source>
-        <translation>Friedhof</translation>
+        <translation>Cimetière</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="374"/>
         <location filename="../map/CMapIMG.cpp" line="375"/>
         <location filename="../map/CMapIMG.cpp" line="376"/>
         <source>National park</source>
-        <translation>Nationalpark</translation>
+        <translation>Parc national</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="377"/>
         <source>City park</source>
-        <translation>Stadtpark</translation>
+        <translation>Parc urbain</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="378"/>
         <location filename="../map/CMapIMG.cpp" line="379"/>
         <location filename="../map/CMapIMG.cpp" line="380"/>
         <source>State park</source>
-        <translation></translation>
+        <translation>Parc régional</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Forest</source>
-        <translation>Wald</translation>
+        <translation>Forêt</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="382"/>
         <source>Ocean</source>
-        <translation>Ozean</translation>
+        <translation>Océan</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="383"/>
@@ -1052,77 +984,77 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Sea</source>
-        <translation>Meer</translation>
+        <translation>Mer</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="386"/>
         <location filename="../map/CMapIMG.cpp" line="387"/>
         <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Large lake</source>
-        <translation></translation>
+        <translation>Grand lac</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="388"/>
         <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Medium lake</source>
-        <translation></translation>
+        <translation>Lac moyen</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="390"/>
         <location filename="../map/CMapIMG.cpp" line="391"/>
         <source>Small lake</source>
-        <translation></translation>
+        <translation>Petit lac</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="392"/>
         <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Major lake</source>
-        <translation></translation>
+        <translation>Lac majeur</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Major River</source>
-        <translation></translation>
+        <translation>Rivière majeure</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Large River</source>
-        <translation></translation>
+        <translation>Grande rivière</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Medium River</source>
-        <translation></translation>
+        <translation>Rivière moyenne</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>Small River</source>
-        <translation></translation>
+        <translation>Petite rivière</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="402"/>
         <source>Intermittent water</source>
-        <translation></translation>
+        <translation>Cours d'eau intermittent</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="403"/>
         <source>Wetland/Swamp</source>
-        <translation>Feuchtgebiet/Sumpf</translation>
+        <translation>Marais</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="404"/>
         <source>Glacier</source>
-        <translation>Gletscher</translation>
+        <translation>Glacier</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="405"/>
         <source>Orchard/Plantation</source>
-        <translation>Obstgarten/Plantage</translation>
+        <translation>Verger</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="406"/>
         <source>Scrub</source>
-        <translation>Buschwerk</translation>
+        <translation>Broussaille</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="407"/>
@@ -1132,7 +1064,7 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="408"/>
         <source>Flat</source>
-        <translation>Ebene</translation>
+        <translation>Plaine</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="409"/>
@@ -1142,43 +1074,43 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="445"/>
         <source>Failed to read: </source>
-        <translation>Lesen fehlgeschlagen:</translation>
+        <translation>Erreur de lecture : </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="488"/>
         <source>Failed to open: </source>
-        <translation>Öffnen fehlgeschlagen:</translation>
+        <translation>Échec d'ouverture : </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="512"/>
         <location filename="../map/CMapIMG.cpp" line="516"/>
         <source>Bad file format: </source>
-        <translation>Falsches Format:</translation>
+        <translation>Format de fichier invalide : </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="605"/>
         <source>Failed to read file structure: </source>
-        <translation>Lesen der Dateistruktur fehlgeschlagen:</translation>
+        <translation>Erreur de lecture de la structure du fichier : </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="638"/>
         <source>Loading %1</source>
-        <translation>Lädt %1</translation>
+        <translation>Chargement de %1</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="643"/>
         <source>User abort: </source>
-        <translation>Benutzerabbruch:</translation>
+        <translation>Interruption par l'utilisateur : </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="646"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
-        <translation>Die Datei hat das NT Format. QMapShack kann dieses Format nicht lesen:</translation>
+        <translation>Le fichier est au format NT. QMapShack ne peut pas lire des fichiers au format NT : </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="738"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
-        <translation>Die Datei enthält verschlüsselte Daten. Garmin möchte nicht dass diese Datei mit einer anderen Software, als der von Garmin bereitgestellten, benützt wird.</translation>
+        <translation>Le fichier contient des données verrouillées / cryptées. Garmin ne vous autorise pas d'utiliser ce fichier avec un logiciel non fourni par Garmin.</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="2467"/>
@@ -1190,19 +1122,19 @@
         <location filename="../map/CMapIMG.cpp" line="2542"/>
         <location filename="../map/CMapIMG.cpp" line="2547"/>
         <source>Point of Interest</source>
-        <translation>Ort von Interesse</translation>
+        <translation>Point d'intérêt</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="2674"/>
         <source>Unknown</source>
-        <translation>Unbekannt</translation>
+        <translation>Inconnu</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="2720"/>
         <location filename="../map/CMapIMG.cpp" line="2728"/>
         <location filename="../map/CMapIMG.cpp" line="2735"/>
         <source>Area</source>
-        <translation>Gebiet</translation>
+        <translation>Surface</translation>
     </message>
 </context>
 <context>
@@ -1210,158 +1142,182 @@
     <message>
         <location filename="../map/CMapList.cpp" line="150"/>
         <source>Deactivate</source>
-        <translation>Deaktivieren</translation>
+        <translation>Désactiver</translation>
     </message>
     <message>
         <location filename="../map/CMapList.cpp" line="150"/>
         <source>Activate</source>
-        <translation>Aktivieren</translation>
+        <translation>Activer</translation>
     </message>
 </context>
 <context>
     <name>CMapMAP</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="45"/>
+        <location filename="../map/CMapMAP.cpp" line="46"/>
         <source>Failed ...</source>
-        <translation>Fehlgeschlagen...</translation>
+        <translation>Échec...</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="62"/>
+        <location filename="../map/CMapMAP.cpp" line="63"/>
         <source>Failed to open: </source>
-        <translation>Öffnen fehlgeschlagen: </translation>
+        <translation>Échec d'ouverture : </translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="72"/>
+        <location filename="../map/CMapMAP.cpp" line="73"/>
         <source>Bad file format: </source>
-        <translation>Falsches Dateiformat: </translation>
+        <translation>Format de fichier invalide : </translation>
     </message>
 </context>
 <context>
     <name>CMapPathSetup</name>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="39"/>
+        <location filename="../map/CMapPathSetup.cpp" line="45"/>
         <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <translation>Hinzufügen oder Entfernen von Karten. In einem Verzeichnis können mehrere Karten liegen. Unterverzeichnisse werden jedoch nicht durchsucht. Unterstützte Formate sind: %1 </translation>
+        <translation>Ajoutez ou retirez des répertoires qui contiennent des cartes. Il peut y avoir plusieurs cartes dans un répertoire mais les sous-répertoires ne sont pas prises en compte. Les formats acceptés sont : %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="54"/>
+        <location filename="../map/CMapPathSetup.cpp" line="60"/>
         <source>Select map path...</source>
-        <translation>Kartenpfad wählen...</translation>
+        <translation>Choisissez un répertoire...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapPathSetup.cpp" line="76"/>
+        <source>Select root path...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CMapPropSetup</name>
     <message>
-        <location filename="../map/CMapPropSetup.cpp" line="147"/>
         <source>Cache path...</source>
-        <translation>Cache Pfad...</translation>
+        <translation type="vanished">Répertoire de cache...</translation>
     </message>
 </context>
 <context>
     <name>CMapRMAP</name>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="47"/>
-        <location filename="../map/CMapRMAP.cpp" line="56"/>
-        <location filename="../map/CMapRMAP.cpp" line="126"/>
-        <location filename="../map/CMapRMAP.cpp" line="143"/>
-        <location filename="../map/CMapRMAP.cpp" line="164"/>
-        <location filename="../map/CMapRMAP.cpp" line="186"/>
-        <location filename="../map/CMapRMAP.cpp" line="208"/>
-        <location filename="../map/CMapRMAP.cpp" line="236"/>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
         <source>Error...</source>
-        <translation>Fehler...</translation>
+        <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="47"/>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
         <source>This is not a TwoNav RMAP file.</source>
-        <translation>Das ist keine bekannte TwoNav RMAP Datei.</translation>
+        <translation>Ceci n'est pas un fichier TwoNav RMAP.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="56"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
         <source>Unknown sub-format.</source>
-        <translation>Unbekanntes Unterformat.</translation>
+        <translation>Sous-format inconnu.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="126"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
         <source>Unknown version.</source>
-        <translation>Unbekannte Version.</translation>
+        <translation>Version inconnue.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="143"/>
-        <location filename="../map/CMapRMAP.cpp" line="164"/>
-        <location filename="../map/CMapRMAP.cpp" line="186"/>
-        <location filename="../map/CMapRMAP.cpp" line="208"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
         <source>Failed to read reference point.</source>
-        <translation>Referenzpunkte konnten nicht gelesen werden.</translation>
+        <translation>Impossible de lire les points de référence.</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="236"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
         <source>Unknown projection and datum (%1%2).</source>
-        <translation>Unbekannte Projektion und Datum (%1%2).</translation>
+        <translation>Projection et date inconnus (%1%2).</translation>
     </message>
 </context>
 <context>
     <name>CMapTMS</name>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="69"/>
-        <location filename="../map/CMapTMS.cpp" line="79"/>
+        <location filename="../map/CMapTMS.cpp" line="70"/>
+        <location filename="../map/CMapTMS.cpp" line="80"/>
         <source>Error...</source>
-        <translation>Fehler...</translation>
+        <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="69"/>
+        <location filename="../map/CMapTMS.cpp" line="70"/>
         <source>Failed to open %1</source>
-        <translation>Öffnen fehlgeschlagen: %1</translation>
+        <translation>Impossible d'ouvrir : </translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="79"/>
+        <location filename="../map/CMapTMS.cpp" line="80"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation>Lesen fehlgeschlagen: %1
-Zeile %2, Spalte %3:
+        <translation>Impossible de lire: %1
+ligne %2, colonne %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="117"/>
+        <location filename="../map/CMapTMS.cpp" line="118"/>
         <source>Layer %1</source>
-        <translation></translation>
+        <translation>Calque %1</translation>
     </message>
     <message>
-        <source>--- All ---</source>
-        <translation type="obsolete">--- Alle ---</translation>
-    </message>
-    <message>
-        <location filename="../map/CMapTMS.cpp" line="288"/>
+        <location filename="../map/CMapTMS.cpp" line="289"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation><b>%1</b>: %2 unerledigte Kacheln<br/></translation>
+        <translation><b>%1</b>: %2 tuiles à charger<br/></translation>
     </message>
 </context>
 <context>
     <name>CMapVRT</name>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="46"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="88"/>
-        <location filename="../map/CMapVRT.cpp" line="123"/>
+        <location filename="../map/CMapVRT.cpp" line="47"/>
+        <location filename="../map/CMapVRT.cpp" line="61"/>
+        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="124"/>
         <source>Error...</source>
-        <translation>Fehler...</translation>
+        <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="46"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
+        <location filename="../map/CMapVRT.cpp" line="47"/>
+        <location filename="../map/CMapVRT.cpp" line="61"/>
         <source>Failed to load file: %1</source>
-        <translation>Die Datei konnte nicht geladen werden: %1</translation>
+        <translation>Impossible de charger le fichier: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="88"/>
+        <location filename="../map/CMapVRT.cpp" line="89"/>
         <source>File must be 8 bit palette or gray indexed.</source>
-        <translation>Die Datei muss eine 8 bit Palette haben, oder Graustufen.</translation>
+        <translation>Le fichier doit avoir une palette à 8 bits ou être en niveaux de gris.</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="123"/>
+        <location filename="../map/CMapVRT.cpp" line="124"/>
         <source>No georeference information found.</source>
-        <translation>Keine Georeferenzierung gefunden.</translation>
+        <translation>Aucune information de géoréférencement trouvé</translation>
+    </message>
+</context>
+<context>
+    <name>CMapVrtBuilder</name>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="29"/>
+        <source>Build GDAL VRT</source>
+        <translation>Générer le VRT GDAL</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="51"/>
+        <source>Select files...</source>
+        <translation>Sélectionnez les fichiers...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="75"/>
+        <source>Select target file...</source>
+        <translation>Sélectionnez le fichier à créer...</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapVrtBuilder.cpp" line="196"/>
+        <source>!!! failed !!!
+</source>
+        <translation>!!! échec !!!</translation>
     </message>
 </context>
 <context>
@@ -1373,55 +1329,43 @@ Zeile %2, Spalte %3:
         <location filename="../map/CMapWMTS.cpp" line="74"/>
         <location filename="../map/CMapWMTS.cpp" line="198"/>
         <source>Error...</source>
-        <translation>Fehler...</translation>
+        <translation>Erreur...</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="45"/>
         <source>Failed to open %1</source>
-        <translation>Öffnen fehlgeschlagen: %1</translation>
+        <translation>Impossible d'ouvrir %1</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="55"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation>Lesen fehlgeschlagen: %1
-Zeile %2, Spalte %3:
+        <translation>Impossible de lire: %1
+ligne %2, colonne %3:
 %4</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="65"/>
         <source>Failed to read: %1
 Unknown structure.</source>
-        <translation>Lesen fehlgeschlagen: %1
-Unbekannte Struktur.</translation>
+        <translation>Impossible de lire: %1
+Structure inconnue.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="74"/>
         <source>Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation>Unerwarteter Dienst. '* WMTS 1.0.0' wird erwartet. '%1 %2' wurde gelesen.</translation>
+        <translation>Service inconnu. 'Attendu : * WMTS 1.0.0', lu :  '%1 %2.</translation>
     </message>
     <message>
-        <source>--- All ---</source>
-        <translation type="obsolete">--- Alle ---</translation>
+        <location filename="../map/CMapWMTS.cpp" line="198"/>
+        <source>No georeference information found.</source>
+        <translation>Aucune information de géoréférencement trouvé</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="384"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation><b>%1</b>: %2 unerledigte Kacheln</translation>
-    </message>
-    <message>
-        <source>%1: %2 tiles pending</source>
-        <translation type="obsolete">%1: %2 unerledigte Kacheln</translation>
-    </message>
-    <message>
-        <source>Unexpexted service. 'OGC WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="obsolete">Unerwarterter Dienst. 'OGC WMTS 1.0.0' Wird erwartet. '%1 %2' wird gelesen.</translation>
-    </message>
-    <message>
-        <location filename="../map/CMapWMTS.cpp" line="198"/>
-        <source>No georeference information found.</source>
-        <translation>Keine Georeferenzierung gefunden.</translation>
+        <translation><b>%1</b>: %2 tuiles à charger<br/></translation>
     </message>
 </context>
 <context>
@@ -1429,34 +1373,15 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="38"/>
         <source><b>Edit Area</b><br/>Select a corner point for more options.<br/></source>
-        <translation><b>Fläche bearbeiten</b><br/>Wähle einen Eckpunkt für mehr Optionen.<br/></translation>
-    </message>
-</context>
-<context>
-    <name>CMouseEditLine</name>
-    <message>
-        <source>Add points?</source>
-        <translation type="obsolete">Punkte hinzufügen?</translation>
-    </message>
-    <message>
-        <source>Add points to temporary line?</source>
-        <translation type="obsolete">Punkte zur temporären Linie hinzufügen?</translation>
-    </message>
-    <message>
-        <source>Warning!</source>
-        <translation type="obsolete">Warnung!</translation>
-    </message>
-    <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="obsolete">Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
+        <translation><b>Éditez la surface</b><br/>Sélectionnez un point d'angle pour voir plus d'options.</translation>
     </message>
 </context>
 <context>
     <name>CMouseEditTrk</name>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="46"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="47"/>
         <source><b>Edit Track Points</b><br/>Select a track point for more options.<br/></source>
-        <translation><b>Trackpunkte bearbeiten</b><br/>Wähle einen Trackpunkt für mehr Optionen.<br/></translation>
+        <translation><b>Éditer les points de la trace</b><br/>Sélectionner un point de la trace pour voir plus d'options.<br/></translation>
     </message>
 </context>
 <context>
@@ -1464,22 +1389,22 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="42"/>
         <source>Add Waypoint</source>
-        <translation>Wegpunkt hinzufügen</translation>
+        <translation>Ajouter un waypoint</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="43"/>
         <source>Add Track</source>
-        <translation>Track hinzufügen</translation>
+        <translation>Ajouter une trace</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="44"/>
         <source>Add Area</source>
-        <translation>Fläche hinzufügen</translation>
+        <translation>Ajouter une surface</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="46"/>
         <source>Copy position</source>
-        <translation>Position kopieren</translation>
+        <translation>Copier la position</translation>
     </message>
 </context>
 <context>
@@ -1487,15 +1412,15 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../mouse/CMouseRangeTrk.cpp" line="48"/>
         <source><b>Select Range</b><br/>Select first track point. And then a second one.<br/></source>
-        <translation><b>Bereich wählen</b><br/>Wählen Sie einen ersten Punkt. Dann einen zweiten.<br/></translation>
+        <translation><b>Sélectionner une séquence de points</b><br/>Sélectionner le premier point, puis un deuxième.</translation>
     </message>
 </context>
 <context>
     <name>CPhotoAlbum</name>
     <message>
-        <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
+        <location filename="../helpers/CPhotoAlbum.cpp" line="69"/>
         <source>Select images...</source>
-        <translation>Bilder wählen...</translation>
+        <translation>Sélectionner les images...</translation>
     </message>
 </context>
 <context>
@@ -1503,21 +1428,17 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="53"/>
         <source>distance [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="57"/>
         <source>time</source>
-        <translation>Uhrzeit</translation>
-    </message>
-    <message>
-        <source>time [h]</source>
-        <translation type="obsolete">Uhrzeit</translation>
+        <translation>durée</translation>
     </message>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="59"/>
         <source>distance. [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -1525,17 +1446,17 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../plot/CPlotProfile.cpp" line="63"/>
         <source>distance [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../plot/CPlotProfile.cpp" line="67"/>
         <source>time [h]</source>
-        <translation>Zeit [h]</translation>
+        <translation>durée [h]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotProfile.cpp" line="69"/>
         <source>alt. [%1]</source>
-        <translation>Höhe [%1]</translation>
+        <translation>Alt. [%1]</translation>
     </message>
 </context>
 <context>
@@ -1543,45 +1464,45 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../plot/CPlotSpeed.cpp" line="52"/>
         <source>distance [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../plot/CPlotSpeed.cpp" line="56"/>
         <source>time [h]</source>
-        <translation>Zeit [h]</translation>
+        <translation>durée [h]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotSpeed.cpp" line="58"/>
         <source>speed. [%1]</source>
-        <translation>Geschwindigkeit [%1]</translation>
+        <translation>vitesse [%1]</translation>
     </message>
 </context>
 <context>
     <name>CProjWizard</name>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="55"/>
+        <location filename="../grid/CProjWizard.cpp" line="57"/>
         <source>north</source>
-        <translation>Norden</translation>
+        <translation>nord</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="56"/>
+        <location filename="../grid/CProjWizard.cpp" line="58"/>
         <source>south</source>
-        <translation>Süden</translation>
+        <translation>sud</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="213"/>
+        <location filename="../grid/CProjWizard.cpp" line="215"/>
         <source>Error...</source>
-        <translation>Fehler...</translation>
+        <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="213"/>
+        <location filename="../grid/CProjWizard.cpp" line="215"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
 %2</source>
-        <translation>Die Eingabe:
+        <translation>La valeur
 '%1'
-ist keine gültige Koordinatensystemdefinition:
+n'est pas une définition de système de coordonnées:
 %2</translation>
     </message>
 </context>
@@ -1590,12 +1511,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
+        <translation>Éditer le nom...</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen ein.</translation>
+        <translation>Saisir le nouveau nom du waypoint.</translation>
     </message>
 </context>
 <context>
@@ -1603,150 +1524,146 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="304"/>
         <source>Migrating database from version 4 to 5.</source>
-        <translation>Datenbank von Version 4 nach 5 migrieren.</translation>
+        <translation>Migration de la base de données de version 4 en version 5.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="357"/>
         <source>Migrating database from version 5 to 6.</source>
-        <translation>Datenbank von Version 5 nach 6 migrieren.</translation>
+        <translation>Migration de la base de données de version 5 en version 6.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="414"/>
         <source>Migrating database from version 6 to 7.</source>
-        <translation>Datenbank von Version 6 nach 7 migrieren.</translation>
+        <translation>Migration de la base de données de version 6 en version 7.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="480"/>
         <source>Migrating database from version 7 to 8.</source>
-        <translation>Datenbank von Version 7 nach 8 migrieren.</translation>
+        <translation>Migration de la base de données de version 7 en version 8.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="509"/>
         <source>Migrating database from version 8 to 9.</source>
-        <translation>Datenbank von Version 8 nach 9 migrieren.</translation>
+        <translation>Migration de la base de données de version 8 en version 9.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="532"/>
         <source>Open database: %1</source>
-        <translation>Öffne Datenbank: %1</translation>
+        <translation>Ouvrir la base de données: %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="541"/>
         <source>Folders:          %1</source>
-        <translation>Ordner: %1</translation>
+        <translation>Répertoires: %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="550"/>
         <source>Tracks:           %1</source>
-        <translation>Tracks: %1</translation>
-    </message>
-    <message>
-        <source>Routes:           %1 (not supported yet)</source>
-        <translation type="obsolete">Routen: %1 (noch nicht unterstützt)</translation>
+        <translation>Traces: %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="558"/>
         <source>Routes:           %1 (Only the basic route will be copied)</source>
-        <translation>Routen:           %1 (Es wird nur die BAsisroute kopiert)</translation>
+        <translation>Routes:           %1 (seulement la route de base sera copiée)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="566"/>
         <source>Waypoints:        %1</source>
-        <translation>Wegpunkte: %1</translation>
+        <translation>Waypoints:        %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
         <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
-        <translation>Overlays:         %1 (Es werden nur Flächenoverlays nach QMapShack konvertiert)</translation>
+        <translation>Overlays:         %1 (Seulements les overlays de type surface seront convertis vers QMapShack)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="581"/>
         <source>Diaries:          %1</source>
-        <translation>Tagebücher:          %1</translation>
+        <translation>Journaux:          %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="588"/>
         <source>Map selections:   %1 (can't be converted to QMapShack)</source>
-        <translation>Kartenselektionen:   %1 (können nicht nach QMapShack konvertiert werden)</translation>
+        <translation>Sélections de carte:   %1 (ne peuvent pas être convertis)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
         <source>------ Start to convert database to %1------</source>
-        <translation>------ Konvertierung der Datenbank %1 beginnt ------</translation>
+        <translation>------ La conversion de base de donnée vers %1 commence ------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="598"/>
         <source>Failed to create target database.</source>
-        <translation>Erstellen der Zieldatenbank fehlgeschlagen.</translation>
+        <translation>Erreur lors de la création de la base de données cible.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="599"/>
         <source>------ Abort ------</source>
-        <translation>------ Abbrechen ------</translation>
+        <translation>------ Annuler ------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="627"/>
         <source>------ Done ------</source>
-        <translation>------ Fertig ------</translation>
+        <translation>------ Terminé ------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
         <source>Restore folders...</source>
-        <translation>Ordner wiederherstellen...</translation>
+        <translation>Restaurer ls dossiers...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
         <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Abort</source>
-        <translation>Abbrechen</translation>
+        <translation>Annuler</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="662"/>
         <source>Imported %1 folders and %2 diaries</source>
-        <translation>Importiert wurden %1 Ordner und %2 Tagebücher</translation>
+        <translation>%1 dossiers et %2 journaux ont été importés</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Copy items...</source>
-        <translation>Elemente kopieren...</translation>
+        <translation>Copier les éléments...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="692"/>
         <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
-        <translation>Importiert wurden %1 Tracks, %2 Wegpunkte, %3 Routen, %4 Flächen</translation>
+        <translation>%1 traces, %2 waypoints, %3 routes et %4 surfaces ont été importés</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="693"/>
         <source>Import folders...</source>
-        <translation>Importiere Ordner...</translation>
+        <translation>Importer les dossiers...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="748"/>
         <source>Overlay of type '%1' cant be converted</source>
-        <translation>Das Overlay vomTyp '%1' kann nicht konvertiert werden</translation>
+        <translation>Overlay de type '%1' ne peut pas être converti</translation>
     </message>
 </context>
 <context>
     <name>CQmsDb</name>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Existing file...</source>
-        <translation>Vorhandene Datei...</translation>
+        <translation>Le fichier existe...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Remove existing %1?</source>
-        <translation>Entferne vorhandene %1?</translation>
+        <translation>Supprimer %1 qui existe ?</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="51"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="52"/>
         <source>Remove existing file %1</source>
-        <translation>Entferne vorhandene Datei %1</translation>
+        <translation>Supprimer le fichier existant %1 ?</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="160"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="162"/>
         <source>%1: drop item with QLGT DB ID %2</source>
-        <translation>%1: verwerfe das Element mit der QLGT DB ID %2</translation>
+        <translation>%1: poubellise l'élément avec l'identifiant QLGT DB %2</translation>
     </message>
 </context>
 <context>
@@ -1754,50 +1671,35 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="119"/>
         <source>Unknown response</source>
-        <translation>Unbekannte Antwort</translation>
+        <translation>Réponse inconnue</translation>
     </message>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="129"/>
         <source>Error: </source>
-        <translation>Fehler:</translation>
-    </message>
-</context>
-<context>
-    <name>CSetupDB</name>
-    <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Datenbank einrichten...</translation>
-    </message>
-    <message>
-        <source>Changes will become active after an application's restart.</source>
-        <translation type="obsolete">Änderungen werden nach Neustart der Anwendung aktiv.</translation>
-    </message>
-    <message>
-        <source>Select database path...</source>
-        <translation type="obsolete">Datenbankpfad w#ählen...</translation>
+        <translation>Erreur: </translation>
     </message>
 </context>
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
         <source>Error...</source>
-        <translation>Fehler...</translation>
+        <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
         <source>There is already a database with name '%1'</source>
-        <translation>Es gibt schon eine Datenbank mit dem Namen '%1'</translation>
+        <translation>Une database de ce nom existe déjà : %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="83"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
         <source>New database...</source>
-        <translation>Neue Datenbank...</translation>
+        <translation>Nouvelle base de données...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="108"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
         <source>Open database...</source>
-        <translation>Datenbank öffnen...</translation>
+        <translation>Ouvrir la base de données...</translation>
     </message>
 </context>
 <context>
@@ -1805,12 +1707,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Setup database...</source>
-        <translation>Datenbank einrichten...</translation>
+        <translation>Mise en place la base de données...</translation>
     </message>
     <message>
         <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Changes will become active after an application's restart.</source>
-        <translation>Änderungen werden erst nach Neustart der Anwendung aktiv.</translation>
+        <translation>Les modifications prennent effet après un redémarrage de l'application.</translation>
     </message>
 </context>
 <context>
@@ -1818,7 +1720,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../helpers/CTextEditWidget.cpp" line="73"/>
         <source>&Color...</source>
-        <translation>&Farbe...</translation>
+        <translation>&Couleur...</translation>
     </message>
 </context>
 <context>
@@ -1826,7 +1728,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../IAbout.ui" line="14"/>
         <source>About....</source>
-        <translation>Über...</translation>
+        <translation>À propos...</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="43"/>
@@ -1839,7 +1741,7 @@ ist keine gültige Koordinatensystemdefinition:
         <location filename="../IAbout.ui" line="108"/>
         <location filename="../IAbout.ui" line="122"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="87"/>
@@ -1859,7 +1761,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../IAbout.ui" line="138"/>
         <source>This software is licensed under GPL3 or any later version</source>
-        <translation>Diese Software steht unter der GPL3 Lizenz (oder spätere Versionen)</translation>
+        <translation>Ce logiciel est distribué sous les termes de la licence GPL3 ou toute version utérieure</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="145"/>
@@ -1870,18 +1772,14 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>ICanvasSetup</name>
     <message>
-        <source>Setup Map Workspace...</source>
-        <translation type="obsolete">Kartenansicht einstellen...</translation>
-    </message>
-    <message>
         <location filename="../canvas/ICanvasSetup.ui" line="14"/>
         <source>Setup Map View...</source>
-        <translation>Kartenansicht einstellen...</translation>
+        <translation>Configurer la vue cartographique...</translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="22"/>
         <source>Projection & Datum</source>
-        <translation>Projektion & Datum</translation>
+        <translation>Projection et date</translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="32"/>
@@ -1894,7 +1792,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
         <source>Combine Tracks...</source>
-        <translation>Tracks verbinden...</translation>
+        <translation>Joindre des traces</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICombineTrk.ui" line="43"/>
@@ -1910,7 +1808,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="14"/>
         <source>Setup DEM file pathss</source>
-        <translation>Pfad für DEM Dateien setzen</translation>
+        <translation>Configurer les répertoires DEM</translation>
     </message>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="31"/>
@@ -1934,12 +1832,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="35"/>
         <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation><html><head/><body><p>Ändert die Transparenz der Karte</p></body></html></translation>
+        <translation><html><head/><body><p>Régler la transparence du calque DEM</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="50"/>
         <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Klicken, um die aktuelle Skalierung als minimale Skalierung zu benutzen.</p></body></html></translation>
+        <translation><html><head/><body><p>Cliquez pour utilser l'échelle courante comme échelle minimale d'affichage de la carte.</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="53"/>
@@ -1950,37 +1848,37 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="74"/>
         <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation><html><head/><body><p>Stellt den Skalierungsbereich ein, in dem die Karte sichtbar ist. Benutzen Sie die beiden Knöpfe links und rechts um die minimale und maximale Skalierung einzustellen.</p></body></html></translation>
+        <translation><html><head/><body><p>Définissez la plage d'échelle pour l'affichage de la carte. Utilisez les deux boutons à droite et à gauche pour définir l'échelle courante comme échelle maximale ou minimale.</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="87"/>
         <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als maximale Skalierung zu benutzen.</p></body></html></translation>
+        <translation><html><head/><body><p>Cliquez pour utilser l'échelle courante comme échelle maximale d'affichage de la carte.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="115"/>
+        <location filename="../dem/IDemPropSetup.ui" line="118"/>
         <source>Hillshading</source>
-        <translation>Schummerung</translation>
+        <translation>Relief ombré</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="141"/>
+        <location filename="../dem/IDemPropSetup.ui" line="144"/>
         <source>Slope </source>
-        <translation>Hangneigung</translation>
-    </message>
-    <message>
-        <location filename="../dem/IDemPropSetup.ui" line="183"/>
-        <location filename="../dem/IDemPropSetup.ui" line="190"/>
-        <location filename="../dem/IDemPropSetup.ui" line="197"/>
-        <location filename="../dem/IDemPropSetup.ui" line="204"/>
-        <location filename="../dem/IDemPropSetup.ui" line="223"/>
-        <location filename="../dem/IDemPropSetup.ui" line="242"/>
-        <location filename="../dem/IDemPropSetup.ui" line="261"/>
-        <location filename="../dem/IDemPropSetup.ui" line="268"/>
-        <location filename="../dem/IDemPropSetup.ui" line="275"/>
-        <location filename="../dem/IDemPropSetup.ui" line="294"/>
-        <location filename="../dem/IDemPropSetup.ui" line="301"/>
+        <translation>Pente </translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemPropSetup.ui" line="186"/>
+        <location filename="../dem/IDemPropSetup.ui" line="193"/>
+        <location filename="../dem/IDemPropSetup.ui" line="200"/>
+        <location filename="../dem/IDemPropSetup.ui" line="207"/>
+        <location filename="../dem/IDemPropSetup.ui" line="226"/>
+        <location filename="../dem/IDemPropSetup.ui" line="245"/>
+        <location filename="../dem/IDemPropSetup.ui" line="264"/>
+        <location filename="../dem/IDemPropSetup.ui" line="271"/>
+        <location filename="../dem/IDemPropSetup.ui" line="278"/>
+        <location filename="../dem/IDemPropSetup.ui" line="297"/>
+        <location filename="../dem/IDemPropSetup.ui" line="304"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -1993,17 +1891,17 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation>Um Dateien mit Höhendaten zuzufügen -> Menü Datei - DEM Verzeichnisse angeben.</translation>
+        <translation>Pour ajouter des fichiers DEM cliquez sur Fichier -> Configurer les répertoires DEM.</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
         <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
-        <translation>Nutze das Kontextmenü (Klick mit rechter Maustaste auf Eintrag), um eine Datei zu aktivieren. Nutze Ziehen u. Ablegen um die aktivierte Datei in der Reihenfolge der Ansicht zu verschieben.</translation>
+        <translation>Utiliser le menu de contexte (clic droite sur le fichier) pour activer un fichier. Utilisez glisser-déposer pour changer la position du fichier dans la liste.</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="156"/>
         <source>Activate</source>
-        <translation>Aktivieren</translation>
+        <translation>Activer</translation>
     </message>
 </context>
 <context>
@@ -2011,53 +1909,64 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="20"/>
         <source>Dialog</source>
-        <translation></translation>
+        <translation>Dialogue</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="67"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="89"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="115"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="128"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="141"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="154"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="167"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="193"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="206"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="219"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="232"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="245"/>
-        <source>-</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="40"/>
+        <source>Position:</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
-        <source>about:blank</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="47"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="73"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="86"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="99"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="112"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="151"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="164"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="177"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="190"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="203"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="252"/>
+        <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="82"/>
-        <source>Position:</source>
-        <translation>Position:</translation>
-    </message>
-    <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="102"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="60"/>
         <source>Difficulty</source>
-        <translation>Schwierigkeit</translation>
+        <translation>Difficulté</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="180"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="138"/>
         <source>Terrain</source>
-        <translation>Gelände</translation>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="214"/>
+        <source>Update spoilers</source>
+        <translation>Mise à jour des spoilers</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="32"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="217"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="275"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="256"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="267"/>
+        <source>about:blank</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="293"/>
         <source>Hint:</source>
-        <translation>Hinweis:</translation>
+        <translation>Indice:</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="324"/>
+        <source>TextLabel</source>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -2065,7 +1974,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="14"/>
         <source>Dialog</source>
-        <translation>Dialog</translation>
+        <translation>Dialogue</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
@@ -2080,37 +1989,37 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="112"/>
         <source>Color</source>
-        <translation>Farbe</translation>
+        <translation>Couleur</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="133"/>
         <source>Border width</source>
-        <translation>Rahmenbreite</translation>
+        <translation>Largeur de la bordure</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="147"/>
         <source>Style</source>
-        <translation>Stil</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="166"/>
         <source>Opacity</source>
-        <translation>Deckkraft</translation>
+        <translation>Opacité</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="186"/>
         <source>Points</source>
-        <translation>Punkte</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="213"/>
         <source>Position</source>
-        <translation>Position</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="222"/>
         <source>Hist.</source>
-        <translation>Hist.</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -2121,6 +2030,11 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
+        <source>Keywords:</source>
+        <translation>Mots-clés:</translation>
+    </message>
+    <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
         <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
         <source>-</source>
@@ -2129,17 +2043,17 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
         <source>Sort By Time</source>
-        <translation>Sortieren nach Zeit</translation>
+        <translation>Trier par date</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
         <source>Keep Order of Project</source>
-        <translation>Reihenfolge beibehalten</translation>
+        <translation>Conserver l'ordre du projet</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="93"/>
         <source>Print diary</source>
-        <translation>Tagebuch drucken</translation>
+        <translation>Imprimer le journal</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="96"/>
@@ -2150,12 +2064,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="113"/>
         <source>Rebuild diary.</source>
-        <translation>Tagebuch aktualisieren.</translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
-        <source>Keywords:</source>
-        <translation>Stichwörter:</translation>
+        <translation>Restaurer le journal...</translation>
     </message>
 </context>
 <context>
@@ -2173,94 +2082,100 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="237"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="347"/>
+        <source>Info</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="253"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="182"/>
+        <source>Graph Control</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="203"/>
         <source>Profile</source>
-        <translation>Profil</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="244"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="370"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="210"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="443"/>
         <source>Speed</source>
-        <translation>Geschw.</translation>
+        <translation>Vitesse</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="251"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="217"/>
         <source>Progress</source>
-        <translation>Verlauf</translation>
+        <translation>Progrès</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="194"/>
-        <source>...</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
+        <source>Track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="308"/>
+        <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
         <source>Points</source>
-        <translation>Punkte</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="423"/>
         <source>Time</source>
-        <translation>Zeit</translation>
+        <translation>Durée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="355"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="428"/>
         <source>Ele.</source>
-        <translation>Höhe</translation>
+        <translation>Alt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="360"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="433"/>
         <source>Delta</source>
-        <translation>Delta</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="365"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="438"/>
         <source>Dist.</source>
-        <translation>Entf.</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="448"/>
         <source>Slope</source>
-        <translation>Neigung</translation>
+        <translation>Pente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="380"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="453"/>
         <source>Ascend</source>
-        <translation>Anstieg</translation>
+        <translation>Montée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="385"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="458"/>
         <source>Descend</source>
-        <translation>Abstieg</translation>
+        <translation>Descente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="390"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="463"/>
         <source>Position</source>
-        <translation>Position</translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="156"/>
-        <source>Info</source>
-        <translation>Info.</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="273"/>
-        <source>-</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="472"/>
         <source>Filter</source>
-        <translation>Filter</translation>
+        <translation>Filtre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="509"/>
         <source>Hist.</source>
-        <translation>Hist.</translation>
-    </message>
-    <message>
-        <source>TextLabel</source>
-        <translation type="obsolete">Bezeichnung</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -2268,33 +2183,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="14"/>
         <source>Dialog</source>
-        <translation></translation>
-    </message>
-    <message>
-        <source><html><head/><body><p>Edit comment.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Kommentar bearbeiten.</p></body></html></translation>
-    </message>
-    <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="207"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="236"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="273"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="293"/>
-        <source>...</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten weren nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
-    </message>
-    <message>
-        <source><html><head/><body><p>Edit description.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Beschreibung bearbeiten.</p></body></html></translation>
+        <translation>Dialogue</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="52"/>
         <source>Position:</source>
-        <translation>Position:</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="59"/>
@@ -2308,32 +2202,45 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
         <source>Ele.</source>
-        <translation>Höhe</translation>
+        <translation>Alt.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="98"/>
         <source>Proximity:</source>
-        <translation>Abstand:</translation>
+        <translation>Proximité:</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="144"/>
+        <source>Date/Time:</source>
+        <translation>Date/heure</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
+        <translation><html><head/><body><p>Le waypoint a été importé dans QMapShack et a été modifié. Il ne représente plus les données originales. Veuillez consulter l'historique pour voir les modifications. </p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="204"/>
         <source><html><head/><body><p>Read Only Mode</p></body></html></source>
-        <translation><html><head/><body><p>Schreibschutz</p></body></html></translation>
+        <translation><html><head/><body><p>Mode lecture seule</p></body></html></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="207"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="236"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="273"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="293"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="270"/>
         <source>Add images.</source>
-        <translation>Bilder hinzufügen.</translation>
+        <translation>Ajouter des images</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="290"/>
         <source>Delete selected image.</source>
-        <translation>Ausgewähltes Bild löschen.</translation>
-    </message>
-    <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="144"/>
-        <source>Date/Time:</source>
-        <translation>Datum/Zeit:</translation>
+        <translation>Supprimer l'image sélectionnée</translation>
     </message>
 </context>
 <context>
@@ -2341,12 +2248,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="14"/>
         <source>Edit elevation...</source>
-        <translation>Höhe bearbeiten...</translation>
+        <translation>Modifier l'altitude...</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="22"/>
         <source>Elevation</source>
-        <translation>Höhe</translation>
+        <translation>Altitude</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="32"/>
@@ -2356,7 +2263,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="39"/>
         <source>Get elevation from active digital elevation model.</source>
-        <translation>Höhe aus aktivem digitalen Höhenmodell entnehmen.</translation>
+        <translation>Prendre l'altitude du modèle numérique de terrain (DEM)</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="42"/>
@@ -2374,12 +2281,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
         <source><b>Remove Track Points</b></source>
-        <translation><b>Trackpunkte entfernen</b></translation>
+        <translation><b>Supprimer des points de trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
         <source>Remove all hidden track points permanently.</source>
-        <translation>Alle verborgenen Trackpunkte werden dauerhaft entfernt.</translation>
+        <translation>Supprimer définitivement tous les points cachés.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
@@ -2397,12 +2304,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
         <source><b>Hide Points (Douglas Peuker)</b></source>
-        <translation><b>Trackpunkte verbergen (Douglas Peuker)</b></translation>
+        <translation><b>Cacher des points (Douglas Peuker)</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="57"/>
         <source>Hide track points if the distance to a line between neighboring points is less than</source>
-        <translation>Trackpunkte werden verborgen, wenn der Abstand zu einer Linien zwischen benachbarten Punkten weniger beträgt als</translation>
+        <translation>Cacher les points dont la distance de la ligne entre les points voisinants est inférieur à</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
@@ -2412,7 +2319,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="93"/>
         <source>Apply filter now.</source>
-        <translation>Den Filter jetzt anwenden.</translation>
+        <translation>Appliquer le filtre maintenant.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="96"/>
@@ -2430,17 +2337,17 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="51"/>
         <source><b>Smooth Profile (Median Method)</b></source>
-        <translation><b>Profil glätten (Median-Methode) </b></translation>
+        <translation><b>Lisser le profile (méthode médian)</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="63"/>
         <source>Smooth deviation of the track points elevation with a Median filter of size </source>
-        <translation>Glättet die Abweichung der Höhe von Trackpunkten mit einem Median-Filter der Größe </translation>
+        <translation>Lisse le profile avec un filtre médian de dimension</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
         <source>points</source>
-        <translation>Punkte</translation>
+        <translation> points</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="105"/>
@@ -2458,12 +2365,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="35"/>
         <source><b>Change Time</b></source>
-        <translation><b>Zeit ändern</b></translation>
+        <translation><b>Modifier la date et l'heure</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="44"/>
         <source>Change start of track to </source>
-        <translation>Ändert den Trackbeginn auf </translation>
+        <translation>Date et heure du début de la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="71"/>
@@ -2481,22 +2388,22 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="45"/>
         <source><b>Obscure Timestamps</b></source>
-        <translation><b>Zeitstempel verschleiern</b></translation>
+        <translation><b>Camoufler l'horodatage</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="54"/>
         <source>Increase timestamp by</source>
-        <translation>Erhöht den Zeitstempel um </translation>
+        <translation>Incrementer l'horodatage de</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
         <source> sec.</source>
-        <translation>S</translation>
+        <translation> sec.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="68"/>
         <source>with each track point. 0 sec. will remove timestamps.</source>
-        <translation>für jeden Trackpunkt. 0 s. entfernt alle Zeitstempel.</translation>
+        <translation>pour chaque point de la trace. O sec. supprimera l'horodatage.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
@@ -2514,17 +2421,17 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
         <source><b>Offset Elevation</b></source>
-        <translation><b>Höhenversatz</b></translation>
+        <translation><b>Décalage de l'altitude</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
         <source>Add offset of</source>
-        <translation>Fügt einen Versatz von </translation>
+        <translation>Ajouter un décalage de</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
         <source>to track points elevation.</source>
-        <translation>zur Höhe der Trackpunkte hinzu.</translation>
+        <translation>à l'altitude des points</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
@@ -2542,12 +2449,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="51"/>
         <source><b>Replace Elevation Data</b></source>
-        <translation><b>Höhendaten ersetzen</b></translation>
+        <translation><b>Remplacer l'altitude</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="63"/>
         <source>Replace elevation of track points with the values from loaded DEM files.</source>
-        <translation>Ersetzt die Höhendaten durch Daten aus den geladenen DEM Dateien.</translation>
+        <translation>Remplacer l'altitude des points par les données DEM</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="70"/>
@@ -2565,12 +2472,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
         <source><b>Reset Hidden Track Points</b></source>
-        <translation><b>Verborgene Trackpunkte wiederherstellen</b></translation>
+        <translation><b>Restaurer les points cachés</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
         <source>Make all trackpoints visible again.</source>
-        <translation>Alle Trackpunkte wieder anzeigen.</translation>
+        <translation>Rendre visible les points cachés</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
@@ -2588,17 +2495,17 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
         <source><b>Change Speed</b></source>
-        <translation><b>Geschwindigkeit ändern</b></translation>
+        <translation><b>Modifier la vitesse</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
         <source>Set speed to </source>
-        <translation>Ändert Geschwindigkeit auf </translation>
+        <translation>Mettre la vitesse à </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
         <source> km/h</source>
-        <translation> km/h</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
@@ -2614,19 +2521,15 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <source>State</source>
-        <translation type="obsolete">Status</translation>
-    </message>
-    <message>
         <location filename="../gis/IGisWidget.ui" line="69"/>
         <location filename="../gis/IGisWidget.ui" line="99"/>
         <source>Name</source>
-        <translation>Name</translation>
+        <translation>Nom</translation>
     </message>
     <message>
         <location filename="../gis/IGisWidget.ui" line="133"/>
         <source>To add a database do a right click on the database list above.</source>
-        <translation>Um eine Datenbank hinzuzufügen rechtsklicken Sie oben auf die Datenbankliste.</translation>
+        <translation>Pour ajouter une base de données cliquez droit sur la liste ci-dessus</translation>
     </message>
 </context>
 <context>
@@ -2634,17 +2537,17 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../grid/IGridSetup.ui" line="14"/>
         <source>Setup Grid...</source>
-        <translation>Gitter einstellen...</translation>
+        <translation>Configurer la grille...</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="22"/>
         <source>Projection</source>
-        <translation>Projektion</translation>
+        <translation>Projection</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="37"/>
         <source>restore default</source>
-        <translation>Grundeinstellung wiederherstellen</translation>
+        <translation>Remise à zéro</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="40"/>
@@ -2657,22 +2560,22 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../grid/IGridSetup.ui" line="63"/>
         <source>Get projection from current map.</source>
-        <translation>Projektion aus der aktuellen Karte nehmen.</translation>
+        <translation>Utiliser la projection de la carte courante</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="89"/>
         <source>projection wizzard</source>
-        <translation>Projektionshilfe</translation>
+        <translation>Assitant de projection</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="130"/>
         <source>Grid color</source>
-        <translation>Gitterfarbe</translation>
+        <translation>Couleur de la grille</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="143"/>
         <source>setup grid color</source>
-        <translation>Gitterfarbe einstellen</translation>
+        <translation>Choisir la couleur de la grille</translation>
     </message>
 </context>
 <context>
@@ -2683,31 +2586,31 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="28"/>
-        <source>Source Database:</source>
-        <translation>Quelldatenbank:</translation>
+        <location filename="../qlgt/IImportDatabase.ui" line="22"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="63"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="35"/>
-        <location filename="../qlgt/IImportDatabase.ui" line="76"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../qlgt/IImportDatabase.ui" line="45"/>
+        <source>Source Database:</source>
+        <translation>Base de donnée source</translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="42"/>
-        <location filename="../qlgt/IImportDatabase.ui" line="83"/>
-        <source>...</source>
+        <location filename="../qlgt/IImportDatabase.ui" line="52"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="93"/>
+        <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../qlgt/IImportDatabase.ui" line="69"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="86"/>
         <source>Target Database:</source>
-        <translation>Zieldatenbank:</translation>
+        <translation>Base de donnée cible</translation>
     </message>
     <message>
         <location filename="../qlgt/IImportDatabase.ui" line="102"/>
         <source>Start</source>
-        <translation></translation>
+        <translation>Démarrer</translation>
     </message>
 </context>
 <context>
@@ -2715,12 +2618,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../helpers/IInputDialog.ui" line="14"/>
         <source>Edit...</source>
-        <translation>Bearbeiten...</translation>
+        <translation>Éditer...</translation>
     </message>
     <message>
         <location filename="../helpers/IInputDialog.ui" line="20"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -2728,22 +2631,22 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
         <source>Links...</source>
-        <translation>Verknüpfungen...</translation>
+        <translation>Liens...</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="23"/>
         <source>Type</source>
-        <translation>Typ</translation>
+        <translation>Type</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="28"/>
         <source>Text</source>
-        <translation>Text</translation>
+        <translation>Texte</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="33"/>
         <source>Uri</source>
-        <translation>URI</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="43"/>
@@ -2757,22 +2660,22 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../IMainWindow.ui" line="14"/>
         <source>QMapShack</source>
-        <translation></translation>
+        <translation>QMapShack</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="60"/>
         <source>File</source>
-        <translation>Datei</translation>
+        <translation>Fichier</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="70"/>
         <source>View</source>
-        <translation>Ansicht</translation>
+        <translation>Vue</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="89"/>
         <source>Window</source>
-        <translation>Fenster</translation>
+        <translation>Fenêtre</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="94"/>
@@ -2782,211 +2685,205 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../IMainWindow.ui" line="101"/>
         <source>Project</source>
-        <translation>Projekt</translation>
+        <translation>Projet</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="111"/>
         <source>Tool</source>
-        <translation>Werkzeug</translation>
+        <translation>Outils</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="128"/>
+        <location filename="../IMainWindow.ui" line="129"/>
         <source>Maps</source>
-        <translation>Karten</translation>
+        <translation>Cartes</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="165"/>
+        <location filename="../IMainWindow.ui" line="166"/>
         <source>Dig. Elev. Model (DEM)</source>
-        <translation>Höhenmodell (DEM)</translation>
+        <translation type="unfinished">Modèle numérique de terrain (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="198"/>
+        <location filename="../IMainWindow.ui" line="199"/>
         <source>Data</source>
-        <translation>Daten</translation>
-    </message>
-    <message>
-        <source>Add Map Workspace</source>
-        <translation type="obsolete">Ansicht hinzufügen</translation>
+        <translation>Données</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="211"/>
-        <location filename="../IMainWindow.ui" line="214"/>
+        <location filename="../IMainWindow.ui" line="212"/>
+        <location filename="../IMainWindow.ui" line="215"/>
         <source>Add Map View</source>
-        <translation>Kartenansicht hinzufügen</translation>
+        <translation>Ajouter une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="217"/>
+        <location filename="../IMainWindow.ui" line="218"/>
         <source>Ctrl+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="229"/>
+        <location filename="../IMainWindow.ui" line="230"/>
         <source>Show Scale</source>
-        <translation>Maßstab</translation>
+        <translation>Afficher l'échelle</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="238"/>
+        <location filename="../IMainWindow.ui" line="239"/>
         <source>Setup Map Font</source>
-        <translation>Kartenfont einstellen</translation>
+        <translation>Configurer la police de la carte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="250"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Show Grid</source>
-        <translation>Gitter</translation>
+        <translation>Afficher la grille</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="253"/>
+        <location filename="../IMainWindow.ui" line="254"/>
         <source>Ctrl+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="262"/>
+        <location filename="../IMainWindow.ui" line="263"/>
         <source>Setup Grid</source>
-        <translation>Gitter einstellen</translation>
+        <translation>Configurer la grille</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="265"/>
+        <location filename="../IMainWindow.ui" line="266"/>
         <source>Ctrl+Alt+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="277"/>
+        <location filename="../IMainWindow.ui" line="278"/>
         <source>Flip Mouse Wheel</source>
-        <translation>Mausrad umdrehen</translation>
+        <translation>Inverser le sens de la molette de souris</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="286"/>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="287"/>
+        <location filename="../IMainWindow.ui" line="290"/>
         <source>Setup Map Paths</source>
-        <translation>Kartenverzeichnisse angeben</translation>
+        <translation>Configurer les répertoires des cartes</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="302"/>
         <source>POI Text</source>
-        <translation>POI Text</translation>
+        <translation>Libellés des points d'interêt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="313"/>
+        <location filename="../IMainWindow.ui" line="314"/>
         <source>Night / Day</source>
-        <translation>Nacht / Tag</translation>
+        <translation>Jour / Nuit</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="326"/>
         <source>Map Tool Tip</source>
-        <translation>Kartentooltip</translation>
+        <translation>Infobulles sur la carte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="335"/>
         <source>Setup DEM Paths</source>
-        <translation>DEM Verzeichnisse angeben</translation>
+        <translation>Configurer les répertoires DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="343"/>
+        <location filename="../IMainWindow.ui" line="344"/>
         <source>About</source>
-        <translation>Über</translation>
+        <translation>À propos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="352"/>
+        <location filename="../IMainWindow.ui" line="353"/>
         <source>Help</source>
-        <translation>Hilfe</translation>
+        <translation>Aide</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="361"/>
-        <location filename="../IMainWindow.ui" line="364"/>
+        <location filename="../IMainWindow.ui" line="362"/>
+        <location filename="../IMainWindow.ui" line="365"/>
         <source>Setup Map View</source>
-        <translation>Kartenansicht einstellen</translation>
-    </message>
-    <message>
-        <source>Setup Map Workspace</source>
-        <translation type="obsolete">Arbeitsplatz einstellen</translation>
+        <translation>Configurer la vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="374"/>
         <source>Load GIS Data</source>
-        <translation>GIS Daten laden</translation>
+        <translation>Charger des données SIG...</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="376"/>
+        <location filename="../IMainWindow.ui" line="377"/>
         <source>Load projects from file</source>
-        <translation>Lade Datei als Projekt</translation>
+        <translation>Charger un fichier projet</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="379"/>
+        <location filename="../IMainWindow.ui" line="380"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="388"/>
+        <location filename="../IMainWindow.ui" line="389"/>
         <source>Save All GIS Data</source>
-        <translation>Alle GIS Daten speichern</translation>
+        <translation>Enregistrer toutes les données SIG</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="391"/>
+        <location filename="../IMainWindow.ui" line="392"/>
         <source>Save all projects in the workspace</source>
-        <translation>Alle Projekte im Arbeitsplatz speichern</translation>
+        <translation>Enregistrer tous les projets de l'espace de travail</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="394"/>
+        <location filename="../IMainWindow.ui" line="395"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="403"/>
+        <location filename="../IMainWindow.ui" line="404"/>
         <source>Setup Time Zone</source>
-        <translation>Zeitzone einstellen</translation>
+        <translation>Configurer le fuseau horaire</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="412"/>
+        <location filename="../IMainWindow.ui" line="413"/>
         <source>Add empty project</source>
-        <translation>Leeres Projekt hinzufügen</translation>
+        <translation>Ajouter un projet vide</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="424"/>
+        <location filename="../IMainWindow.ui" line="425"/>
         <source>Search Google</source>
-        <translation>Mit Google suchen</translation>
+        <translation>Recherche Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="433"/>
+        <location filename="../IMainWindow.ui" line="434"/>
         <source>Close all projects</source>
-        <translation>Alle Projekte schließen</translation>
+        <translation>Fermer tous les projets</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
+        <location filename="../IMainWindow.ui" line="437"/>
         <source>F8</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="445"/>
+        <location filename="../IMainWindow.ui" line="446"/>
         <source>Setup Units</source>
-        <translation>Einheiten einstellen</translation>
+        <translation>Configurer les unités</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="455"/>
         <source>Setup Workspace</source>
-        <translation>Arbeitsplatz einstellen</translation>
+        <translation>Configurer l'espace de travail</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="458"/>
         <source>Setup save on exit.</source>
-        <translation>Speichert Einstellungen beim Beenden.</translation>
+        <translation>Sauvegarde de la configuration en quittant</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="467"/>
         <source>Import Database from QLandkarte</source>
-        <translation>Datenbankimport aus QLandkarte</translation>
+        <translation>Importer une base de données QLandkarte</translation>
     </message>
     <message>
-        <source>Setup Database</source>
-        <translation type="obsolete">Datenbank einrichten</translation>
+        <location filename="../IMainWindow.ui" line="470"/>
+        <source>Import QLandkarte GT database</source>
+        <translation>Importer une base de données QLandkarte GT</translation>
     </message>
     <message>
-        <source>Import Database</source>
-        <translation type="obsolete">Datenbank importieren</translation>
+        <location filename="../IMainWindow.ui" line="479"/>
+        <source>VRT Builder</source>
+        <translation>Générateur de VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
-        <source>Import QLandkarte GT database</source>
-        <translation>QLandkarte Gt Datenbank importieren</translation>
+        <location filename="../IMainWindow.ui" line="482"/>
+        <source>GUI front end to gdalbuildvrt</source>
+        <translation>Interface utilisateur pour gdalbuildvrt</translation>
     </message>
 </context>
 <context>
@@ -2997,23 +2894,19 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <source>To add maps use File->Setup Map Pathss. </source>
-        <translation type="obsolete">Um Karten zuzufügen -> Menü Datei - Kartenverzeichnisse angeben.</translation>
-    </message>
-    <message>
         <location filename="../map/IMapList.ui" line="103"/>
         <source>To add maps use File->Setup Map Paths. </source>
-        <translation>Um Karten zuzufügen: Menü - Datei - Kartenverzeichnisse angeben.</translation>
+        <translation>Pour ajouter des cartes cliquez sur Fichier -> Configurer les répertoires des cartes.</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
         <source>Use the context menu (right mouse button click on entry) to activate a map. Use drag-n-drop to move the activated map in the draw order. </source>
-        <translation>Nutze das Kontextmenü ( Klick mit rechter Maustaste auf Eintrag), um eine Karte zu aktivieren. Nutze Ziehen u. Ablegen um die aktivierte Datei in der Reihenfolge der Ansicht zu verschieben.</translation>
+        <translation>Utiliser le menu de contexte (clic droite sur la carte) pour activer une carte. Utilisez glisser-déposer pour changer la position de la carte dans la liste.</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="141"/>
         <source>Activate</source>
-        <translation>Aktivieren</translation>
+        <translation>Activer</translation>
     </message>
 </context>
 <context>
@@ -3021,18 +2914,25 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../map/IMapPathSetup.ui" line="14"/>
         <source>Setup map paths</source>
-        <translation>Kartenpfad einstellen</translation>
+        <translation>Configurer les répertoires des cartes</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="31"/>
-        <location filename="../map/IMapPathSetup.ui" line="51"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../map/IMapPathSetup.ui" line="20"/>
+        <source>Root path of tile cache for online maps:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../map/IMapPathSetup.ui" line="36"/>
+        <location filename="../map/IMapPathSetup.ui" line="73"/>
         <location filename="../map/IMapPathSetup.ui" line="93"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPathSetup.ui" line="29"/>
+        <location filename="../map/IMapPathSetup.ui" line="135"/>
         <source>-</source>
-        <translation></translation>
+        <translation>-</translation>
     </message>
 </context>
 <context>
@@ -3045,59 +2945,97 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../map/IMapPropSetup.ui" line="35"/>
         <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation><html><head/><body><p>Ändert die Transparenz der Karte</p></body></html></translation>
+        <translation><html><head/><body><p>Régler la transparence de la carte</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="50"/>
         <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als minimale Skalierung zu benutzen.</p></body></html></translation>
+        <translation><html><head/><body><p>Cliquez pour utilser l'échelle courante comme échelle minimale d'affichage de la carte.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="53"/>
         <location filename="../map/IMapPropSetup.ui" line="90"/>
-        <location filename="../map/IMapPropSetup.ui" line="200"/>
         <source>...</source>
-        <translation></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="74"/>
         <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation><html><head/><body><p>Stellt den Skalierungsbereich ein, in dem die Karte sichtbar ist. Benutzen Sie die beiden Knöpfe links und rechts um die minimale und maximale Skalierung einzustellen.</p></body></html></translation>
+        <translation><html><head/><body><p>Définissez la plage d'échelle pour l'affichage de la carte. Utilisez les deux boutons à droite et à gauche pour définir l'échelle courante comme échelle maximale ou minimale.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="87"/>
         <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als maximale Skalierung zu benutzen.</p></body></html></translation>
+        <translation><html><head/><body><p>Cliquez pour utilser l'échelle courante comme échelle maximale d'affichage de la carte.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="137"/>
         <source>Areas</source>
-        <translation>Flächen</translation>
+        <translation>Surfaces</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="144"/>
         <source>Lines</source>
-        <translation>Linien</translation>
+        <translation>Lignes</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="151"/>
         <source>Points</source>
-        <translation>Punkte</translation>
+        <translation>Points</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="190"/>
+        <location filename="../map/IMapPropSetup.ui" line="233"/>
         <source>-</source>
-        <translation></translation>
+        <translation>-</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="220"/>
+        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <source>Cache Path</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPropSetup.ui" line="196"/>
         <source>Cache Size (MB)</source>
-        <translation>Cache (MB)</translation>
+        <translation>Taille du cache (MO)</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <location filename="../map/IMapPropSetup.ui" line="216"/>
         <source>Expiration (Days)</source>
-        <translation>Verfallzeit (Tage)</translation>
+        <translation>Durée du cache (jours)</translation>
+    </message>
+</context>
+<context>
+    <name>IMapVrtBuilder</name>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="22"/>
+        <location filename="../map/IMapVrtBuilder.ui" line="56"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="39"/>
+        <source>Select source files:</source>
+        <translation>Sélectionnez les fichiers source:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="79"/>
+        <source>Target Filename:</source>
+        <translation>Fichier cible:</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="86"/>
+        <source>-</source>
+        <translation>-</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapVrtBuilder.ui" line="95"/>
+        <source>Start</source>
+        <translation>Démarrer</translation>
     </message>
 </context>
 <context>
@@ -3105,22 +3043,22 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
         <source>Add points?</source>
-        <translation>Punkte hinzufügen?</translation>
+        <translation>Ajouter les points ?</translation>
     </message>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
         <source>Add points to temporary line?</source>
-        <translation>Punkte zur temporären Linie hinzufügen?</translation>
+        <translation>Ajouter les points à la ligne temporaire ?</translation>
     </message>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="881"/>
         <source>Warning!</source>
-        <translation>Warnung!</translation>
+        <translation>Avertissement !</translation>
     </message>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="881"/>
         <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation>Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
+        <translation>Ceci remplacera les données de l'original par une ligne simple de coordonnées. Toutes les autres données seront définitivement perdues.</translation>
     </message>
 </context>
 <context>
@@ -3142,7 +3080,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../plot/IPlot.cpp" line="481"/>
         <source>No or bad data.</source>
-        <translation>Keine oder schlechte Daten.</translation>
+        <translation>Aucune donnée ou données invalides.</translation>
     </message>
 </context>
 <context>
@@ -3150,12 +3088,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../helpers/IPositionDialog.ui" line="14"/>
         <source>Position ...</source>
-        <translation>Position...</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/IPositionDialog.ui" line="20"/>
         <source>Enter new position</source>
-        <translation>Neue Position eingeben</translation>
+        <translation>Saisissez la nouvelle position</translation>
     </message>
     <message>
         <location filename="../helpers/IPositionDialog.ui" line="30"/>
@@ -3163,11 +3101,7 @@ ist keine gültige Koordinatensystemdefinition:
 "[N|S] ddd mm.sss [W|E] ddd mm.sss"
 or
 "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Falsches Positionsformat. Muss entweder 
-"[N|S] ddd mm.sss [W|E] ddd mm.sss"
-oder
-"[N|S] ddd.ddd [W|E] ddd.ddd"
-sein</translation>
+        <translation>Mauvais format de position. Formats valides: "[N|S] ddd mm.sss [W|E] ddd mm.sss" ou "[N|S] ddd.ddd [W|E] ddd.ddd" </translation>
     </message>
 </context>
 <context>
@@ -3175,7 +3109,7 @@ sein</translation>
     <message>
         <location filename="../grid/IProjWizard.ui" line="14"/>
         <source>Proj4 Wizzard</source>
-        <translation>Proj4 Wizard</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="29"/>
@@ -3190,17 +3124,17 @@ sein</translation>
     <message>
         <location filename="../grid/IProjWizard.ui" line="45"/>
         <source>zone</source>
-        <translation>Zone</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="82"/>
         <source>user defined</source>
-        <translation>Benutzer definiert</translation>
+        <translation>personnalisé</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="94"/>
         <source>Datum</source>
-        <translation></translation>
+        <translation>Date</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="104"/>
@@ -3210,22 +3144,22 @@ sein</translation>
     <message>
         <location filename="../grid/IProjWizard.ui" line="124"/>
         <source>Result:</source>
-        <translation>Ergebnis:</translation>
+        <translation>Resultat:</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="138"/>
         <source>UPS North (North Pole)</source>
-        <translation>UPS Nord (Nordpol)</translation>
+        <translation>UPS Nord (pôle nord)</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="145"/>
         <source>UPS South (South Pole)</source>
-        <translation>UPS Süd (Südpol)</translation>
+        <translation>UPS Sud (pôle sud)</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="152"/>
         <source>Projection</source>
-        <translation>Projektion</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -3233,7 +3167,7 @@ sein</translation>
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="14"/>
         <source>Waypoint Projection</source>
-        <translation>Wegpunkt Projektion</translation>
+        <translation>Dupliquer un waypoint</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="22"/>
@@ -3248,12 +3182,12 @@ sein</translation>
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="54"/>
         <source>Clone waypoint and move by:</source>
-        <translation>Wegpunkt kopieren und verschieben um:</translation>
+        <translation>Dupliquer le waypoint et déplacer de:</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
         <source>m</source>
-        <translation> m</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
@@ -3271,17 +3205,17 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptEditLine.ui" line="47"/>
         <source>Save to orignal</source>
-        <translation>Ins Original speichern</translation>
+        <translation>Enregistrer</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptEditLine.ui" line="54"/>
         <source>Save as new</source>
-        <translation>Als neu speichern</translation>
+        <translation>Enregistrer sous...</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptEditLine.ui" line="61"/>
         <source>Abort</source>
-        <translation>Abbrechen</translation>
+        <translation>Annuler</translation>
     </message>
 </context>
 <context>
@@ -3302,12 +3236,12 @@ sein</translation>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="51"/>
         <source>Copy area into another project.</source>
-        <translation>Fläche in ein anderes Projekt kopieren.</translation>
+        <translation>Copier la surface dans un autre projet</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="112"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -3320,7 +3254,7 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="35"/>
         <source>Delete point.</source>
-        <translation>Punkt löschen.</translation>
+        <translation>Supprimer le point</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="38"/>
@@ -3334,22 +3268,22 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="49"/>
         <source>Select a range of points.</source>
-        <translation>Einen Punktebereich auswählen.</translation>
+        <translation>Sélectionner une séquence de points</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="63"/>
         <source>Move selected point.</source>
-        <translation>Ausgewählten Punkt verschieben.</translation>
+        <translation>Déplacer le point</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="77"/>
         <source>Add points before the selected point.</source>
-        <translation>Punkte vor dem ausgewählten Punkt einfügen.</translation>
+        <translation>Ajouter des points avant le point sélectionné</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="91"/>
         <source>Add points after the selected point.</source>
-        <translation>Punkte nach dem ausgewählten Punkt einfügen.</translation>
+        <translation>Ajouter des points après le point sélectionné</translation>
     </message>
 </context>
 <context>
@@ -3362,7 +3296,7 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptRange.ui" line="32"/>
         <source>Delete selected range of points.</source>
-        <translation>Löscht gewählten Punktebereich.</translation>
+        <translation>Supprimer une séquence de points</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRange.ui" line="35"/>
@@ -3380,21 +3314,7 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="40"/>
         <source>Hide all points.</source>
-        <translation>Blendet alle Punkte aus.</translation>
-    </message>
-    <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
-        <source>Show all points.</source>
-        <translation>Zeigt alle Punkte an.</translation>
-    </message>
-    <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
-        <source>Copy track points as new track.</source>
-        <translation>Kopiert Trackpunkte in neuen Track.</translation>
-    </message>
-    <message>
-        <source>Hide points.</source>
-        <translation type="obsolete">Pukte ausblenden.</translation>
+        <translation>Cacher tous les points.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="43"/>
@@ -3404,17 +3324,19 @@ sein</translation>
         <translation></translation>
     </message>
     <message>
-        <source>Show points.</source>
-        <translation type="obsolete">Punkte anzeigen.</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
+        <source>Show all points.</source>
+        <translation>Afficher tous les points.</translation>
     </message>
     <message>
-        <source>Copy track points to clipboard</source>
-        <translation type="obsolete">Trackpunkte in die Zwischenablage kopieren</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
+        <source>Copy track points as new track.</source>
+        <translation>Créer une nouvelle trace à partir des points sélectionnés</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="103"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -3427,7 +3349,7 @@ sein</translation>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="28"/>
         <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation><html><head/><body><p>Details anzeigen & Bearbeiten</p></body></html></translation>
+        <translation><html><head/><body><p>Afficher et éditer les détails</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="31"/>
@@ -3439,17 +3361,17 @@ sein</translation>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="42"/>
         <source>Copy route into another project.</source>
-        <translation>Kopiert die Route in ein anderes Projekt.</translation>
+        <translation>Copier la route dans un autre projet</translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="56"/>
         <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation><html><head/><body><p>Löschen</p></body></html></translation>
+        <translation><html><head/><body><p>Supprimer</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="85"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -3462,89 +3384,65 @@ sein</translation>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="40"/>
         <source>View details &amp; Edit properties of track.</source>
-        <translation>Detailansicht & Trackeigenschaften bearbeiten.</translation>
+        <translation>Afficher et éditer les caractéristiques de la trace.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="71"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="165"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
         <source>Copy track into another project.</source>
-        <translation>Track in ein anderes Projekt kopieren.</translation>
+        <translation>Copier la trace dans un autre projet</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="68"/>
         <source>Delete</source>
-        <translation>Löschen</translation>
+        <translation>Supprimer</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="89"/>
         <source>Show on-screen profile and detailed information about points.</source>
-        <translation>Zeigt das Profil und detaillierte Informationen der Punkte.</translation>
+        <translation>Afficher le profile d'altitude et des informations detaillées sur les points</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="162"/>
-        <source>Cut track at selected point into two tracks.</source>
-        <translation>Teilt den Track am selektierten Punkt in zwei Teile.</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
+        <source>Select a range of points.</source>
+        <translation>Sélectionner une séquence de points.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
         <source>Edit position of track points.</source>
-        <translation>Position von Trackpunkten bearbeiten.</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
-        <source>Select a range of points.</source>
-        <translation>Wähle einen Punktebereich.</translation>
+        <translation>Modifier la position des points de la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
         <source>Reverse track.</source>
-        <translation>Track umkehren.</translation>
+        <translation>Inverser la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
         <source>Combine tracks.</source>
-        <translation>Tracks verbinden.</translation>
-    </message>
-    <message>
-        <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Details anzeigen &amp; Bearbeiten</p></body></html></translation>
-    </message>
-    <message>
-        <source><html><head/><body><p>View details &amp; Edit properties of track.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Detailansicht &amp; Trackeigenschaften bearbeiten..</p></body></html></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="71"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="165"/>
-        <source>...</source>
-        <translation></translation>
-    </message>
-    <message>
-        <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Löschen</p></body></html></translation>
-    </message>
-    <message>
-        <source><html><head/><body><p>Show on-screen profile and detailed information about points.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Zeigt das Profil und detaillierte Informationen der Punkte.</p></body></html></translation>
+        <translation>Joindre des traces</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Cut track at selected point into two tracks.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Teilt den Track am selektierten Punkt in zwei Teile.</p></body></html></translation>
-    </message>
-    <message>
-        <source><html><head/><body><p>Edit position of track points.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Bearbeiten der Position von Trackpunkten.</p></body></html></translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="162"/>
+        <source>Cut track at selected point into two tracks.</source>
+        <translation>Couper la trace en deux au point sélectionné</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="191"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -3557,7 +3455,7 @@ sein</translation>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="49"/>
         <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation><html><head/><body><p>Details anzeigen &amp; Bearbeiten</p></body></html></translation>
+        <translation><html><head/><body><p>Afficher et éditer les détails</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
@@ -3571,27 +3469,27 @@ sein</translation>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="63"/>
         <source>Copy waypoint into another project.</source>
-        <translation>Wegpunkt in ein anderes Projekt kopieren.</translation>
+        <translation>Copier le waypoint dans un autre projet.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="77"/>
         <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation><html><head/><body><p>Löschen</p></body></html></translation>
+        <translation><html><head/><body><p>Supprimer</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
         <source><html><head/><body><p>Move waypoint to a new location.</p></body></html></source>
-        <translation><html><head/><body><p>Wegpunkt verschieben.</p></body></html></translation>
+        <translation><html><head/><body><p>Déplacer le waypoint à une nouvelle position.</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
         <source><html><head/><body><p>Clone waypoint and move clone a given distance and angle.</p></body></html></source>
-        <translation><html><head/><body><p>Wegpunkt kopieren und unter Angabe von Entfernung und Winkel verschieben.</p></body></html></translation>
+        <translation><html><head/><body><p>Dupliquer le waypoint et déplacer la copie par une distance et un angle donnés .</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="159"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -3599,12 +3497,12 @@ sein</translation>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
         <source>Copy item...</source>
-        <translation>Element kopieren...</translation>
+        <translation>Copier un élément...</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
         <source>Replace existing item</source>
-        <translation>Ersetzt vorhandenes Element</translation>
+        <translation>Remplacer l'élément existant</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
@@ -3612,59 +3510,55 @@ sein</translation>
         <location filename="../helpers/ISelectCopyAction.ui" line="67"/>
         <location filename="../helpers/ISelectCopyAction.ui" line="77"/>
         <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <translation>Libellé</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
         <source>Do not copy item</source>
-        <translation>Element nicht kopieren</translation>
+        <translation>Ne pas copier l'élément</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
         <source>Create a clone</source>
-        <translation>Abbild erstellen</translation>
+        <translation>Dupliquer l'élément</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
         <source>Replace with:</source>
-        <translation>Ersetzen mit:</translation>
+        <translation>Remplacer par:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
         <source>Keep item:</source>
-        <translation>Element behalten:</translation>
+        <translation>Conserver l'élément:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
         <source>The clone's name will be appended with '_Clone'</source>
-        <translation>Der Name das Abbildes wird mit '_Klon' erweitert</translation>
+        <translation>Le nom de la copie aura le suffixe '_Clone'</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="132"/>
         <source>And for all other items, too.</source>
-        <translation>Auch für alle anderen Elemente anwenden.</translation>
+        <translation>et pour tous les autres éléments</translation>
     </message>
 </context>
 <context>
     <name>ISelectProjectDialog</name>
     <message>
-        <source>Dialog</source>
-        <translation type="obsolete">Dialog</translation>
-    </message>
-    <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="14"/>
         <source>Select a project...</source>
-        <translation>Ein Projekt wählen...</translation>
+        <translation>Choisissez un projet...</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="20"/>
         <source>Select project from list or enter new project name.</source>
-        <translation>Wähle ein Projekt aus der Liste oder gib einen neuen Projektnamen ein.</translation>
+        <translation>Choisissez le projet dans la liste ou entrez un nouveau nom de projet.</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="36"/>
         <source>New project is created as:</source>
-        <translation>Das neue Projekt wird erstellt als:</translation>
+        <translation>Le nouveau projet sera de type:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="73"/>
@@ -3678,35 +3572,16 @@ sein</translation>
     </message>
 </context>
 <context>
-    <name>ISetupDB</name>
-    <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Datenbank einrichten...</translation>
-    </message>
-    <message>
-        <source>save workspace on exit, and every</source>
-        <translation type="obsolete">Ansicht beim Beenden speichern, und alle</translation>
-    </message>
-    <message>
-        <source>minutes</source>
-        <translation type="obsolete">Minuten</translation>
-    </message>
-    <message>
-        <source>Database path</source>
-        <translation type="obsolete">Datenbankpfad</translation>
-    </message>
-</context>
-<context>
     <name>ISetupDatabase</name>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
         <source>Add database...</source>
-        <translation>Datenbank hinzufügen...</translation>
+        <translation>Ajouter une base de données...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>File</source>
-        <translation>Datei</translation>
+        <translation>Fichier</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
@@ -3716,12 +3591,12 @@ sein</translation>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
         <source>Name</source>
-        <translation>Name</translation>
+        <translation>Nom</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
         <source>Add new database.</source>
-        <translation>Fügt eine neue Datenbank hinzu.</translation>
+        <translation>Ajouter une nouvelle base de données.</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
@@ -3732,7 +3607,7 @@ sein</translation>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
         <source>Open existing database.</source>
-        <translation>Öffnet ein vorhandene Datenbank.</translation>
+        <translation>Ouvrir une base de données existante.</translation>
     </message>
 </context>
 <context>
@@ -3740,49 +3615,45 @@ sein</translation>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="14"/>
         <source>Folder...</source>
-        <translation>Ordner...</translation>
+        <translation>Dossier...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="22"/>
         <source>Name</source>
-        <translation>Name</translation>
+        <translation>Nom</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="34"/>
         <source>Group</source>
-        <translation>Gruppe</translation>
+        <translation>Groupe</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="45"/>
         <source>Project</source>
-        <translation>Projekt</translation>
+        <translation>Projet</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="59"/>
         <source>Other</source>
-        <translation>Sonstige</translation>
+        <translation>Autre</translation>
     </message>
 </context>
 <context>
     <name>ISetupWorkspace</name>
     <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Datenbank einrichten...</translation>
-    </message>
-    <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
         <source>Setup workspace...</source>
-        <translation>Arbeitsplatz einstellen...</translation>
+        <translation>Configurer l'espace de travail...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
         <source>save workspace on exit, and every</source>
-        <translation>Arbeitsplatz beim Beenden speichern, und alle</translation>
+        <translation>Sauvegarde de l'espace de travail en quittant et toutes les</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
         <source>minutes</source>
-        <translation>Minuten</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -3790,7 +3661,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="14"/>
         <source>Edit text...</source>
-        <translation>Text bearbeiten...</translation>
+        <translation>Éditer le texte...</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="25"/>
@@ -3812,122 +3683,122 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="256"/>
         <source>Undo</source>
-        <translation>Rückgängig</translation>
+        <translation>Annuler</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="259"/>
         <source>Ctrl+Z</source>
-        <translation>Strg+Z</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="268"/>
         <source>Redo</source>
-        <translation>Wiederherstellen</translation>
+        <translation>Répéter</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="271"/>
         <source>Ctrl+Shift+Z</source>
-        <translation>Strg+Shift+Z</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="280"/>
         <source>Cut</source>
-        <translation>Ausschneiden</translation>
+        <translation>Couper</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="283"/>
         <source>Ctrl+X</source>
-        <translation>Strg+X</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="292"/>
         <source>Copy</source>
-        <translation>Kopieren</translation>
+        <translation>Copier</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="295"/>
         <source>Ctrl+C</source>
-        <translation>Strg+C</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="304"/>
         <source>Paste</source>
-        <translation>Einfügen</translation>
+        <translation>Coller</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="307"/>
         <source>Ctrl+V</source>
-        <translation>Strg+V</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="319"/>
         <source>Align Left</source>
-        <translation>Linksbündig</translation>
+        <translation>Aligné à gauche</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="322"/>
         <source>Ctrl+L</source>
-        <translation>Strg+L</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="334"/>
         <source>Align Right</source>
-        <translation>Rechtsbündig</translation>
+        <translation>Aligné à droite</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="337"/>
         <source>Ctrl+R</source>
-        <translation>Strg+R</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="349"/>
         <source>Align Center</source>
-        <translation>Zentriert</translation>
+        <translation>Centré</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="352"/>
         <source>Ctrl+E</source>
-        <translation>Strg+E</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="364"/>
         <source>Align Block</source>
-        <translation>Blocksatz</translation>
+        <translation>Justifié</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="367"/>
         <source>Ctrl+J</source>
-        <translation>Strg+J</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="379"/>
         <source>Underline</source>
-        <translation>Unterstreichen</translation>
+        <translation>Soulignage</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="382"/>
         <source>Ctrl+U</source>
-        <translation>Strg+U</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="394"/>
         <source>Bold</source>
-        <translation>Fett</translation>
+        <translation>Gras</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="397"/>
         <source>Ctrl+B</source>
-        <translation>Strg+B</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="409"/>
         <source>Italic</source>
-        <translation>Kursiv</translation>
+        <translation>Italique</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="412"/>
         <source>Ctrl+I</source>
-        <translation>Strg+I</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -3935,22 +3806,22 @@ sein</translation>
     <message>
         <location filename="../units/ITimeZoneSetup.ui" line="14"/>
         <source>Setup Time Zone ...</source>
-        <translation>Zeitzone einstellen...</translation>
+        <translation>Configurer le fuseau horaire</translation>
     </message>
     <message>
         <location filename="../units/ITimeZoneSetup.ui" line="22"/>
         <source>UTC</source>
-        <translation></translation>
+        <translation>UTC</translation>
     </message>
     <message>
         <location filename="../units/ITimeZoneSetup.ui" line="29"/>
         <source>Local</source>
-        <translation>Lokal</translation>
+        <translation>Local</translation>
     </message>
     <message>
         <location filename="../units/ITimeZoneSetup.ui" line="36"/>
         <source>Automatic</source>
-        <translation>Automatisch</translation>
+        <translation>Automatique</translation>
     </message>
 </context>
 <context>
@@ -3958,22 +3829,22 @@ sein</translation>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="14"/>
         <source>Setup units...</source>
-        <translation>Einheiten einrichten...</translation>
+        <translation>Configurer les unités</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="22"/>
         <source>Metric</source>
-        <translation>metrisch</translation>
+        <translation>Métrique</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="29"/>
         <source>Imperial</source>
-        <translation>imperial</translation>
+        <translation>Impérial</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="36"/>
         <source>Nautic</source>
-        <translation>nautisch</translation>
+        <translation>Nautique</translation>
     </message>
 </context>
 <context>
@@ -3981,288 +3852,215 @@ sein</translation>
     <message>
         <location filename="../helpers/IWptIconDialog.ui" line="14"/>
         <source>Icons...</source>
-        <translation>Symbole...</translation>
+        <translation>Icônes</translation>
     </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../GeoMath.cpp" line="89"/>
-        <source>Error</source>
-        <translation>Fehler</translation>
+        <location filename="../device/CDeviceGarmin.cpp" line="191"/>
+        <source>Picture%1</source>
+        <translation>Image%1</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="89"/>
-        <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
-        <translation>Falsches Positionsformat. Richtig: [N|S] ddd mm.sss [W|E] ddd mm.sss </translation>
-    </message>
-    <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
-        <source>Failed to read...</source>
-        <translation>Lesen fehlgeschlagen...</translation>
-    </message>
-    <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
-        <source>Failed to read: %1
-line %2, column %3:
- %4</source>
-        <translation>Lesen fehlgeschlagen: %1
-Zeile %2, Spalte %3:
-%4</translation>
-    </message>
-    <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
-        <source>Not a GPX file: </source>
-        <translation>Keien GPX Datei:</translation>
-    </message>
-    <message>
-        <source>
-Filename: %1</source>
-        <translation type="obsolete">Dateiname: %1</translation>
+        <location filename="../GeoMath.cpp" line="160"/>
+        <location filename="../GeoMath.cpp" line="166"/>
+        <source>Error</source>
+        <translation>Erreur</translation>
     </message>
     <message>
-        <source>
-Waypoints: %1</source>
-        <translation type="obsolete">Wegpunkte: %1</translation>
+        <location filename="../GeoMath.cpp" line="160"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation>Mauvais format de position. Formats valides: "[N|S] ddd mm.sss [W|E] ddd mm.sss" ou "[N|S] ddd.ddd [W|E] ddd.ddd" </translation>
     </message>
     <message>
-        <source>
-Tracks: %1</source>
-        <translation type="obsolete">Tracks: %1</translation>
+        <location filename="../GeoMath.cpp" line="166"/>
+        <source>Position values out of bounds. </source>
+        <translation>Valeurs de la position hors de la plage autorisée.</translation>
     </message>
     <message>
-        <source>
-Routes: %1</source>
-        <translation type="obsolete">Routen: %1</translation>
+        <location filename="../gis/CGisListDB.cpp" line="407"/>
+        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
+        <translation>Êtes-vous sûr de vouloir supprimer %1 du dossier %2?</translation>
     </message>
     <message>
-        <source>
-Areas: %1</source>
-        <translation type="obsolete">Fläche: %1</translation>
+        <location filename="../gis/CGisListDB.cpp" line="408"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="294"/>
+        <source>Delete...</source>
+        <translation>Supprimer...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="206"/>
-        <source><br/>
-Filename: %1</source>
-        <translation><br/>
-Dateiname: %1</translation>
+        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <source>Delete project...</source>
+        <translation>Supprimer le projet</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="223"/>
-        <source>Waypoints: %1</source>
-        <translation>Wegpunkte: %1</translation>
+        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <source>Do you really want to delete %1?</source>
+        <translation>Êtes-vous sûr de vouloir supprimer %1?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="227"/>
-        <source>Tracks: %1</source>
-        <translation>Tracks: %1</translation>
+        <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
+        <source>All your data grouped by folders.</source>
+        <translation>Vos données groupées par dossiers.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="231"/>
-        <source>Routes: %1</source>
-        <translation>Routen: %1</translation>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
+        <source>Lost & Found (%1)</source>
+        <translation>Perdu & Trouvé (%1)</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
-        <source>Areas: %1</source>
-        <translation>Flächen: %1</translation>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
+        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
+        <source>Lost & Found</source>
+        <translation>Perdu & Trouvé</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="291"/>
-        <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation>Sind Sie sicher, dass Sie '%1' aus dem Projekt '%2' löschen wollen? </translation>
+        <location filename="../gis/db/CDBProject.cpp" line="126"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="208"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="157"/>
+        <source>Save GIS data to...</source>
+        <translation>Enregistrer les données SIG dans...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="406"/>
-        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation>Sind Sie sicher, dass Sie '%1' aus dem Ordner '%2' löschen wollen? </translation>
+        <location filename="../gis/db/CDBProject.cpp" line="158"/>
+        <source>Save ...</source>
+        <translation>Enregistrer...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="407"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="292"/>
-        <source>Delete...</source>
-        <translation>Löschen...</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="158"/>
+        <source>Abort save</source>
+        <translation>Annuler l'enregistrement</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="93"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open...</source>
-        <translation>Öffnen fehlgeschlagen...</translation>
+        <translation>Impossible d'ouvrir...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="93"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
-        <translation>Öffnen fehlgeschlagen: %1</translation>
+        <translation>Impossible d'ouvrir %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="196"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
-        <source>Save GIS data to...</source>
-        <translation>GIS Daten speichern in...</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="115"/>
+        <source>Failed to read...</source>
+        <translation>Impossible de lire...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="157"/>
-        <source>Save ...</source>
-        <translation>Speichern ...</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation>Impossible de lire: %1
+ligne %2, colonne %3:
+%4</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="157"/>
-        <source>Abort save</source>
-        <translation>Speichern abbrechen</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="115"/>
+        <source>Not a GPX file: </source>
+        <translation>N'est pas un fichier GPX:</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="271"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="283"/>
         <source>File exists ...</source>
-        <translation>Datei existiert...</translation>
+        <translation>Le fichier existe...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="272"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="284"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation>Diese Datei wurde nicht mit QMapShack erstellt. Wenn Sie 'Ja' drücken werden alle Daten dieser Datei gelöscht. Selbst wenn diese Datei GPX Daten enthält und mit QMapShack geladen wurde, können nicht alle Elemente dieser Datei durch QMapShack geladen und gespeichert werden. Diese Elemente sind verloren. Ich empfehle die Nutzung einer anderen Datei. <b>Wollen Sie die Datei wirklich überschreiben?</b></translation>
+        <translation>Le fichier existe et n'a pas été créé par QMapShack. Si vous cliquez sur 'oui' tous les données de ce fichier seront perdues. Même si ce fichier contient des données GPX et sera ouvert par QMapShack certains éléments de ce fichier ne pourront pas être lus ou enregistrés. Ces élements seront perdus. Il est conseillé d'utiliser un autre fichier.<b>Voulez-vous vraiment écraser ce fichier ?</b> </translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="350"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="379"/>
         <source>Failed to create file '%1'</source>
-        <translation>Datei %1' konnte nicht erstellt werden</translation>
+        <translation>Impossible de créer le fichier: '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="364"/>
-        <source>Saveing GIS data failed...</source>
-        <translation>Speichern der GIS Daten fehlgeschlagen...</translation>
-    </message>
-    <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="359"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="388"/>
         <source>Failed to write file '%1'</source>
-        <translation>Datei %1' konnte nicht gespeichert werden</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="266"/>
-        <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation>Wegpunkte geändert, alle vorherigen Daten sind verloren.</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="333"/>
-        <source>Length: %1 %2</source>
-        <translation>Länge: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="340"/>
-        <source>, %1%2 %3, %4%5 %6</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="348"/>
-        <source>Time: %1</source>
-        <translation>Zeit: %1</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="351"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="361"/>
-        <source>, Speed: %1 %2</source>
-        <translation>, Geschw.: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
-        <source>Moving: %1</source>
-        <translation>Bewegung: %1</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
-        <source>Start: %1</source>
-        <translation>Beginn: %1</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="372"/>
-        <source>End: %1</source>
-        <translation>Ende: %1</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="376"/>
-        <source>Points: %1 (%2)</source>
-        <translation>Punkte: %1 (%2)</translation>
+        <translation>Impossible d'écrire le fichier: '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="441"/>
-        <source>Ele.: %1 %2</source>
-        <translation>Höhe: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
-        <source> slope: %1%3 (%2%)</source>
-        <translation>, Neigung: %1%3 (%2%)</translation>
-    </message>
-    <message>
-        <source> slope: %1° (%2%)</source>
-        <translation type="obsolete"> Neigung: %1° (%2%)</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="393"/>
+        <source>Saveing GIS data failed...</source>
+        <translation>Impossible d'enregistrer les données SIG...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1089"/>
-        <source>Hide points.</source>
-        <translation>Punkte ausblenden.</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="575"/>
+        <source>Archived</source>
+        <translation>Archivé</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1123"/>
-        <source>Show points.</source>
-        <translation>Punkte anzeigen.</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="579"/>
+        <source>Available</source>
+        <translation>Disponible</translation>
     </message>
     <message>
-        <source> slope: %1°(%2%)</source>
-        <translation type="obsolete">Neigung: %1°(%2%)</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="583"/>
+        <source>Not Available</source>
+        <translation>Non disponible</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="449"/>
-        <source> speed: %1%2</source>
-        <translation>, Geschw.: %1 %2</translation>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <source>Initial version.</source>
+        <translation>Version initiale</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
-        <source>Ascend: %1%2 (%3%)</source>
-        <translation>Anstieg: %1 %2 (%3%)</translation>
+        <location filename="../gis/IGisItem.cpp" line="407"/>
+        <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
+        <translation>Cet élément est probablement en lecture seule parce qu'il n'a pas été créé avec QMapShack. Normelement, vous ne devriez pas modifier des données importées. Mais si vous êtes sûr de ce que vous faites, cliquez sur 'OK'</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="465"/>
-        <source>Ascend: - (-)</source>
-        <translation>Anstieg: - (-)</translation>
+        <location filename="../gis/IGisItem.cpp" line="408"/>
+        <source>Read Only Mode...</source>
+        <translation>Mode lecture seule</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="471"/>
-        <source> Descend: %1%2 (%3%)</source>
-        <translation>, Abstieg: %1 %2 (%3%)</translation>
+        <location filename="../gis/IGisItem.cpp" line="613"/>
+        <source><h4>Comment:</h4></source>
+        <translation><h4>Commentaire:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="475"/>
-        <source> Descend: - (-) </source>
-        <translation>, Abstieg: - (-) </translation>
+        <location filename="../gis/IGisItem.cpp" line="616"/>
+        <source><p>--- no comment ---</p></source>
+        <translation><p>--- pas de commentaire ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
-        <source>Dist.: %1%2 (%3%)</source>
-        <translation>Entf.: %1 %2 (%3%)</translation>
+        <location filename="../gis/IGisItem.cpp" line="627"/>
+        <location filename="../gis/IGisItem.cpp" line="672"/>
+        <source><h4>Description:</h4></source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
-        <source>Dist.: - (-)</source>
-        <translation>Entf.: - (-)</translation>
+        <location filename="../gis/IGisItem.cpp" line="630"/>
+        <location filename="../gis/IGisItem.cpp" line="675"/>
+        <source><p>--- no description ---</p></source>
+        <translation><p>--- pas de description ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="492"/>
-        <source> Moving: %1%2 (%3%)</source>
-        <translation>, Bewegung: %1 %2 (%3%)</translation>
+        <location filename="../gis/IGisItem.cpp" line="641"/>
+        <location filename="../gis/IGisItem.cpp" line="686"/>
+        <source><h4>Links:</h4></source>
+        <translation><h4>Liens:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="496"/>
-        <source> Moving: - (-) </source>
-        <translation>, Bewegung: - (-) </translation>
+        <location filename="../gis/IGisItem.cpp" line="644"/>
+        <location filename="../gis/IGisItem.cpp" line="689"/>
+        <source><p>--- no links ---</p></source>
+        <translation><p>--- pas de liens ---</p></translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
         <source>thin</source>
-        <translation>dünn</translation>
+        <translation>fine</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
@@ -4272,355 +4070,446 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>wide</source>
-        <translation>weit</translation>
+        <translation>large</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>strong</source>
-        <translation>stark</translation>
+        <translation>épaisse</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="162"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="164"/>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
         <source>_Clone</source>
-        <translation>_Klon</translation>
+        <translation>_Clone</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="418"/>
         <source>Area: %1%2</source>
-        <translation>Fläche: %1%2</translation>
+        <translation>Surface: %1%2</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="476"/>
         <source>Changed area shape.</source>
-        <translation>Flächenform geändert.</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="484"/>
         <source>Changed name.</source>
-        <translation>Name geändert.</translation>
+        <translation>Nom modifié...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="490"/>
         <source>Changed border width.</source>
-        <translation>Umrandungsbreite geändert.</translation>
+        <translation>Largeur de la bordure modifiée...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="496"/>
         <source>Changed fill pattern.</source>
-        <translation>Füllung geändert.</translation>
+        <translation>Remplissage modifié...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed opacity.</source>
-        <translation>Durchsichtigkeit geändert.</translation>
+        <translation>Opacité modifiée...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="508"/>
         <source>Changed comment.</source>
-        <translation>Kommentar geändert.</translation>
+        <translation>Commentaire modifié...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="514"/>
         <source>Changed description.</source>
-        <translation>Beschreibung geändert.</translation>
+        <translation>Description modifiée...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="520"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="139"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1493"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="376"/>
         <source>Changed links</source>
-        <translation>Geänderte Verknüpfungen</translation>
+        <translation>Liens modifiés...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="532"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1440"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1505"/>
         <source>Changed color</source>
-        <translation>Farbe geändert</translation>
+        <translation>Couleur modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
-        <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
-    </message>
-    <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
-        <source>Enter new waypoint name.</source>
-        <translation>Name eingeben.</translation>
-    </message>
-    <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="229"/>
-        <source>Elevation: %1 %2</source>
-        <translation>Höhe: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="240"/>
-        <source>Proximity: %1 %2</source>
-        <translation>Abstand: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
-        <source>Changed name</source>
-        <translation>Name geändert</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="208"/>
+        <source><br/>
+Filename: %1</source>
+        <translation><br/>
+Nom de fichier: %1</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="318"/>
-        <source>Changed position</source>
-        <translation>Position geändert</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="225"/>
+        <source>Waypoints: %1</source>
+        <translation>Waypoints: %1</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
-        <source>Changed elevation</source>
-        <translation>Höhe geändert</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="229"/>
+        <source>Tracks: %1</source>
+        <translation>Traces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="330"/>
-        <source>Changed proximity</source>
-        <translation>Abstandsalarm geändert</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="233"/>
+        <source>Routes: %1</source>
+        <translation>Routes: %1</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
-        <source>Changed icon</source>
-        <translation>Symbol geändert</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
+        <source>Areas: %1</source>
+        <translation>Surfaces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
-        <source>Changed images</source>
-        <translation>Bilder geändert</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="293"/>
+        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <translation>Êtes-vous sûr de vouloir supprimer %1 du projet '%2'?</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="127"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1481"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="364"/>
         <source>Changed comment</source>
-        <translation>Kommentar geändert</translation>
+        <translation>Commentaire modifié</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="133"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1487"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="370"/>
         <source>Changed description</source>
-        <translation>Beschreibung geändert</translation>
+        <translation>Description modifiée</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="189"/>
+        <location filename="../gis/tnv/serialization.cpp" line="292"/>
+        <location filename="../gis/tnv/serialization.cpp" line="360"/>
+        <location filename="../gis/tnv/serialization.cpp" line="389"/>
+        <location filename="../gis/tnv/serialization.cpp" line="400"/>
+        <location filename="../gis/tnv/serialization.cpp" line="421"/>
+        <location filename="../gis/tnv/serialization.cpp" line="549"/>
+        <location filename="../gis/tnv/serialization.cpp" line="577"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="606"/>
+        <location filename="../gis/tnv/serialization.cpp" line="634"/>
+        <location filename="../gis/tnv/serialization.cpp" line="693"/>
+        <source>Error...</source>
+        <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="575"/>
-        <source>Archived</source>
-        <translation>Archiviert</translation>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="189"/>
+        <location filename="../gis/tnv/serialization.cpp" line="292"/>
+        <location filename="../gis/tnv/serialization.cpp" line="360"/>
+        <location filename="../gis/tnv/serialization.cpp" line="549"/>
+        <source>Failed to open %1.</source>
+        <translation>Impossible d'ouvrir %1</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="579"/>
-        <source>Available</source>
-        <translation>Verfügbar</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="389"/>
+        <location filename="../gis/tnv/serialization.cpp" line="400"/>
+        <location filename="../gis/tnv/serialization.cpp" line="577"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation>Le seul format lon/lat autorisé est WGS 84</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="583"/>
-        <source>Not Available</source>
-        <translation>Nicht verfügbar</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="421"/>
+        <location filename="../gis/tnv/serialization.cpp" line="606"/>
+        <location filename="../gis/tnv/serialization.cpp" line="634"/>
+        <location filename="../gis/tnv/serialization.cpp" line="693"/>
+        <source>Failed to read data.</source>
+        <translation>Impossible de lire les données.</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
-        <source>Warning...</source>
-        <translation>Warnung...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="287"/>
+        <source>Changed trackpoints, sacrificed all previous data.</source>
+        <translation>Points de la trace modifiés, Les données antérieures sont perdues.</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
-        <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation>Dieser Dateityp hat eine unbekannte Polygon Kodierung. Bitte mitteilen!</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="363"/>
+        <source>Length: %1 %2</source>
+        <translation>Longueur: %1 %2</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
-        <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation>Dieser Dateityp hat eine unbekannte Polyline Kodierung. Bitte mitteilen!</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="370"/>
+        <source>, %1%2 %3, %4%5 %6</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="294"/>
-        <source>Initial version.</source>
-        <translation>Erstversion.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
+        <source>Time: %1</source>
+        <translation>Durée: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="388"/>
-        <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
-        <translation>Diese Element ist vermutlich schreibgeschützt, da nicht mit QMapShack erstellt. Normalerweise sollten importierte Daten nicht geändert werden. Wenn doch, drücken Sie 'OK'.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="381"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="391"/>
+        <source>, Speed: %1 %2</source>
+        <translation>, vitesse %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="389"/>
-        <source>Read Only Mode...</source>
-        <translation>Schreibgeschützt...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="388"/>
+        <source>Moving: %1</source>
+        <translation>Déplacement: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="587"/>
-        <source><h4>Comment:</h4></source>
-        <translation><h4>Kommentar:</h4></translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="397"/>
+        <source>Start: %1</source>
+        <translation>Début: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="590"/>
-        <source><p>--- no comment ---</p></source>
-        <translation><p>--- kein Kommentar ---</p></translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="402"/>
+        <source>End: %1</source>
+        <translation>Fin: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="646"/>
-        <source><h4>Description:</h4></source>
-        <translation><h4>Beschreibung:</h4></translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="406"/>
+        <source>Points: %1 (%2)</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="649"/>
-        <source><p>--- no description ---</p></source>
-        <translation><p>--- keine Beschreibung ---</p></translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="478"/>
+        <source>Ele.: %1 %2</source>
+        <translation>Altitude: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
-        <source><h4>Links:</h4></source>
-        <translation><h4>Verknüpfungen:</h4></translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
+        <source> slope: %1%3 (%2%)</source>
+        <translation> Pente: %1%3(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
-        <source><p>--- no links ---</p></source>
-        <translation><p>--- keine Verknüpfungen ---</p></translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
+        <source> speed: %1%2</source>
+        <translation> Vitesse: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
-        <source>Enter new track name.</source>
-        <translation>Name eingeben.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="498"/>
+        <source>Ascend: %1%2 (%3%)</source>
+        <translation>Montée: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <source>Enter new area name.</source>
-        <translation>Name eingeben.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="502"/>
+        <source>Ascend: - (-)</source>
+        <translation>Montées: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
-        <source>All your data grouped by folders.</source>
-        <translation>Alle Daten nach Ordnern gruppiert.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="508"/>
+        <source> Descend: %1%2 (%3%)</source>
+        <translation>  Descente: %1%2 (%3%)</translation>
     </message>
     <message>
-        <source>Database</source>
-        <translation type="obsolete">Datenbank</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="512"/>
+        <source> Descend: - (-) </source>
+        <translation>Descente: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
-        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
-        <source>Lost & Found</source>
-        <translation>Verloren & Gefunden</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="519"/>
+        <source>Dist.: %1%2 (%3%)</source>
+        <translation>Dist.: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
-        <source>Lost & Found (%1)</source>
-        <translation>Verloren & Gefunden (%1)</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
+        <source>Dist.: - (-)</source>
+        <translation>Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="194"/>
-        <source>Copy flag information from QLandkarte GT track</source>
-        <translation>Kopiert das Informationsflag aus dem QLandkarte GT Track</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="529"/>
+        <source> Moving: %1%2 (%3%)</source>
+        <translation>  En mouvement: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
-        <source>Corrupt track ...</source>
-        <translation>Beschädigter Track ...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="533"/>
+        <source> Moving: - (-) </source>
+        <translation>En mouvement: - (-)</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
-        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
-        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der Trackpunkte der Trainingsdaten.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="946"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="961"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="980"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1039"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1185"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="190"/>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="107"/>
+        <source>Edit name...</source>
+        <translation>Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
-        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
-        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der erweiterten Trackpunkte.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="946"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="961"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="980"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1039"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1185"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="107"/>
+        <source>Enter new track name.</source>
+        <translation>Saisir le nouveau nom de la trace.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
-        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
-        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der ausgeblendeten Trackpunkte.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1126"/>
+        <source>Hide points.</source>
+        <translation>Cacher des points.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1160"/>
+        <source>Show points.</source>
+        <translation>Afficher les points.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1475"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
+        <source>Changed name</source>
+        <translation>Nom modifié</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="95"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation>Punkte verstecken mit dem Douglas-Peuker Algorithmus (%1%2)</translation>
+        <translation>Cacher des points avec l'algorithme Douglas Peuker (%1%2)</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="111"/>
         <source>Reset all hidden track points to visible</source>
-        <translation>Alle verborgenen Trackpunkte zurücksetzen</translation>
+        <translation>Restaurer les points cachés</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="136"/>
         <source>Permanently removed all hidden track points</source>
-        <translation>Alle verborgenen Trackpunkte wurden dauerhaft entfernt</translation>
+        <translation>Supprimer définitivement tous les points cachés</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="186"/>
         <source>Smoothed profile with a Median filter of size %1</source>
-        <translation>Mit einem Median-Filter der Größe %1 geglättetes Profil</translation>
+        <translation>Profile lissé avec un filtre médian de dimension %1</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="222"/>
         <source>Replaced elevation data with data from DEM files.</source>
-        <translation>Höhendaten durch Daten von DEM Dateien ersetzt.</translation>
+        <translation>Les altitudes ont été remplacées  par les données DEM</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="245"/>
         <source>Offset elevation data by %1%2.</source>
-        <translation>Versatz der Höhendaten um %1%2.</translation>
+        <translation>Décaler les altitudes de %1%2.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="264"/>
         <source>Changed start of track to %1.</source>
-        <translation>Trackanfang auf %1 verschoben.</translation>
+        <translation>Début de la trace modifié à %1.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="283"/>
         <source>Remove timestamps.</source>
-        <translation>Zeitstempel entfernt.</translation>
+        <translation>Horodatage Supprimé.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="306"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation>Künstliche Zeitstempel mit einem Abstand von %1 Sek. gesetzt.</translation>
+        <translation>Horodatage artificiel ajouté avec un décalage de %1 sec.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="339"/>
         <source>Changed speed to %1%2.</source>
-        <translation>Geschwindigkeit auf %1%2 geändert.</translation>
+        <translation>Vitesse modifiée à %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="878"/>
-        <source>Delete project...</source>
-        <translation>Projekt löschen...</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="190"/>
+        <source>Enter new waypoint name.</source>
+        <translation>Saisir le nouveau nom du waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="878"/>
-        <source>Do you really want to delete %1?</source>
-        <translation>Sind Sie sicher, dass sie %1? löschen wollen?</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="242"/>
+        <source>Elevation: %1 %2</source>
+        <translation>Altitude: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="253"/>
+        <source>Proximity: %1 %2</source>
+        <translation>Proximité: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
+        <source>Changed position</source>
+        <translation>Position modifiée</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="340"/>
+        <source>Changed elevation</source>
+        <translation>Altitude modifiée</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="346"/>
+        <source>Changed proximity</source>
+        <translation>Rayon de proximité modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="358"/>
+        <source>Changed icon</source>
+        <translation>Icône modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="382"/>
+        <source>Changed images</source>
+        <translation>Images modifiées</translation>
     </message>
     <message>
-        <source>Do you really want to delete %1</source>
-        <translation type="vanished">Sind Sie sicher, dass sie %1 löschen wollen?</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Add image</source>
+        <translation>Ajouter une image</translation>
+    </message>
+    <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="464"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="845"/>
+        <source>Warning...</source>
+        <translation>Avertissement...</translation>
+    </message>
+    <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="464"/>
+        <source>This is a typ file with unknown polygon encoding. Please report!</source>
+        <translation>Ceci est un fichier type avec un encodage de polygone inconnu. Veuillez signaler ce problème.</translation>
+    </message>
+    <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="845"/>
+        <source>This is a typ file with unknown polyline encoding. Please report!</source>
+        <translation>Ceci est un fichier type avec un encodage de polyligne inconnu. Veuillez signaler ce problème.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Enter new area name.</source>
+        <translation>Saisir le nouveau nom de la surface.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/converter.cpp" line="194"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation>Copier la balise d'information de la trace QLandkarte GT</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
+        <source>Corrupt track ...</source>
+        <translation>Trac invalide...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation>Le nombre de points de trace ne correspond pas au nombre de points de trace de training.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation>Le nombre de points de trace ne correspond pas au nombre de points de trace étendus.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
+        <translation>Le nombre de points de trace ne correspond pas au nombre des points cachés</translation>
     </message>
 </context>
 </TS>
diff --git a/src/main.cpp b/src/main.cpp
index ff706c2..3ce9951 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -126,10 +126,12 @@ int main(int argc, char ** argv)
     QTranslator *qtTranslator = new QTranslator(&a);
     if (qtTranslator->load(QLatin1String("qt_") + locale,resourceDir))
     {
+        qDebug() << QLatin1String("qt_") + locale;
         a.installTranslator(qtTranslator);
     }
     else if (qtTranslator->load(QLatin1String("qt_") + locale,QCoreApplication::applicationDirPath()))
     {
+        qDebug() << QLatin1String("qt_") + locale;
         a.installTranslator(qtTranslator);
     }
 
@@ -137,12 +139,14 @@ int main(int argc, char ** argv)
     QStringList dirList;
     dirList << QCoreApplication::applicationDirPath().replace(QRegExp("bin$"), "share/qmapshack/translations");
 //    dirList << "./src";
+
+    QTranslator *qlandkartegtTranslator = new QTranslator(0);
     foreach(QString dir, dirList)
     {
         QString transName = QLatin1String("qmapshack_") + locale;
-        if (qtTranslator->load( transName, dir))
+        if (qlandkartegtTranslator->load( transName, dir))
         {
-            a.installTranslator(qtTranslator);
+            a.installTranslator(qlandkartegtTranslator);
             qDebug() << "using file '"+ QDir(dir).canonicalPath() + "/" + transName + ".qm' for translations.";
             break;
         }
diff --git a/src/map/CMapDraw.cpp b/src/map/CMapDraw.cpp
index cb83b6e..02642de 100644
--- a/src/map/CMapDraw.cpp
+++ b/src/map/CMapDraw.cpp
@@ -30,6 +30,7 @@
 
 
 QList<CMapDraw*> CMapDraw::maps;
+QString CMapDraw::cachePath = QDir::home().absoluteFilePath(".QMapShack/");
 QStringList CMapDraw::mapPaths;
 QStringList CMapDraw::supportedFormats = QString("*.vrt|*.jnx|*.img|*.rmap|*.wmts|*.tms").split('|');
 
@@ -67,7 +68,7 @@ void CMapDraw::setProjection(const QString& proj)
 
 void CMapDraw::setupMapPath()
 {
-    CMapPathSetup dlg(mapPaths);
+    CMapPathSetup dlg(mapPaths, cachePath);
     if(dlg.exec() != QDialog::Accepted)
     {
         return;
@@ -85,11 +86,13 @@ void CMapDraw::setupMapPath()
 void CMapDraw::saveMapPath(QSettings& cfg)
 {
     cfg.setValue("mapPath", mapPaths);
+    cfg.setValue("cachePath", cachePath);
 }
 
 void CMapDraw::loadMapPath(QSettings& cfg)
 {
-    mapPaths = cfg.value("mapPath", mapPaths).toStringList();
+    mapPaths    = cfg.value("mapPath", mapPaths).toStringList();
+    cachePath   = cfg.value("cachePath", cachePath).toString();
 }
 
 
diff --git a/src/map/CMapDraw.h b/src/map/CMapDraw.h
index 8270fee..0f65dcf 100644
--- a/src/map/CMapDraw.h
+++ b/src/map/CMapDraw.h
@@ -81,6 +81,10 @@ public:
     {
         return supportedFormats;
     }
+    static const QString& getCacheRoot()
+    {
+        return cachePath;
+    }
 
     /**
        @brief Forward messages to CCanvas::reportStatus()
@@ -151,6 +155,8 @@ private:
     /// the list of paths to serach maps
     static QStringList mapPaths;
 
+    static QString cachePath;
+
     /// all existing CMapDraw instances
     static QList<CMapDraw*> maps;
 
diff --git a/src/map/CMapIMG.cpp b/src/map/CMapIMG.cpp
index 8a3e5d3..f7b56eb 100644
--- a/src/map/CMapIMG.cpp
+++ b/src/map/CMapIMG.cpp
@@ -148,7 +148,7 @@ CMapIMG::CMapIMG(const QString &filename, CMapDraw *parent)
     }
     catch(const exce_t& e)
     {
-        QMessageBox::critical(0, tr("Failed ..."), e.msg, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), tr("Failed ..."), e.msg, QMessageBox::Abort);
         return;
     }
 
diff --git a/src/map/CMapMAP.cpp b/src/map/CMapMAP.cpp
index 898d893..4008d24 100644
--- a/src/map/CMapMAP.cpp
+++ b/src/map/CMapMAP.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "helpers/CFileExt.h"
 #include "map/CMapDraw.h"
 #include "map/CMapMAP.h"
@@ -42,7 +43,7 @@ CMapMAP::CMapMAP(const QString &filename, CMapDraw *parent)
     }
     catch(const exce_t& e)
     {
-        QMessageBox::critical(0, tr("Failed ..."), e.msg, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), tr("Failed ..."), e.msg, QMessageBox::Abort);
         return;
     }
 
diff --git a/src/map/CMapPathSetup.cpp b/src/map/CMapPathSetup.cpp
index 14bc01b..c34175d 100644
--- a/src/map/CMapPathSetup.cpp
+++ b/src/map/CMapPathSetup.cpp
@@ -16,13 +16,16 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "map/CMapDraw.h"
 #include "map/CMapPathSetup.h"
 
 #include <QtWidgets>
 
-CMapPathSetup::CMapPathSetup(QStringList &paths)
-    : paths(paths)
+CMapPathSetup::CMapPathSetup(QStringList &paths, QString& pathCache)
+    : QDialog(&CMainWindow::self())
+    , paths(paths)
+    , pathCache(pathCache)
 {
     setupUi(this);
 
@@ -36,6 +39,9 @@ CMapPathSetup::CMapPathSetup(QStringList &paths)
         item->setText(path);
     }
 
+    labelCacheRoot->setText(pathCache);
+    connect(toolCacheRoot, SIGNAL(clicked()), this, SLOT(slotChangeCachePath()));
+
     labelHelp->setText(tr("Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1").arg(CMapDraw::getSupportedFormats().join(", ")));
 }
 
@@ -65,6 +71,17 @@ void CMapPathSetup::slotDelPath()
     qDeleteAll(items);
 }
 
+void CMapPathSetup::slotChangeCachePath()
+{
+    QString path = QFileDialog::getExistingDirectory(this, tr("Select root path..."), labelCacheRoot->text());
+    if(path.isEmpty())
+    {
+        return;
+    }
+
+    labelCacheRoot->setText(path);
+}
+
 void CMapPathSetup::accept()
 {
     paths.clear();
@@ -74,5 +91,7 @@ void CMapPathSetup::accept()
         paths << item->text();
     }
 
+    pathCache = QDir(labelCacheRoot->text()).absolutePath();
+
     QDialog::accept();
 }
diff --git a/src/map/CMapPathSetup.h b/src/map/CMapPathSetup.h
index cd197c9..a5aabd5 100644
--- a/src/map/CMapPathSetup.h
+++ b/src/map/CMapPathSetup.h
@@ -26,7 +26,7 @@ class CMapPathSetup : public QDialog, private Ui::IMapPathSetup
 {
     Q_OBJECT
 public:
-    CMapPathSetup(QStringList& paths);
+    CMapPathSetup(QStringList& paths, QString &pathCache);
     virtual ~CMapPathSetup();
 
 public slots:
@@ -36,10 +36,12 @@ private slots:
     void slotAddPath();
     void slotDelPath();
     void slotItemSelectionChanged();
+    void slotChangeCachePath();
 
 
 private:
     QStringList& paths;
+    QString& pathCache;
 };
 
 #endif //CMAPPATHSETUP_H
diff --git a/src/map/CMapPropSetup.cpp b/src/map/CMapPropSetup.cpp
index 13bb21f..36c2c99 100644
--- a/src/map/CMapPropSetup.cpp
+++ b/src/map/CMapPropSetup.cpp
@@ -44,7 +44,6 @@ CMapPropSetup::CMapPropSetup(IMap * mapfile, CMapDraw *map)
     connect(checkPolylines, SIGNAL(clicked()), map, SLOT(emitSigCanvasUpdate()));
     connect(checkPoints, SIGNAL(clicked()), map, SLOT(emitSigCanvasUpdate()));
 
-    connect(toolCachePath, SIGNAL(clicked()), this, SLOT(slotSetCachePath()));
     connect(spinCacheSize, SIGNAL(valueChanged(int)), mapfile, SLOT(slotSetCacheSize(qint32)));
     connect(spinCacheExpiration, SIGNAL(valueChanged(int)), mapfile, SLOT(slotSetCacheExpiration(qint32)));
 
@@ -89,6 +88,7 @@ void CMapPropSetup::resizeEvent(QResizeEvent * e)
 
 void CMapPropSetup::slotPropertiesChanged()
 {
+    // block all signals to avoid retrigger
     sliderOpacity->blockSignals(true);
     toolSetMaxScale->blockSignals(true);
     toolSetMinScale->blockSignals(true);
@@ -98,22 +98,27 @@ void CMapPropSetup::slotPropertiesChanged()
     spinCacheSize->blockSignals(true);
     spinCacheExpiration->blockSignals(true);
 
+    // opacity and visibility settings
     sliderOpacity->setValue(mapfile->getOpacity());
     qreal minScale = mapfile->getMinScale();
     toolSetMinScale->setChecked(minScale != NOFLOAT);
     qreal maxScale = mapfile->getMaxScale();
     toolSetMaxScale->setChecked(maxScale != NOFLOAT);
-
     updateScaleLabel();
 
+    // vector maps properties
     checkPolygons->setChecked(mapfile->getShowPolygons());
     checkPolylines->setChecked(mapfile->getShowPolylines());
     checkPoints->setChecked(mapfile->getShowPOIs());
 
-    labelCachePath->setText(mapfile->getCachePath());
+    // streaming map properties
+    QString lbl = mapfile->getCachePath();
+    labelCachePath->setText(lbl);
+    labelCachePath->setToolTip(lbl);
     spinCacheSize->setValue(mapfile->getCacheSize());
     spinCacheExpiration->setValue(mapfile->getCacheExpiration());
 
+    // unblock all signals
     sliderOpacity->blockSignals(false);
     toolSetMaxScale->blockSignals(false);
     toolSetMinScale->blockSignals(false);
@@ -142,16 +147,6 @@ void CMapPropSetup::slotSetMaxScale(bool checked)
     slotPropertiesChanged();
 }
 
-void CMapPropSetup::slotSetCachePath()
-{
-    QString path = QFileDialog::getExistingDirectory(this, tr("Cache path..."), labelCachePath->text());
-    if(path.isEmpty())
-    {
-        return;
-    }
-    mapfile->slotSetCachePath(path);
-    slotPropertiesChanged();
-}
 
 #define BAR_HEIGHT 6
 #define HOR_MARGIN 3
@@ -203,7 +198,5 @@ void CMapPropSetup::updateScaleLabel()
     p.setBrush(Qt::NoBrush);
     p.drawRect(ind);
 
-
-
     labelScale->setPixmap(pix);
 }
diff --git a/src/map/CMapPropSetup.h b/src/map/CMapPropSetup.h
index 0bd36e3..424e7c7 100644
--- a/src/map/CMapPropSetup.h
+++ b/src/map/CMapPropSetup.h
@@ -41,8 +41,6 @@ private slots:
     void slotSetMinScale(bool checked);
     void slotSetMaxScale(bool checked);
 
-    void slotSetCachePath();
-
 private:
     void updateScaleLabel();
 
diff --git a/src/map/CMapRMAP.cpp b/src/map/CMapRMAP.cpp
index 05c28b8..9428120 100644
--- a/src/map/CMapRMAP.cpp
+++ b/src/map/CMapRMAP.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "canvas/CCanvas.h"
 #include "map/CMapDraw.h"
 #include "map/CMapRMAP.h"
@@ -44,7 +45,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
 
     if("CompeGPSRasterImage" != QString(charbuf))
     {
-        QMessageBox::warning(0, tr("Error..."), tr("This is not a TwoNav RMAP file."), QMessageBox::Abort, QMessageBox::Abort);
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("This is not a TwoNav RMAP file."), QMessageBox::Abort, QMessageBox::Abort);
         return;
     }
 
@@ -53,7 +54,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
 
     if(tag1 != 10 || tag2 != 7)
     {
-        QMessageBox::warning(0, tr("Error..."), tr("Unknown sub-format."), QMessageBox::Abort, QMessageBox::Abort);
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Unknown sub-format."), QMessageBox::Abort, QMessageBox::Abort);
         return;
     }
 
@@ -123,7 +124,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
         {
             if(line.split("=")[1] != "2")
             {
-                QMessageBox::warning(0, tr("Error..."), tr("Unknown version."), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Unknown version."), QMessageBox::Abort, QMessageBox::Abort);
                 return;
             }
         }
@@ -140,7 +141,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
             QStringList vals = line.split("=")[1].split(",");
             if(vals.size() < 5)
             {
-                QMessageBox::warning(0, tr("Error..."), tr("Failed to read reference point."), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Failed to read reference point."), QMessageBox::Abort, QMessageBox::Abort);
                 return;
             }
 
@@ -161,7 +162,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
             QStringList vals = line.split("=")[1].split(",");
             if(vals.size() < 5)
             {
-                QMessageBox::warning(0, tr("Error..."), tr("Failed to read reference point."), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Failed to read reference point."), QMessageBox::Abort, QMessageBox::Abort);
                 return;
             }
 
@@ -183,7 +184,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
             QStringList vals = line.split("=")[1].split(",");
             if(vals.size() < 5)
             {
-                QMessageBox::warning(0, tr("Error..."), tr("Failed to read reference point."), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Failed to read reference point."), QMessageBox::Abort, QMessageBox::Abort);
                 return;
             }
 
@@ -205,7 +206,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
             QStringList vals = line.split("=")[1].split(",");
             if(vals.size() < 5)
             {
-                QMessageBox::warning(0, tr("Error..."), tr("Failed to read reference point."), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Failed to read reference point."), QMessageBox::Abort, QMessageBox::Abort);
                 return;
             }
 
@@ -233,7 +234,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
     {
         if(!setProjection(projection, datum))
         {
-            QMessageBox::warning(0, tr("Error..."), tr("Unknown projection and datum (%1%2).").arg(projection).arg(datum), QMessageBox::Abort, QMessageBox::Abort);
+            QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Unknown projection and datum (%1%2).").arg(projection).arg(datum), QMessageBox::Abort, QMessageBox::Abort);
             return;
         }
     }
diff --git a/src/map/CMapTMS.cpp b/src/map/CMapTMS.cpp
index fd109b8..ca47b84 100644
--- a/src/map/CMapTMS.cpp
+++ b/src/map/CMapTMS.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "map/CMapDraw.h"
 #include "map/CMapTMS.h"
 #include "map/cache/CDiskCache.h"
@@ -66,7 +67,7 @@ CMapTMS::CMapTMS(const QString &filename, CMapDraw *parent)
     QFile file(filename);
     if(!file.open(QIODevice::ReadOnly))
     {
-        QMessageBox::critical(0, tr("Error..."), tr("Failed to open %1").arg(filename), QMessageBox::Abort, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), tr("Error..."), tr("Failed to open %1").arg(filename), QMessageBox::Abort, QMessageBox::Abort);
         return;
     }
 
@@ -76,7 +77,7 @@ CMapTMS::CMapTMS(const QString &filename, CMapDraw *parent)
     if(!dom.setContent(&file, true, &msg, &line, &column))
     {
         file.close();
-        QMessageBox::critical(0, tr("Error..."), tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg), QMessageBox::Abort, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), tr("Error..."), tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg), QMessageBox::Abort, QMessageBox::Abort);
         return;
     }
     file.close();
@@ -149,7 +150,7 @@ CMapTMS::CMapTMS(const QString &filename, CMapDraw *parent)
 
     // create default cache path from filename
     QFileInfo fi(filename);
-    slotSetCachePath(QDir::home().absoluteFilePath(".QMapShack/" + fi.baseName()));
+    slotSetCachePath(QDir(CMapDraw::getCacheRoot()).absoluteFilePath(fi.baseName()));
 
     accessManager   = new QNetworkAccessManager(parent->thread());
     connect(this, SIGNAL(sigQueueChanged()), this, SLOT(slotQueueChanged()));
diff --git a/src/map/CMapVRT.cpp b/src/map/CMapVRT.cpp
index 0f42932..2e96d15 100644
--- a/src/map/CMapVRT.cpp
+++ b/src/map/CMapVRT.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "canvas/CCanvas.h"
 #include "map/CMapDraw.h"
 #include "map/CMapVRT.h"
@@ -43,7 +44,7 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
 
     if(dataset == 0)
     {
-        QMessageBox::warning(0, tr("Error..."), tr("Failed to load file: %1").arg(filename));
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Failed to load file: %1").arg(filename));
         return;
     }
 
@@ -57,7 +58,7 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
         if(pBand == 0)
         {
             delete dataset; dataset = 0;
-            QMessageBox::warning(0, tr("Error..."), tr("Failed to load file: %1").arg(filename));
+            QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("Failed to load file: %1").arg(filename));
             return;
         }
 
@@ -85,7 +86,7 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
         else
         {
             delete dataset; dataset = 0;
-            QMessageBox::warning(0, tr("Error..."), tr("File must be 8 bit palette or gray indexed."));
+            QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("File must be 8 bit palette or gray indexed."));
             return;
         }
 
@@ -120,7 +121,7 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
     if(pjsrc == 0)
     {
         delete dataset; dataset = 0;
-        QMessageBox::warning(0, tr("Error..."), tr("No georeference information found."));
+        QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("No georeference information found."));
         return;
     }
 
diff --git a/src/map/CMapVrtBuilder.cpp b/src/map/CMapVrtBuilder.cpp
new file mode 100644
index 0000000..aa578d4
--- /dev/null
+++ b/src/map/CMapVrtBuilder.cpp
@@ -0,0 +1,198 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMapVrtBuilder.h"
+#include "helpers/CSettings.h"
+
+#include <QtWidgets>
+
+CMapVrtBuilder::CMapVrtBuilder(QWidget *parent)
+    : QWidget(parent)
+    , tainted(false)
+{
+    setupUi(this);
+    setObjectName(tr("Build GDAL VRT"));
+
+    connect(toolSourceFiles, SIGNAL(clicked()), this, SLOT(slotSelectSourceFiles()));
+    connect(toolTargetFile, SIGNAL(clicked()), this, SLOT(slotSelectTargetFile()));
+    connect(pushStart, SIGNAL(clicked()), this, SLOT(slotStart()));
+
+    connect(&cmd, SIGNAL(readyReadStandardError()), this, SLOT(slotStderr()));
+    connect(&cmd, SIGNAL(readyReadStandardOutput()), this, SLOT(slotStdout()));
+    connect(&cmd, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(slotFinished(int,QProcess::ExitStatus)));
+
+    pushStart->setDisabled(true);
+}
+
+CMapVrtBuilder::~CMapVrtBuilder()
+{
+}
+
+void CMapVrtBuilder::slotSelectSourceFiles()
+{
+    SETTINGS;
+    QString path = cfg.value("VrtBuilder/sourcePath",QDir::homePath()).toString();
+
+    QStringList files = QFileDialog::getOpenFileNames(this, tr("Select files..."), path);
+    if(files.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(files.first());
+    path = fi.absolutePath();
+    cfg.setValue("VrtBuilder/sourcePath", path);
+
+    listWidget->clear();
+    foreach(const QString &file, files)
+    {
+        new QListWidgetItem(QIcon("://icons/32x32/Map.png"), file, listWidget);
+    }
+
+    enabelStartButton();
+}
+
+void CMapVrtBuilder::slotSelectTargetFile()
+{
+    SETTINGS;
+    QString path = cfg.value("VrtBuilder/targetPath",QDir::homePath()).toString();
+
+    QString file = QFileDialog::getSaveFileName(this, tr("Select target file..."), path);
+    if(file.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(file);
+    path = fi.absolutePath();
+    cfg.setValue("VrtBuilder/targetPath", path);
+
+    if(fi.suffix().toLower() != "vrt")
+    {
+        file += ".vrt";
+    }
+
+    labelTargetFilename->setText(file);
+
+    enabelStartButton();
+}
+
+
+void CMapVrtBuilder::enabelStartButton()
+{
+    pushStart->setDisabled(true);
+    if(listWidget->count() == 0)
+    {
+        return;
+    }
+    if(labelTargetFilename->text() == "-")
+    {
+        return;
+    }
+    pushStart->setEnabled(true);
+}
+
+
+void CMapVrtBuilder::slotStart()
+{
+    pushStart->setDisabled(true);
+
+    QStringList args;
+    args << labelTargetFilename->text();
+
+    foreach(const QListWidgetItem * item, listWidget->findItems("*", Qt::MatchWildcard))
+    {
+        args << item->text();
+    }
+
+    stdOut("gdalbuildvrt " +  args.join(" ") + "\n");
+    cmd.start("gdalbuildvrt", args);
+}
+
+
+void CMapVrtBuilder::slotStderr()
+{
+    QString str;
+    textBrowser->setTextColor(Qt::red);
+
+    str = cmd.readAllStandardError();
+
+#ifndef WIN32
+    if(str[0] == '\r')
+    {
+        textBrowser->moveCursor( QTextCursor::End, QTextCursor::MoveAnchor );
+        textBrowser->moveCursor( QTextCursor::StartOfLine, QTextCursor::MoveAnchor );
+        textBrowser->moveCursor( QTextCursor::End, QTextCursor::KeepAnchor );
+        textBrowser->textCursor().removeSelectedText();
+
+        str = str.split("\r").last();
+    }
+#endif
+
+    textBrowser->insertPlainText(str);
+    textBrowser->verticalScrollBar()->setValue(textBrowser->verticalScrollBar()->maximum());
+
+    tainted = true;
+}
+
+void CMapVrtBuilder::slotStdout()
+{
+    QString str;
+    textBrowser->setTextColor(Qt::blue);
+    str = cmd.readAllStandardOutput();
+
+#ifndef WIN32
+    if(str[0] == '\r')
+    {
+        textBrowser->moveCursor( QTextCursor::End, QTextCursor::MoveAnchor );
+        textBrowser->moveCursor( QTextCursor::StartOfLine, QTextCursor::MoveAnchor );
+        textBrowser->moveCursor( QTextCursor::End, QTextCursor::KeepAnchor );
+        textBrowser->textCursor().removeSelectedText();
+
+        str = str.split("\r").last();
+    }
+#endif
+
+    textBrowser->insertPlainText(str);
+    textBrowser->verticalScrollBar()->setValue(textBrowser->verticalScrollBar()->maximum());
+}
+
+void CMapVrtBuilder::stdOut(const QString& str, bool gui)
+{
+    textBrowser->setTextColor(Qt::black);
+    textBrowser->append(str);
+}
+
+
+void CMapVrtBuilder::stdErr(const QString& str, bool gui)
+{
+    textBrowser->setTextColor(Qt::red);
+    textBrowser->append(str);
+}
+
+
+void CMapVrtBuilder::slotFinished(int exitCode, QProcess::ExitStatus status)
+{
+    output.clear();
+
+    if(exitCode || status)
+    {
+        textBrowser->setTextColor(Qt::red);
+        textBrowser->append(tr("!!! failed !!!\n"));
+    }
+}
diff --git a/src/map/CMapPropSetup.h b/src/map/CMapVrtBuilder.h
similarity index 57%
copy from src/map/CMapPropSetup.h
copy to src/map/CMapVrtBuilder.h
index 0bd36e3..d7df331 100644
--- a/src/map/CMapPropSetup.h
+++ b/src/map/CMapVrtBuilder.h
@@ -16,38 +16,41 @@
 
 **********************************************************************************************/
 
-#ifndef CMAPPROPSETUP_H
-#define CMAPPROPSETUP_H
+#ifndef CMAPVRTBUILDER_H
+#define CMAPVRTBUILDER_H
 
+#include "ui_IMapVrtBuilder.h"
+#include <QProcess>
+#include <QWidget>
 
-#include "IMapProp.h"
-#include "ui_IMapPropSetup.h"
-
-class CMapPropSetup : public IMapProp, private Ui::IMapPropSetup
+class CMapVrtBuilder : public QWidget, private Ui::IMapVrtBuilder
 {
-    Q_OBJECT
+    Q_OBJECT;
 public:
-    CMapPropSetup(IMap * mapfile, CMapDraw * map);
-    virtual ~CMapPropSetup();
-
-protected slots:
-    void slotPropertiesChanged();
-
-protected:
-    void resizeEvent(QResizeEvent * e);
+    CMapVrtBuilder(QWidget * parent);
+    virtual ~CMapVrtBuilder();
 
 private slots:
-    void slotScaleChanged(const QPointF& s);
-    void slotSetMinScale(bool checked);
-    void slotSetMaxScale(bool checked);
+    void slotSelectSourceFiles();
+    void slotSelectTargetFile();
+    void slotStart();
+
+    void slotStderr();
+    void slotStdout();
+    void slotFinished(int exitCode, QProcess::ExitStatus status);
 
-    void slotSetCachePath();
 
 private:
-    void updateScaleLabel();
+    void enabelStartButton();
+    void stdOut(const QString& str, bool gui = false);
+    void stdErr(const QString& str, bool gui = false);
+
+
+    bool tainted;
+    QString output;
 
-    static QPointF scale;
+    QProcess cmd;
 };
 
-#endif //CMAPPROPSETUP_H
+#endif //CMAPVRTBUILDER_H
 
diff --git a/src/map/CMapWMTS.cpp b/src/map/CMapWMTS.cpp
index 1293e07..73d3ada 100644
--- a/src/map/CMapWMTS.cpp
+++ b/src/map/CMapWMTS.cpp
@@ -16,12 +16,12 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "map/CMapDraw.h"
 #include "map/CMapWMTS.h"
 #include "map/cache/CDiskCache.h"
 #include "units/IUnit.h"
 
-
 #include <QtNetwork>
 #include <QtWidgets>
 #include <QtXml>
@@ -42,7 +42,7 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
     QFile file(filename);
     if(!file.open(QIODevice::ReadOnly))
     {
-        QMessageBox::critical(0, tr("Error..."), tr("Failed to open %1").arg(filename), QMessageBox::Abort, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), tr("Error..."), tr("Failed to open %1").arg(filename), QMessageBox::Abort, QMessageBox::Abort);
         return;
     }
 
@@ -52,7 +52,7 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
     if(!dom.setContent(&file, true, &msg, &line, &column))
     {
         file.close();
-        QMessageBox::critical(0, tr("Error..."), tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg), QMessageBox::Abort, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), tr("Error..."), tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg), QMessageBox::Abort, QMessageBox::Abort);
         return;
     }
     file.close();
@@ -62,7 +62,7 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
     const QDomElement& xmlCapabilities = dom.documentElement();
     if(xmlCapabilities.tagName() != "Capabilities")
     {
-        QMessageBox::critical(0, tr("Error..."), tr("Failed to read: %1\nUnknown structure.").arg(filename), QMessageBox::Abort, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), tr("Error..."), tr("Failed to read: %1\nUnknown structure.").arg(filename), QMessageBox::Abort, QMessageBox::Abort);
         return;
     }
     const QDomNode& xmlServiceIdentification = xmlCapabilities.namedItem("ServiceIdentification");
@@ -71,7 +71,7 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
 
     if(!ServiceType.contains("WMTS", Qt::CaseInsensitive) || ServiceTypeVersion != "1.0.0")
     {
-        QMessageBox::critical(0, tr("Error..."), tr("Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.").arg(ServiceType).arg(ServiceTypeVersion), QMessageBox::Abort, QMessageBox::Abort);
+        QMessageBox::critical(&CMainWindow::self(), tr("Error..."), tr("Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.").arg(ServiceType).arg(ServiceTypeVersion), QMessageBox::Abort, QMessageBox::Abort);
         return;
     }
 
@@ -195,7 +195,7 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
         tileset.pjsrc = pj_init_plus(ptr);
         if(tileset.pjsrc == 0)
         {
-            QMessageBox::warning(0, tr("Error..."), tr("No georeference information found."));
+            QMessageBox::warning(&CMainWindow::self(), tr("Error..."), tr("No georeference information found."));
             return;
         }
 
@@ -225,7 +225,7 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
 
     // create default cache path from filename
     QFileInfo fi(filename);
-    slotSetCachePath(QDir::home().absoluteFilePath(".QMapShack/" + fi.baseName()));
+    slotSetCachePath(QDir(CMapDraw::getCacheRoot()).absoluteFilePath(fi.baseName()));
 
     accessManager   = new QNetworkAccessManager(parent->thread());
     connect(this, SIGNAL(sigQueueChanged()), this, SLOT(slotQueueChanged()));
diff --git a/src/map/IMap.cpp b/src/map/IMap.cpp
index de5e6a3..268cea2 100644
--- a/src/map/IMap.cpp
+++ b/src/map/IMap.cpp
@@ -29,6 +29,12 @@ IMap::IMap(quint32 features, CMapDraw *parent)
     , pjsrc(0)
     , isActivated(false)
     , flagsFeature(features)
+    , showPolygons(true)
+    , showPolylines(true)
+    , showPOIs(true)
+    , cacheSizeMB(100)
+    , cacheExpiration(8)
+
 {
     pjtar = pj_init_plus("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
 }
@@ -40,6 +46,35 @@ IMap::~IMap()
     delete setup;
 }
 
+void IMap::saveConfig(QSettings& cfg)
+{
+    IDrawObject::saveConfig(cfg);
+
+    if(hasFeatureVectorItems())
+    {
+        cfg.setValue("showPolygons", getShowPolygons());
+        cfg.setValue("showPolylines", getShowPolylines());
+        cfg.setValue("showPOIs", getShowPOIs());
+    }
+
+    if(hasFeatureTileCache())
+    {
+        cfg.setValue("cacheSizeMB", cacheSizeMB);
+        cfg.setValue("cacheExpiration", cacheExpiration);
+    }
+}
+
+void IMap::loadConfig(QSettings& cfg)
+{
+    IDrawObject::loadConfig(cfg);
+
+    slotSetShowPolygons(cfg.value("showPolygons", getShowPolygons()).toBool());
+    slotSetShowPolylines(cfg.value("showPolylines", getShowPolylines()).toBool());
+    slotSetShowPOIs(cfg.value("showPOIs", getShowPOIs()).toBool());
+    slotSetCacheSize(cfg.value("cacheSizeMB", getCacheSize()).toInt());
+    slotSetCacheExpiration(cfg.value("cacheExpiration", getCacheExpiration()).toInt());
+}
+
 IMapProp *IMap::getSetup()
 {
     if(setup.isNull())
diff --git a/src/map/IMap.h b/src/map/IMap.h
index 4a1466e..61fe525 100644
--- a/src/map/IMap.h
+++ b/src/map/IMap.h
@@ -31,10 +31,15 @@ class IMapProp;
 
 class IMap : public IDrawObject
 {
+    Q_OBJECT
 public:
     IMap(quint32 features, CMapDraw * parent);
     virtual ~IMap();
 
+    void saveConfig(QSettings& cfg);
+
+    void loadConfig(QSettings& cfg);
+
     enum features_e
     {
         eFeatVisibility  = 0x00000001
@@ -109,6 +114,37 @@ public:
         return flagsFeature & eFeatLayers;
     }
 
+    bool getShowPolygons()
+    {
+        return showPolygons;
+    }
+
+    bool getShowPolylines()
+    {
+        return showPolylines;
+    }
+
+    bool getShowPOIs()
+    {
+        return showPOIs;
+    }
+
+    const QString& getCachePath()
+    {
+        return cachePath;
+    }
+
+    qint32 getCacheSize()
+    {
+        return cacheSizeMB;
+    }
+
+    qint32 getCacheExpiration()
+    {
+        return cacheExpiration;
+    }
+
+
     /**
        @brief Find a matching street polyline
 
@@ -123,6 +159,34 @@ public:
      */
     virtual bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
 
+public slots:
+    void slotSetShowPolygons(bool yes)
+    {
+        showPolygons = yes;
+    }
+    void slotSetShowPolylines(bool yes)
+    {
+        showPolylines = yes;
+    }
+    void slotSetShowPOIs(bool yes)
+    {
+        showPOIs = yes;
+    }
+
+    void slotSetCachePath(const QString& path)
+    {
+        cachePath = path; configureCache();
+    }
+    void slotSetCacheSize(qint32 size)
+    {
+        cacheSizeMB = size; configureCache();
+    }
+    void slotSetCacheExpiration(qint32 days)
+    {
+        cacheExpiration = days; configureCache();
+    }
+
+
 protected:
     void convertRad2M(QPointF &p);
     void convertM2Rad(QPointF &p);
@@ -162,7 +226,21 @@ protected:
     /// flag field for features defined in features_e
     quint32 flagsFeature;
 
-
+    /// vector maps only: hide/show polygons
+    bool showPolygons;
+    /// vector maps only: hide/show polylines
+    bool showPolylines;
+    /// vector maps only: hide/show point of interest
+    bool showPOIs;
+
+    /// streaming map only: path to cached tiles
+    QString cachePath;
+    /// streaming map only: maximum size of all tiles in cache [MByte]
+    qint32 cacheSizeMB;
+    /// streaming map only: maximum age of tiles in cache [days]
+    qint32 cacheExpiration;
+
+    /// a copyright string to be displayed as tool tip
     QString copyright;
 };
 
diff --git a/src/map/IMapList.ui b/src/map/IMapList.ui
index 0fe6379..68c6c23 100644
--- a/src/map/IMapList.ui
+++ b/src/map/IMapList.ui
@@ -59,19 +59,19 @@
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <property name="spacing">
-      <number>8</number>
+      <number>3</number>
      </property>
      <property name="leftMargin">
-      <number>8</number>
+      <number>3</number>
      </property>
      <property name="topMargin">
-      <number>8</number>
+      <number>3</number>
      </property>
      <property name="rightMargin">
-      <number>8</number>
+      <number>3</number>
      </property>
      <property name="bottomMargin">
-      <number>8</number>
+      <number>3</number>
      </property>
      <item>
       <widget class="QLabel" name="labelIcon">
diff --git a/src/map/IMapPathSetup.ui b/src/map/IMapPathSetup.ui
index eb22d17..69fd920 100644
--- a/src/map/IMapPathSetup.ui
+++ b/src/map/IMapPathSetup.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>450</width>
-    <height>200</height>
+    <height>265</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -15,6 +15,48 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Root path of tile cache for online maps:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <item>
+      <widget class="QLabel" name="labelCacheRoot">
+       <property name="text">
+        <string>-</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolCacheRoot">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../resources.qrc">
+         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
     <layout class="QHBoxLayout" name="horizontalLayout_3">
      <item>
       <widget class="QListWidget" name="listWidget">
diff --git a/src/map/IMapPropSetup.ui b/src/map/IMapPropSetup.ui
index bede242..7268455 100644
--- a/src/map/IMapPropSetup.ui
+++ b/src/map/IMapPropSetup.ui
@@ -180,30 +180,6 @@
        <number>0</number>
       </property>
       <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_3">
-        <property name="spacing">
-         <number>3</number>
-        </property>
-        <item>
-         <widget class="QLabel" name="labelCachePath">
-          <property name="text">
-           <string>-</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QToolButton" name="toolCachePath">
-          <property name="text">
-           <string>...</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
        <layout class="QFormLayout" name="formLayout">
         <property name="fieldGrowthPolicy">
          <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
@@ -214,14 +190,14 @@
         <property name="verticalSpacing">
          <number>3</number>
         </property>
-        <item row="0" column="0">
+        <item row="1" column="0">
          <widget class="QLabel" name="label_2">
           <property name="text">
            <string>Cache Size (MB)</string>
           </property>
          </widget>
         </item>
-        <item row="0" column="1">
+        <item row="1" column="1">
          <widget class="QSpinBox" name="spinCacheSize">
           <property name="minimum">
            <number>100</number>
@@ -234,14 +210,14 @@
           </property>
          </widget>
         </item>
-        <item row="1" column="0">
+        <item row="2" column="0">
          <widget class="QLabel" name="label_3">
           <property name="text">
            <string>Expiration (Days)</string>
           </property>
          </widget>
         </item>
-        <item row="1" column="1">
+        <item row="2" column="1">
          <widget class="QSpinBox" name="spinCacheExpiration">
           <property name="minimum">
            <number>1</number>
@@ -251,6 +227,20 @@
           </property>
          </widget>
         </item>
+        <item row="0" column="1">
+         <widget class="QLabel" name="labelCachePath">
+          <property name="text">
+           <string>-</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0">
+         <widget class="QLabel" name="label">
+          <property name="text">
+           <string>Cache Path</string>
+          </property>
+         </widget>
+        </item>
        </layout>
       </item>
      </layout>
diff --git a/src/qlgt/IImportDatabase.ui b/src/map/IMapVrtBuilder.ui
similarity index 67%
copy from src/qlgt/IImportDatabase.ui
copy to src/map/IMapVrtBuilder.ui
index 8e1e5c9..5d6405a 100644
--- a/src/qlgt/IImportDatabase.ui
+++ b/src/map/IMapVrtBuilder.ui
@@ -1,43 +1,57 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
- <class>IImportDatabase</class>
- <widget class="QWidget" name="IImportDatabase">
+ <class>IMapVrtBuilder</class>
+ <widget class="QWidget" name="IMapVrtBuilder">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>400</width>
-    <height>300</height>
+    <width>980</width>
+    <height>616</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
-      <widget class="QLabel" name="label">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
+      <widget class="QToolButton" name="toolSourceFiles">
        <property name="text">
-        <string>Source Database:</string>
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../resources.qrc">
+         <normaloff>:/icons/32x32/PathGreen.png</normaloff>:/icons/32x32/PathGreen.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QLabel" name="labelSource">
+      <widget class="QLabel" name="label_4">
        <property name="text">
-        <string>-</string>
+        <string>Select source files:</string>
        </property>
       </widget>
      </item>
+    </layout>
+   </item>
+   <item row="1" column="0">
+    <widget class="QListWidget" name="listWidget"/>
+   </item>
+   <item row="1" column="1">
+    <widget class="QTextBrowser" name="textBrowser"/>
+   </item>
+   <item row="2" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
-      <widget class="QToolButton" name="toolSelectSource">
+      <widget class="QToolButton" name="toolTargetFile">
        <property name="text">
         <string>...</string>
        </property>
@@ -53,12 +67,8 @@
        </property>
       </widget>
      </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
-      <widget class="QLabel" name="label_3">
+      <widget class="QLabel" name="label">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
          <horstretch>0</horstretch>
@@ -66,46 +76,26 @@
         </sizepolicy>
        </property>
        <property name="text">
-        <string>Target Database:</string>
+        <string>Target Filename:</string>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QLabel" name="labelTarget">
+      <widget class="QLabel" name="labelTargetFilename">
        <property name="text">
         <string>-</string>
        </property>
       </widget>
      </item>
-     <item>
-      <widget class="QToolButton" name="toolSelectTarget">
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="../resources.qrc">
-         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>22</width>
-         <height>22</height>
-        </size>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
-   <item>
+   <item row="2" column="1">
     <widget class="QPushButton" name="pushStart">
      <property name="text">
       <string>Start</string>
      </property>
     </widget>
    </item>
-   <item>
-    <widget class="QTextBrowser" name="textBrowser"/>
-   </item>
   </layout>
  </widget>
  <resources>
diff --git a/src/map/cache/CDiskCache.cpp b/src/map/cache/CDiskCache.cpp
index c483a98..7b8cf5f 100644
--- a/src/map/cache/CDiskCache.cpp
+++ b/src/map/cache/CDiskCache.cpp
@@ -125,6 +125,7 @@ void CDiskCache::slotCleanup()
             table.remove(hash);
             cache.remove(hash);
             QFile::remove(fileinfo.absoluteFilePath());
+            qDebug() << "remove old tile" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
         }
         else
         {
@@ -134,6 +135,7 @@ void CDiskCache::slotCleanup()
 
     if(tmpSize > maxSize)
     {
+        files = dir.entryInfoList(QStringList("*.png"), QDir::Files, QDir::Time|QDir::Reversed);
         // if cache is still too large remove oldest files
         foreach(const QFileInfo &fileinfo, files)
         {
@@ -142,11 +144,11 @@ void CDiskCache::slotCleanup()
             cache.remove(hash);
             QFile::remove(fileinfo.absoluteFilePath());
 
-            qDebug() << "remove" << fileinfo.absoluteFilePath();
+            qDebug() << "remove" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
 
-            size -= fileinfo.size();
+            tmpSize -= fileinfo.size();
 
-            if(size < maxSize)
+            if(tmpSize < maxSize)
             {
                 break;
             }
diff --git a/src/map/garmin/CGarminTyp.cpp b/src/map/garmin/CGarminTyp.cpp
index b39425f..2fa5fb1 100644
--- a/src/map/garmin/CGarminTyp.cpp
+++ b/src/map/garmin/CGarminTyp.cpp
@@ -19,7 +19,8 @@
 
 **********************************************************************************************/
 
-#include "CGarminTyp.h"
+#include "CMainWindow.h"
+#include "map/garmin/CGarminTyp.h"
 #include <QMessageBox>
 #include <QtCore>
 
@@ -460,7 +461,7 @@ bool CGarminTyp::parsePolygon(QDataStream& in, QMap<quint32, polygon_property>&
         default:
             if(!tainted)
             {
-                QMessageBox::warning(0, QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polygon encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(&CMainWindow::self(), QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polygon encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
                 tainted = true;
             }
             qDebug() << "Failed polygon:" << typ << subtyp << hex << typ << subtyp << ctyp;
@@ -841,7 +842,7 @@ bool CGarminTyp::parsePolyline(QDataStream& in, QMap<quint32, polyline_property>
         default:
             if(!tainted)
             {
-                QMessageBox::warning(0, QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polyline encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(&CMainWindow::self(), QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polyline encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
                 tainted = true;
             }
 
@@ -911,6 +912,12 @@ bool CGarminTyp::parsePolyline(QDataStream& in, QMap<quint32, polyline_property>
             qDebug() << "ext. label: type" << property.labelType << "day" << property.colorLabelDay << "night" << property.colorLabelNight;
 #endif
         }
+
+        if(property.hasPixmap)
+        {
+            property.imgDay     = property.imgDay.mirrored(false,true);
+            property.imgNight   = property.imgNight.mirrored(false,true);
+        }
     }
     return true;
 }
diff --git a/src/map/garmin/CGarminTyp.h b/src/map/garmin/CGarminTyp.h
index 03ce892..8669b53 100644
--- a/src/map/garmin/CGarminTyp.h
+++ b/src/map/garmin/CGarminTyp.h
@@ -52,7 +52,7 @@ public:
             , known(false)
 
         {
-        };
+        }
 
         polyline_property(quint16 type, const QPen& penLineDay,  const QPen& penLineNight,  const QPen& penBorderDay,  const QPen& penBorderNight)
             : type(type)
diff --git a/src/mouse/CMouseEditArea.cpp b/src/mouse/CMouseEditArea.cpp
index d5f9203..ffb2530 100644
--- a/src/mouse/CMouseEditArea.cpp
+++ b/src/mouse/CMouseEditArea.cpp
@@ -16,12 +16,12 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "canvas/CCanvas.h"
 #include "gis/CGisWidget.h"
 #include "gis/ovl/CGisItemOvlArea.h"
 #include "mouse/CMouseEditArea.h"
 
-
 #include <QtWidgets>
 
 CMouseEditArea::CMouseEditArea(const QPointF& point, CGisDraw * gis, CCanvas * parent)
@@ -97,7 +97,7 @@ void CMouseEditArea::slotCopyToNew()
         name = area->getName();
     }
 
-    name = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new area name."), QLineEdit::Normal, name);
+    name = QInputDialog::getText(&CMainWindow::self(), QObject::tr("Edit name..."), QObject::tr("Enter new area name."), QLineEdit::Normal, name);
 
     if(name.isEmpty())
     {
diff --git a/src/mouse/CMouseEditTrk.cpp b/src/mouse/CMouseEditTrk.cpp
index d60fe2f..aa1b81a 100644
--- a/src/mouse/CMouseEditTrk.cpp
+++ b/src/mouse/CMouseEditTrk.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "canvas/CCanvas.h"
 #include "gis/CGisWidget.h"
 #include "gis/trk/CGisItemTrk.h"
@@ -103,7 +104,7 @@ void CMouseEditTrk::slotCopyToNew()
         name = trk->getName();
     }
 
-    name = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name);
+    name = QInputDialog::getText(&CMainWindow::self(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name);
 
     if(name.isEmpty())
     {
diff --git a/src/qlgt/CImportDatabase.cpp b/src/qlgt/CImportDatabase.cpp
index 0a9fc5a..5e80591 100644
--- a/src/qlgt/CImportDatabase.cpp
+++ b/src/qlgt/CImportDatabase.cpp
@@ -69,7 +69,7 @@ void CImportDatabase::stdErr(const QString& str)
 void CImportDatabase::slotSelectSource()
 {
     SETTINGS;
-    QString path = cfg.value("Path/source",QDir::homePath()).toString();
+    QString path = cfg.value("ConvertDB/sourcePath",QDir::homePath()).toString();
     QString filename = QFileDialog::getOpenFileName(this, tr("Select source database..."), path, "*.db");
     if(filename.isEmpty())
     {
@@ -77,7 +77,7 @@ void CImportDatabase::slotSelectSource()
     }
 
     QFileInfo fi(filename);
-    cfg.setValue("Path/source", fi.absolutePath());
+    cfg.setValue("ConvertDB/sourcePath", fi.absolutePath());
 
     labelSource->setText(filename);
 
diff --git a/src/qlgt/CQlgtTrack.cpp b/src/qlgt/CQlgtTrack.cpp
index 1858b7c..66486fd 100644
--- a/src/qlgt/CQlgtTrack.cpp
+++ b/src/qlgt/CQlgtTrack.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "CQlgtTrack.h"
 
 #include <QtWidgets>
@@ -159,7 +160,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
             s1 >> nTrkPts1;
             if(nTrkPts1 != nTrkPts)
             {
-                QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                QMessageBox::warning(&CMainWindow::self(), QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
@@ -213,7 +214,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
             s1 >> nTrkPts1;
             if(nTrkPts1 != nTrkPts)
             {
-                QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of extended data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                QMessageBox::warning(&CMainWindow::self(), QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of extended data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
@@ -260,7 +261,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
             s1 >> nTrkPts1;
             if(nTrkPts1 != nTrkPts)
             {
-                QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                QMessageBox::warning(&CMainWindow::self(), QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
@@ -286,7 +287,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
             s1 >> nTrkPts1;
             if(nTrkPts1 != nTrkPts)
             {
-                QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                QMessageBox::warning(&CMainWindow::self(), QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
diff --git a/src/qlgt/CQmsDb.cpp b/src/qlgt/CQmsDb.cpp
index 6d1b22a..7f97502 100644
--- a/src/qlgt/CQmsDb.cpp
+++ b/src/qlgt/CQmsDb.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "gis/db/CDBProject.h"
 #include "gis/db/IDBFolder.h"
 #include "gis/db/macros.h"
@@ -43,7 +44,7 @@ CQmsDb::CQmsDb(const QString &filename, CImportDatabase *parent)
 {
     if(QFile::exists(filename))
     {
-        int res = QMessageBox::question(0, tr("Existing file..."), tr("Remove existing %1?").arg(filename), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
+        int res = QMessageBox::question(&CMainWindow::self(), tr("Existing file..."), tr("Remove existing %1?").arg(filename), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
         if(res != QMessageBox::Ok)
         {
             return;
@@ -67,6 +68,7 @@ CQmsDb::CQmsDb(const QString &filename, CImportDatabase *parent)
 
 CQmsDb::~CQmsDb()
 {
+    db.close();
 }
 
 
diff --git a/src/qlgt/IImportDatabase.ui b/src/qlgt/IImportDatabase.ui
index 8e1e5c9..6ce7f1e 100644
--- a/src/qlgt/IImportDatabase.ui
+++ b/src/qlgt/IImportDatabase.ui
@@ -17,6 +17,23 @@
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
+      <widget class="QToolButton" name="toolSelectSource">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../resources.qrc">
+         <normaloff>:/icons/32x32/PathGreen.png</normaloff>:/icons/32x32/PathGreen.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QLabel" name="label">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
@@ -36,8 +53,12 @@
        </property>
       </widget>
      </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
-      <widget class="QToolButton" name="toolSelectSource">
+      <widget class="QToolButton" name="toolSelectTarget">
        <property name="text">
         <string>...</string>
        </property>
@@ -53,10 +74,6 @@
        </property>
       </widget>
      </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <widget class="QLabel" name="label_3">
        <property name="sizePolicy">
@@ -77,23 +94,6 @@
        </property>
       </widget>
      </item>
-     <item>
-      <widget class="QToolButton" name="toolSelectTarget">
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="../resources.qrc">
-         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>22</width>
-         <height>22</height>
-        </size>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
    <item>
diff --git a/src/resources.qrc b/src/resources.qrc
index a92a2a6..46d5a12 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -130,8 +130,13 @@
         <file>icons/32x32/Print.png</file>
         <file>icons/32x32/AddImage.png</file>
         <file>icons/32x32/DelImage.png</file>
+        <file>icons/32x32/ReloadImage.png</file>
         <file>icons/32x32/Image.png</file>
         <file>icons/32x32/Device.png</file>
+        <file>icons/32x32/2NavProject.png</file>
+        <file>icons/32x32/VrtBuilder.png</file>
+        <file>icons/32x32/SaveView.png</file>
+        <file>icons/32x32/LoadView.png</file>
 
         <file>icons/48x48/2DFix.png</file>
         <file>icons/48x48/3DFix.png</file>
@@ -244,8 +249,13 @@
         <file>icons/48x48/Print.png</file>
         <file>icons/48x48/AddImage.png</file>
         <file>icons/48x48/DelImage.png</file>
+        <file>icons/48x48/ReloadImage.png</file>
         <file>icons/48x48/Image.png</file>
         <file>icons/48x48/Device.png</file>
+        <file>icons/48x48/2NavProject.png</file>
+        <file>icons/48x48/VrtBuilder.png</file>
+        <file>icons/48x48/SaveView.png</file>
+        <file>icons/48x48/LoadView.png</file>
 
         <file>icons/cache/32x32/bluepin.png</file>
         <file>icons/cache/32x32/cito.png</file>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/qmapshack.git



More information about the Pkg-grass-devel mailing list