[qmapshack] 08/18: Imported Upstream version 1.0.0+ds

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sat Mar 7 14:36:18 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 86ffa9957a82253122726992bade130a2f617ecb
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat Mar 7 13:33:23 2015 +0100

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

diff --git a/.hg/00changelog.i b/.hg/00changelog.i
deleted file mode 100644
index d3a8311..0000000
Binary files a/.hg/00changelog.i and /dev/null 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
deleted file mode 100644
index eebb3d1..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_41i_1d.bak
+++ /dev/null
@@ -1,60 +0,0 @@
-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
deleted file mode 100644
index 4d368f0..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_5C3Eit.bak
+++ /dev/null
@@ -1,124 +0,0 @@
-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
deleted file mode 100644
index bd677c7..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_5yS1bt.bak
+++ /dev/null
@@ -1,329 +0,0 @@
-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
deleted file mode 100644
index d8349c2..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_63JmLB.bak
+++ /dev/null
@@ -1,86 +0,0 @@
-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
deleted file mode 100644
index e69de29..0000000
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
deleted file mode 100644
index 9def1c5..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_8xXTxE.bak
+++ /dev/null
@@ -1,93 +0,0 @@
-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
deleted file mode 100644
index e69de29..0000000
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
deleted file mode 100644
index 4cdee7d..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_EUeX2W.bak
+++ /dev/null
@@ -1,63 +0,0 @@
-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
deleted file mode 100644
index ae0a6b9..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_H2s6va.bak
+++ /dev/null
@@ -1,350 +0,0 @@
-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
deleted file mode 100644
index 5b57ce9..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_HGPpdo.bak
+++ /dev/null
@@ -1,77 +0,0 @@
-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
deleted file mode 100644
index 0063cea..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_IPn_yT.bak
+++ /dev/null
@@ -1,239 +0,0 @@
-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
deleted file mode 100644
index 10fe5f6..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_KAC_3x.bak
+++ /dev/null
@@ -1,122 +0,0 @@
-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
deleted file mode 100644
index 2b012af..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_M_J4ty.bak
+++ /dev/null
@@ -1,100 +0,0 @@
-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
deleted file mode 100644
index 8d5ba4e..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Mwh9Qb.bak
+++ /dev/null
@@ -1,156 +0,0 @@
-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
deleted file mode 100644
index 460bcf9..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Nvr8BO.bak
+++ /dev/null
@@ -1,362 +0,0 @@
-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
deleted file mode 100644
index 571aa8f..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_O2w2no.bak
+++ /dev/null
@@ -1,27 +0,0 @@
-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
deleted file mode 100644
index 32fcfb1..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Ozaask.bak
+++ /dev/null
@@ -1,186 +0,0 @@
-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
deleted file mode 100644
index 36cc09c..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_PVfnen.bak
+++ /dev/null
@@ -1,109 +0,0 @@
-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
deleted file mode 100644
index 18fd8fa..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Q80F4i.bak
+++ /dev/null
@@ -1,115 +0,0 @@
-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
deleted file mode 100644
index a2199e3..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_QYFq9x.bak
+++ /dev/null
@@ -1,198 +0,0 @@
-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
deleted file mode 100644
index 15476b0..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_QhKuka.bak
+++ /dev/null
@@ -1,69 +0,0 @@
-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
deleted file mode 100644
index d67e946..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_RHnNae.bak
+++ /dev/null
@@ -1,219 +0,0 @@
-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
deleted file mode 100644
index 42c8986..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_TbVumX.bak
+++ /dev/null
@@ -1,175 +0,0 @@
-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
deleted file mode 100644
index 931c079..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_TlaYCc.bak
+++ /dev/null
@@ -1,55 +0,0 @@
-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
deleted file mode 100644
index e9b02de..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_V50HTU.bak
+++ /dev/null
@@ -1,512 +0,0 @@
-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
deleted file mode 100644
index 520dc5e..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_WQ5EF6.bak
+++ /dev/null
@@ -1,220 +0,0 @@
-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
deleted file mode 100644
index 8024359..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_Wvm2XK.bak
+++ /dev/null
@@ -1,348 +0,0 @@
-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
deleted file mode 100644
index c80f1db..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_XyikZV.bak
+++ /dev/null
@@ -1,88 +0,0 @@
-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
deleted file mode 100644
index 7ce6b74..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_XzwqFK.bak
+++ /dev/null
@@ -1,74 +0,0 @@
-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
deleted file mode 100644
index 4eac65a..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_ZQmjwC.bak
+++ /dev/null
@@ -1,145 +0,0 @@
-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
deleted file mode 100644
index 6d9a525..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__FyHdw.bak
+++ /dev/null
@@ -1,227 +0,0 @@
-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
deleted file mode 100644
index a707975..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__oamrT.bak
+++ /dev/null
@@ -1,250 +0,0 @@
-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
deleted file mode 100644
index 25629d8..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212__xosYF.bak
+++ /dev/null
@@ -1,173 +0,0 @@
-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
deleted file mode 100644
index fb528b4..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_aFBa4m.bak
+++ /dev/null
@@ -1,533 +0,0 @@
-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
deleted file mode 100644
index e4effa9..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_c8KLTi.bak
+++ /dev/null
@@ -1,31 +0,0 @@
-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
deleted file mode 100644
index 1374e0d..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_cFEYOV.bak
+++ /dev/null
@@ -1,113 +0,0 @@
-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
deleted file mode 100644
index 57109e9..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_dQbVnU.bak
+++ /dev/null
@@ -1,127 +0,0 @@
-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
deleted file mode 100644
index aa5723b..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_dXCOib.bak
+++ /dev/null
@@ -1,140 +0,0 @@
-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
deleted file mode 100644
index 379bf57..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_gPbjzI.bak
+++ /dev/null
@@ -1,360 +0,0 @@
-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
deleted file mode 100644
index a32363f..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_irk_tW.bak
+++ /dev/null
@@ -1,406 +0,0 @@
-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
deleted file mode 100644
index daa045d..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_jkEjw8.bak
+++ /dev/null
@@ -1,15 +0,0 @@
-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
deleted file mode 100644
index b7d4990..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_pZMY9I.bak
+++ /dev/null
@@ -1,466 +0,0 @@
-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
deleted file mode 100644
index e69de29..0000000
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
deleted file mode 100644
index 0ee4f65..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_uCwhiy.bak
+++ /dev/null
@@ -1,317 +0,0 @@
-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
deleted file mode 100644
index a096400..0000000
--- a/.hg/Trashcan/2014-08-10_14-17-09_parent_rev_212_ygOGzc.bak
+++ /dev/null
@@ -1,374 +0,0 @@
-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
deleted file mode 100644
index bd92182..0000000
--- a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_8rXOP9.bak
+++ /dev/null
@@ -1,14 +0,0 @@
-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
deleted file mode 100644
index 8fcd592..0000000
--- a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_BKqvxh.bak
+++ /dev/null
@@ -1,30 +0,0 @@
-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
deleted file mode 100644
index 5d446f4..0000000
--- a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_Yt2BGo.bak
+++ /dev/null
@@ -1,11 +0,0 @@
-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
deleted file mode 100644
index e69de29..0000000
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
deleted file mode 100644
index e69de29..0000000
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
deleted file mode 100644
index bd92182..0000000
--- a/.hg/Trashcan/2015-02-22_12-03-51_parent_rev_750_urUEGg.bak
+++ /dev/null
@@ -1,14 +0,0 @@
-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/CDetailsTrk_6SCvxa.cpp.bak b/.hg/Trashcan/CDetailsTrk_6SCvxa.cpp.bak
deleted file mode 100644
index 3b22b1f..0000000
--- a/.hg/Trashcan/CDetailsTrk_6SCvxa.cpp.bak
+++ /dev/null
@@ -1,373 +0,0 @@
-/**********************************************************************************************
-    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/trk/CDetailsTrk.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>
-
-CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
-    : QWidget(parent)
-    , trk(trk)
-    , originator(false)
-{
-    setupUi(this);    
-
-    QPixmap icon(16,8);
-    for(int i=0; i < TRK_N_COLORS; ++i)
-    {
-        icon.fill(CGisItemTrk::lineColors[i]);
-        comboColor->addItem(icon,"",CGisItemTrk::lineColors[i]);
-    }
-
-    setupGui();
-
-    SETTINGS;
-    cfg.beginGroup("TrackDetails");
-    checkProfile->setChecked(cfg.value("showProfile", true).toBool());
-    checkSpeed->setChecked(cfg.value("showSpeed", true).toBool());
-    checkProgress->setChecked(cfg.value("showProgress", true).toBool());
-    splitter->restoreState(cfg.value("splitterSizes").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(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
-
-    slotShowPlots();
-
-}
-
-CDetailsTrk::~CDetailsTrk()
-{
-    SETTINGS;
-    cfg.beginGroup("TrackDetails");
-    cfg.setValue("showProfile", checkProfile->isChecked());
-    cfg.setValue("showSpeed", checkSpeed->isChecked());
-    cfg.setValue("showProgress", checkProgress->isChecked());
-    cfg.setValue("splitterSizes", splitter->saveState());
-    cfg.endGroup();
-}
-
-
-
-void CDetailsTrk::setupGui()
-{    
-    if(originator)
-    {
-        return;
-    }
-    QApplication::setOverrideCursor(Qt::WaitCursor);
-    originator = true;
-
-    QString str, val, unit;
-    bool isReadOnly = trk.isReadOnly();
-
-    if(trk.isTainted())
-    {
-        labelTainted->show();
-    }
-    else
-    {
-        labelTainted->hide();
-    }
-
-    labelInfo->setText(trk.getInfo());
-    lineName->setEnabled(!isReadOnly);    
-    comboColor->setCurrentIndex(trk.getColorIdx());
-    comboColor->setEnabled(!isReadOnly);
-    toolLock->setChecked(isReadOnly);
-
-    QList<QTreeWidgetItem*> items;
-    const CGisItemTrk::trk_t& t = trk.getTrackData();
-    foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
-    {
-        foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
-        {
-
-            QTreeWidgetItem * item = new QTreeWidgetItem();
-            item->setTextAlignment(eColNum,Qt::AlignLeft);
-            item->setTextAlignment(eColEle,Qt::AlignRight);
-            item->setTextAlignment(eColDelta,Qt::AlignRight);
-            item->setTextAlignment(eColDist,Qt::AlignRight);
-            item->setTextAlignment(eColAscend,Qt::AlignRight);
-            item->setTextAlignment(eColDescend,Qt::AlignRight);
-            item->setTextAlignment(eColSpeed,Qt::AlignRight);
-
-
-            if(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
-            {
-                for(int i = 0; i < eColMax; i++)
-                {
-                    item->setForeground(i,QBrush(Qt::gray));
-                }
-            }
-            else
-            {
-                for(int i = 0; i < eColMax; i++)
-                {
-                    item->setForeground(i,QBrush(Qt::black));
-                }
-            }
-
-            item->setText(eColNum,QString::number(trkpt.idxTotal));
-            if(trkpt.time.isValid())
-            {
-                item->setText(eColTime, IUnit::self().datetime2string(trkpt.time, true, QPointF(trkpt.lon, trkpt.lat)*DEG_TO_RAD));
-            }
-            else
-            {
-                item->setText(eColTime, "-");
-            }
-
-            if(trkpt.ele != NOINT)
-            {
-                IUnit::self().meter2elevation(trkpt.ele, val, unit);
-                str = tr("%1 %2").arg(val).arg(unit);
-            }
-            else
-            {
-                str = "-";
-            }
-            item->setText(eColEle,str);
-
-            IUnit::self().meter2distance(trkpt.deltaDistance, val, unit);
-            item->setText(eColDelta, tr("%1 %2").arg(val).arg(unit));
-
-            IUnit::self().meter2distance(trkpt.distance, val, unit);
-            item->setText(eColDist, tr("%1 %2").arg(val).arg(unit));
-
-            // speed
-            if(trkpt.speed != NOFLOAT)
-            {
-                IUnit::self().meter2speed(trkpt.speed, val, unit);
-                str = tr("%1 %2").arg(val).arg(unit);
-            }
-            else
-            {
-                str = "-";
-            }
-            item->setText(eColSpeed,str);
-
-            if(trkpt.slope1 != NOFLOAT)
-            {
-                str = QString("%1°(%2%)").arg(trkpt.slope1,2,'f',0).arg(trkpt.slope2,2,'f',0);
-            }
-            else
-            {
-                str = "-";
-            }
-            item->setText(eColSlope,str);
-
-            IUnit::self().meter2elevation(trkpt.ascend, val, unit);
-            item->setText(eColAscend, tr("%1 %2").arg(val).arg(unit));
-            IUnit::self().meter2elevation(trkpt.descend, val, unit);
-            item->setText(eColDescend, tr("%1 %2").arg(val).arg(unit));
-
-            // position
-            GPS_Math_Deg_To_Str(trkpt.lon, trkpt.lat, str);
-            item->setText(eColPosition,str);
-
-            items << item;
-
-        }
-    }
-
-    treeWidget->clear();
-    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) ;
-    textCmtDesc->ensureCursorVisible() ;
-
-    plotElevation->setTrack(&trk);
-    plotDistance->setTrack(&trk);
-    plotSpeed->setTrack(&trk);
-    plotTrack->setTrack(&trk);
-
-    listHistory->setupHistory(trk);
-
-    originator = false;
-    QApplication::restoreOverrideCursor();
-}
-
-void CDetailsTrk::setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt)
-{
-    if(pt != 0)
-    {
-        plotTrack->setMouseMoveFocus(pt->lon, pt->lat);
-        labelInfoTrkPt->setText(trk.getInfoTrkPt(*pt));
-        labelInfoProgress->setText(trk.getInfoProgress(*pt));
-    }
-    else
-    {
-        labelInfoTrkPt->setText("-\n-");
-        labelInfoProgress->setText("-\n-");
-    }
-}
-
-void CDetailsTrk::setMouseClickFocus(const CGisItemTrk::trkpt_t * pt)
-{
-    if(pt != 0)
-    {
-        treeWidget->blockSignals(true);
-        treeWidget->setCurrentItem(treeWidget->topLevelItem(pt->idxTotal));
-        treeWidget->blockSignals(false);
-    }
-}
-
-void CDetailsTrk::slotShowPlots()
-{
-    if(checkProfile->isChecked())
-    {
-        plotElevation->show();
-    }
-    else
-    {
-        plotElevation->hide();
-    }
-
-    if(checkSpeed->isChecked())
-    {
-        plotSpeed->show();
-    }
-    else
-    {
-        plotSpeed->hide();
-    }
-
-    if(checkProgress->isChecked())
-    {
-        plotDistance->show();
-    }
-    else
-    {
-        plotDistance->hide();
-    }
-}
-
-void CDetailsTrk::slotColorChanged(int idx)
-{
-    if(trk.getColorIdx() != idx)
-    {
-        trk.setColor(idx);
-    }
-}
-
-void CDetailsTrk::slotChangeReadOnlyMode(bool on)
-{
-    trk.setReadOnlyMode(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()
-{
-    QTreeWidgetItem * item = treeWidget->currentItem();
-    if(item != 0)
-    {
-        quint32 idx = item->text(eColNum).toUInt();
-        trk.setMouseFocusByIndex(idx, CGisItemTrk::eFocusMouseMove);
-    }
-}
-
-void CDetailsTrk::slotLinkActivated(const QUrl& url)
-{
-    if(url.toString() == "comment")
-    {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(trk.getComment());
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            trk.setComment(dlg.getHtml());
-        }
-        setupGui();
-    }
-    else if(url.toString() == "description")
-    {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(trk.getDescription());
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            trk.setDescription(dlg.getHtml());
-        }
-        setupGui();
-    }
-    else if(url.toString() == "links")
-    {
-        QList<IGisItem::link_t> links = trk.getLinks();
-        CLinksDialog dlg(links, 0);
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            trk.setLinks(links);
-        }
-        setupGui();
-    }
-    else
-    {
-        QDesktopServices::openUrl(url);
-    }
-}
diff --git a/.hg/Trashcan/CDetailsTrk_8daxWy.cpp.bak b/.hg/Trashcan/CDetailsTrk_8daxWy.cpp.bak
deleted file mode 100644
index dd6af46..0000000
--- a/.hg/Trashcan/CDetailsTrk_8daxWy.cpp.bak
+++ /dev/null
@@ -1,371 +0,0 @@
-/**********************************************************************************************
-    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/trk/CDetailsTrk.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>
-
-CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
-    : QWidget(parent)
-    , trk(trk)
-    , originator(false)
-{
-    setupUi(this);    
-
-    QPixmap icon(16,8);
-    for(int i=0; i < TRK_N_COLORS; ++i)
-    {
-        icon.fill(CGisItemTrk::lineColors[i]);
-        comboColor->addItem(icon,"",CGisItemTrk::lineColors[i]);
-    }
-
-    setupGui();
-
-    SETTINGS;
-    cfg.beginGroup("TrackDetails");
-    checkProfile->setChecked(cfg.value("showProfile", true).toBool());
-    checkSpeed->setChecked(cfg.value("showSpeed", true).toBool());
-    checkProgress->setChecked(cfg.value("showProgress", true).toBool());
-    splitter->restoreState(cfg.value("splitterSizes").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(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
-
-    slotShowPlots();
-
-}
-
-CDetailsTrk::~CDetailsTrk()
-{
-    SETTINGS;
-    cfg.beginGroup("TrackDetails");
-    cfg.setValue("showProfile", checkProfile->isChecked());
-    cfg.setValue("showSpeed", checkSpeed->isChecked());
-    cfg.setValue("showProgress", checkProgress->isChecked());
-    cfg.setValue("splitterSizes", splitter->saveState());
-    cfg.endGroup();
-}
-
-
-
-void CDetailsTrk::setupGui()
-{    
-    if(originator)
-    {
-        return;
-    }
-    QApplication::setOverrideCursor(Qt::WaitCursor);
-    originator = true;
-
-    QString str, val, unit;
-    bool isReadOnly = trk.isReadOnly();
-
-    if(trk.isTainted())
-    {
-        labelTainted->show();
-    }
-    else
-    {
-        labelTainted->hide();
-    }
-
-    labelInfo->setText(trk.getInfo());
-    lineName->setEnabled(!isReadOnly);    
-    comboColor->setCurrentIndex(trk.getColorIdx());
-    comboColor->setEnabled(!isReadOnly);
-    toolLock->setChecked(isReadOnly);
-
-    QList<QTreeWidgetItem*> items;
-    const CGisItemTrk::trk_t& t = trk.getTrackData();
-    foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
-    {
-        foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
-        {
-
-            QTreeWidgetItem * item = new QTreeWidgetItem();
-            item->setTextAlignment(eColNum,Qt::AlignLeft);
-            item->setTextAlignment(eColEle,Qt::AlignRight);
-            item->setTextAlignment(eColDelta,Qt::AlignRight);
-            item->setTextAlignment(eColDist,Qt::AlignRight);
-            item->setTextAlignment(eColAscend,Qt::AlignRight);
-            item->setTextAlignment(eColDescend,Qt::AlignRight);
-            item->setTextAlignment(eColSpeed,Qt::AlignRight);
-
-
-            if(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
-            {
-                for(int i = 0; i < eColMax; i++)
-                {
-                    item->setForeground(i,QBrush(Qt::gray));
-                }
-            }
-            else
-            {
-                for(int i = 0; i < eColMax; i++)
-                {
-                    item->setForeground(i,QBrush(Qt::black));
-                }
-            }
-
-            item->setText(eColNum,QString::number(trkpt.idxTotal));
-            if(trkpt.time.isValid())
-            {
-                item->setText(eColTime, IUnit::self().datetime2string(trkpt.time, true, QPointF(trkpt.lon, trkpt.lat)*DEG_TO_RAD));
-            }
-            else
-            {
-                item->setText(eColTime, "-");
-            }
-
-            if(trkpt.ele != NOINT)
-            {
-                IUnit::self().meter2elevation(trkpt.ele, val, unit);
-                str = tr("%1 %2").arg(val).arg(unit);
-            }
-            else
-            {
-                str = "-";
-            }
-            item->setText(eColEle,str);
-
-            IUnit::self().meter2distance(trkpt.deltaDistance, val, unit);
-            item->setText(eColDelta, tr("%1 %2").arg(val).arg(unit));
-
-            IUnit::self().meter2distance(trkpt.distance, val, unit);
-            item->setText(eColDist, tr("%1 %2").arg(val).arg(unit));
-
-            // speed
-            if(trkpt.speed != NOFLOAT)
-            {
-                IUnit::self().meter2speed(trkpt.speed, val, unit);
-                str = tr("%1 %2").arg(val).arg(unit);
-            }
-            else
-            {
-                str = "-";
-            }
-            item->setText(eColSpeed,str);
-
-            if(trkpt.slope1 != NOFLOAT)
-            {
-                str = QString("%1°(%2%)").arg(trkpt.slope1,2,'f',0).arg(trkpt.slope2,2,'f',0);
-            }
-            else
-            {
-                str = "-";
-            }
-            item->setText(eColSlope,str);
-
-            IUnit::self().meter2elevation(trkpt.ascend, val, unit);
-            item->setText(eColAscend, tr("%1 %2").arg(val).arg(unit));
-            IUnit::self().meter2elevation(trkpt.descend, val, unit);
-            item->setText(eColDescend, tr("%1 %2").arg(val).arg(unit));
-
-            // position
-            GPS_Math_Deg_To_Str(trkpt.lon, trkpt.lat, str);
-            item->setText(eColPosition,str);
-
-            items << item;
-
-        }
-    }
-
-    treeWidget->clear();
-    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) ;
-    textCmtDesc->ensureCursorVisible() ;
-
-    plotElevation->setTrack(&trk);
-    plotDistance->setTrack(&trk);
-    plotSpeed->setTrack(&trk);
-    plotTrack->setTrack(&trk);
-
-    listHistory->setupHistory(trk);
-
-    originator = false;
-    QApplication::restoreOverrideCursor();
-}
-
-void CDetailsTrk::setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt)
-{
-    if(pt != 0)
-    {
-        plotTrack->setMouseMoveFocus(pt->lon, pt->lat);
-        labelInfoTrkPt->setText(trk.getInfoTrkPt(*pt));
-        labelInfoProgress->setText(trk.getInfoProgress(*pt));
-    }
-    else
-    {
-        labelInfoTrkPt->setText("-\n-");
-        labelInfoProgress->setText("-\n-");
-    }
-}
-
-void CDetailsTrk::setMouseClickFocus(const CGisItemTrk::trkpt_t * pt)
-{
-    if(pt != 0)
-    {
-        treeWidget->blockSignals(true);
-        treeWidget->setCurrentItem(treeWidget->topLevelItem(pt->idxTotal));
-        treeWidget->blockSignals(false);
-    }
-}
-
-void CDetailsTrk::slotShowPlots()
-{
-    if(checkProfile->isChecked())
-    {
-        plotElevation->show();
-    }
-    else
-    {
-        plotElevation->hide();
-    }
-
-    if(checkSpeed->isChecked())
-    {
-        plotSpeed->show();
-    }
-    else
-    {
-        plotSpeed->hide();
-    }
-
-    if(checkProgress->isChecked())
-    {
-        plotDistance->show();
-    }
-    else
-    {
-        plotDistance->hide();
-    }
-}
-
-void CDetailsTrk::slotColorChanged(int idx)
-{
-    if(trk.getColorIdx() != idx)
-    {
-        trk.setColor(idx);
-    }
-}
-
-void CDetailsTrk::slotChangeReadOnlyMode(bool on)
-{
-    trk.setReadOnlyMode(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()
-{
-    QTreeWidgetItem * item = treeWidget->currentItem();
-    if(item != 0)
-    {
-        quint32 idx = item->text(eColNum).toUInt();
-        trk.setMouseFocusByIndex(idx, CGisItemTrk::eFocusMouseMove);
-    }
-}
-
-void CDetailsTrk::slotLinkActivated(const QUrl& url)
-{
-    if(url.toString() == "comment")
-    {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(trk.getComment());
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            trk.setComment(dlg.getHtml());
-        }
-    }
-    else if(url.toString() == "description")
-    {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(trk.getDescription());
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            trk.setDescription(dlg.getHtml());
-        }
-    }
-    else if(url.toString() == "links")
-    {
-        QList<IGisItem::link_t> links = trk.getLinks();
-        CLinksDialog dlg(links, 0);
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            trk.setLinks(links);
-        }
-        setupGui();
-    }
-    else
-    {
-        QDesktopServices::openUrl(url);
-    }
-}
diff --git a/.hg/Trashcan/CDetailsWpt_JkBB6Z.h.bak b/.hg/Trashcan/CDetailsWpt_JkBB6Z.h.bak
deleted file mode 100644
index 2a09d32..0000000
--- a/.hg/Trashcan/CDetailsWpt_JkBB6Z.h.bak
+++ /dev/null
@@ -1,44 +0,0 @@
-/**********************************************************************************************
-    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 CDETAILSWPT_H
-#define CDETAILSWPT_H
-
-#include <QDialog>
-#include "ui_IDetailsWpt.h"
-
-class CGisItemWpt;
-
-class CDetailsWpt : public QDialog, private Ui::IDetailsWpt
-{    
-    Q_OBJECT
-    public:
-        CDetailsWpt(CGisItemWpt& wpt, QWidget * parent);
-        virtual ~CDetailsWpt();
-
-    private slots:
-        void slotLinkActivated(const QString& link);
-        void slotChangeIcon();
-
-    private:
-        void setupGui();
-        CGisItemWpt& wpt;
-};
-
-#endif //CDETAILSWPT_H
-
diff --git a/.hg/Trashcan/CDetailsWpt_KUyyGh.cpp.bak b/.hg/Trashcan/CDetailsWpt_KUyyGh.cpp.bak
deleted file mode 100644
index 487ced0..0000000
--- a/.hg/Trashcan/CDetailsWpt_KUyyGh.cpp.bak
+++ /dev/null
@@ -1,178 +0,0 @@
-/**********************************************************************************************
-    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/CDetailsWpt.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "GeoMath.h"
-#include "units/IUnit.h"
-#include "helpers/CInputDialog.h"
-#include "helpers/CPositionDialog.h"
-#include "helpers/CWptIconDialog.h"
-#include "helpers/CTextEditWidget.h"
-
-
-#include <QtWidgets>
-
-CDetailsWpt::CDetailsWpt(CGisItemWpt &wpt, QWidget *parent)
-    : QDialog(parent)
-    , wpt(wpt)
-{
-    setupUi(this);
-    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(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
-    connect(toolEditCmt, SIGNAL(clicked()), this, SLOT(slotChangeCmt()));
-    connect(toolEditDesc, SIGNAL(clicked()), this, SLOT(slotChangeDesc()));
-}
-
-CDetailsWpt::~CDetailsWpt()
-{
-
-}
-
-void CDetailsWpt::setupGui()
-{
-    setWindowTitle(wpt.getName());
-
-    QString val, unit;
-    QString strPos;
-    QPointF pos = wpt.getPosition();
-    GPS_Math_Deg_To_Str(pos.x(), pos.y(), strPos);
-
-    toolIcon->setIcon(wpt.getIcon());
-    toolIcon->setObjectName(wpt.getIconName());
-    labelName->setText(QString("<a href='name'>%1</a>").arg(wpt.getName()));
-    labelPositon->setText(QString("<a href='position'>%1</a>").arg(strPos));
-
-    if(wpt.getElevation() != NOINT)
-    {
-        IUnit::self().meter2elevation(wpt.getElevation(), val, unit);
-        labelElevation->setText(QString("<a href='elevation'>%1</a> %2").arg(val).arg(unit));
-    }
-    else
-    {
-        labelElevation->setText(QString("<a href='elevation'>--</a>"));
-    }
-
-    if(wpt.getProximity() != NOFLOAT)
-    {
-        IUnit::self().meter2elevation(wpt.getProximity(), val, unit);
-        labelProximity->setText(QString("<a href='proximity'>%1</a> %2").arg(val).arg(unit));
-    }
-    else
-    {
-        labelProximity->setText(QString("<a href='proximity'>--</a>"));
-    }
-
-    if(wpt.getComment().isEmpty())
-    {
-        labelCmt->setText(tr("no comment"));
-    }
-    else
-    {
-        labelCmt->setText(wpt.getComment());
-    }
-
-    if(wpt.getDescription().isEmpty())
-    {
-        labelDesc->setText(tr("no description"));
-    }
-    else
-    {
-        labelDesc->setText(wpt.getDescription());
-    }
-
-}
-
-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());
-        if(name.isEmpty())
-        {
-            return;
-        }
-        wpt.setName(name);
-    }
-    else if(link == "elevation")
-    {
-        QVariant var(wpt.getElevation());
-        CInputDialog dlg(0, tr("Enter new elevation."), var, QVariant(NOINT));
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setElevation(var.toInt());
-        }
-    }
-    else if(link == "proximity")
-    {
-        QVariant var(wpt.getProximity());
-        CInputDialog dlg(0, tr("Enter new proximity range."), var, QVariant(NOFLOAT));
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setProximity(var.toDouble());
-        }
-    }
-    else if(link == "position")
-    {
-        QPointF pos = wpt.getPosition();
-        CPositionDialog dlg(0, pos);
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setPosition(pos);
-        }
-    }
-
-    setupGui();
-}
-
-void CDetailsWpt::slotChangeIcon()
-{
-
-    CWptIconDialog dlg(toolIcon);
-    if(dlg.exec() == QDialog::Accepted)
-    {
-        wpt.setIcon(toolIcon->objectName());
-        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/CDetailsWpt_VqnTW1.cpp.bak b/.hg/Trashcan/CDetailsWpt_VqnTW1.cpp.bak
deleted file mode 100644
index 4a2b8fe..0000000
--- a/.hg/Trashcan/CDetailsWpt_VqnTW1.cpp.bak
+++ /dev/null
@@ -1,153 +0,0 @@
-/**********************************************************************************************
-    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/CDetailsWpt.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "GeoMath.h"
-#include "units/IUnit.h"
-#include "helpers/CInputDialog.h"
-#include "helpers/CPositionDialog.h"
-#include "helpers/CWptIconDialog.h"
-
-
-#include <QtWidgets>
-
-CDetailsWpt::CDetailsWpt(CGisItemWpt &wpt, QWidget *parent)
-    : QDialog(parent)
-    , wpt(wpt)
-{
-    setupUi(this);
-    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(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
-}
-
-CDetailsWpt::~CDetailsWpt()
-{
-
-}
-
-void CDetailsWpt::setupGui()
-{
-    setWindowTitle(wpt.getName());
-
-    QString val, unit;
-    QString strPos;
-    QPointF pos = wpt.getPosition();
-    GPS_Math_Deg_To_Str(pos.x(), pos.y(), strPos);
-
-    toolIcon->setIcon(wpt.getIcon());
-    toolIcon->setObjectName(wpt.getIconName());
-    labelName->setText(QString("<a href='name'>%1</a>").arg(wpt.getName()));
-    labelPositon->setText(QString("<a href='position'>%1</a>").arg(strPos));
-
-    if(wpt.getElevation() != NOINT)
-    {
-        IUnit::self().meter2elevation(wpt.getElevation(), val, unit);
-        labelElevation->setText(QString("<a href='elevation'>%1</a> %2").arg(val).arg(unit));
-    }
-    else
-    {
-        labelElevation->setText(QString("<a href='elevation'>--</a>"));
-    }
-
-    if(wpt.getProximity() != NOFLOAT)
-    {
-        IUnit::self().meter2elevation(wpt.getProximity(), val, unit);
-        labelProximity->setText(QString("<a href='proximity'>%1</a> %2").arg(val).arg(unit));
-    }
-    else
-    {
-        labelProximity->setText(QString("<a href='proximity'>--</a>"));
-    }
-
-    if(wpt.getComment().isEmpty())
-    {
-        labelCmt->setText(tr("no comment"));
-    }
-    else
-    {
-        labelCmt->setText(wpt.getComment());
-    }
-
-    if(wpt.getDescription().isEmpty())
-    {
-        labelDesc->setText(tr("no description"));
-    }
-    else
-    {
-        labelDesc->setText(wpt.getDescription());
-    }
-
-}
-
-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());
-        if(name.isEmpty())
-        {
-            return;
-        }
-        wpt.setName(name);
-    }
-    else if(link == "elevation")
-    {
-        QVariant var(wpt.getElevation());
-        CInputDialog dlg(0, tr("Enter new elevation."), var, QVariant(NOINT));
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setElevation(var.toInt());
-        }
-    }
-    else if(link == "proximity")
-    {
-        QVariant var(wpt.getProximity());
-        CInputDialog dlg(0, tr("Enter new proximity range."), var, QVariant(NOFLOAT));
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setProximity(var.toDouble());
-        }
-    }
-    else if(link == "position")
-    {
-        QPointF pos = wpt.getPosition();
-        CPositionDialog dlg(0, pos);
-        if(dlg.exec() == QDialog::Accepted)
-        {
-            wpt.setPosition(pos);
-        }
-    }
-
-    setupGui();
-}
-
-void CDetailsWpt::slotChangeIcon()
-{
-
-    CWptIconDialog dlg(toolIcon);
-    if(dlg.exec() == QDialog::Accepted)
-    {
-        wpt.setIcon(toolIcon->objectName());
-        setupGui();
-    }
-}
diff --git a/.hg/Trashcan/CDetailsWpt_wgDUq1.h.bak b/.hg/Trashcan/CDetailsWpt_wgDUq1.h.bak
deleted file mode 100644
index fe76a7c..0000000
--- a/.hg/Trashcan/CDetailsWpt_wgDUq1.h.bak
+++ /dev/null
@@ -1,46 +0,0 @@
-/**********************************************************************************************
-    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 CDETAILSWPT_H
-#define CDETAILSWPT_H
-
-#include <QDialog>
-#include "ui_IDetailsWpt.h"
-
-class CGisItemWpt;
-
-class CDetailsWpt : public QDialog, private Ui::IDetailsWpt
-{    
-    Q_OBJECT
-    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 //CDETAILSWPT_H
-
diff --git a/.hg/Trashcan/CDiskCache_ZGaMAX.cpp.bak b/.hg/Trashcan/CDiskCache_ZGaMAX.cpp.bak
deleted file mode 100644
index c3a1b7b..0000000
--- a/.hg/Trashcan/CDiskCache_ZGaMAX.cpp.bak
+++ /dev/null
@@ -1,156 +0,0 @@
-/**********************************************************************************************
-    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 "CDiskCache.h"
-
-#include <QtWidgets>
-
-CDiskCache::CDiskCache(const QString &path, qint32 size, qint32 days, QObject * parent)
-    : IDiskCache(parent)
-    , dir(path)
-    , size(size)
-    , expiration(days)
-    , dummy(256,256, QImage::Format_ARGB32)
-{
-    dummy.fill(Qt::transparent);
-
-    dir.mkpath(dir.path());
-    QFileInfoList files = dir.entryInfoList(QStringList("*.png"), QDir::Files);
-    foreach(const QFileInfo &fileinfo, files)
-    {
-        QString hash    = fileinfo.baseName();
-        table[hash]     = fileinfo.fileName();
-    }
-
-    timer = new QTimer(this);
-    timer->setSingleShot(false);
-    timer->start(20000);
-    connect(timer, SIGNAL(timeout()), this, SLOT(slotCleanup()));
-}
-
-CDiskCache::~CDiskCache()
-{
-}
-
-void CDiskCache::store(const QString& key, QImage& img)
-{
-    QMutexLocker lock(&mutex);
-
-    QCryptographicHash md5(QCryptographicHash::Md5);
-    md5.addData(key.toLatin1());
-
-    QString hash        = md5.result().toHex();
-    QString filename    = QString("%1.png").arg(hash);
-
-    if(!img.isNull())
-    {
-        img.save(dir.absoluteFilePath(filename));
-        table[hash] = filename;
-        cache[hash] = img;
-    }
-    else
-    {
-        cache[hash] = dummy;
-    }
-}
-
-void CDiskCache::restore(const QString& key, QImage& img)
-{
-    QMutexLocker lock(&mutex);
-
-    QCryptographicHash md5(QCryptographicHash::Md5);
-    md5.addData(key.toLatin1());
-
-    QString hash = md5.result().toHex();
-
-    if(cache.contains(hash))
-    {
-        img = cache[hash];
-    }
-    else if(table.contains(hash))
-    {
-        img.load(dir.absoluteFilePath(table[hash]));
-        if(!cache.contains(hash))
-        {
-            cache[hash] = img;
-        }
-    }
-    else
-    {
-        img = QImage();
-    }
-}
-
-bool CDiskCache::contains(const QString& key)
-{
-    QMutexLocker lock(&mutex);
-
-    QCryptographicHash md5(QCryptographicHash::Md5);
-    md5.addData(key.toLatin1());
-
-    QString hash = md5.result().toHex();
-    return table.contains(hash) || cache.contains(hash);
-}
-
-void CDiskCache::slotCleanup()
-{
-    QMutexLocker lock(&mutex);
-
-    QFileInfoList files = dir.entryInfoList(QStringList("*.png"), QDir::Files);
-    QDateTime now       = QDateTime::currentDateTime();
-    int days            = expiration;
-    qint32 maxSize      = size * 1024 * 1024;
-    qint32 tmpSize      = 0;
-    // expire old files and calculate cache size
-    foreach(const QFileInfo &fileinfo, files)
-    {
-        if(fileinfo.lastModified().daysTo(now) > days)
-        {
-            QString hash = fileinfo.baseName();
-            table.remove(hash);
-            cache.remove(hash);
-            QFile::remove(fileinfo.absoluteFilePath());
-            qDebug() << "remove old tile" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
-        }
-        else
-        {
-            tmpSize += fileinfo.size();
-        }
-    }
-
-    if(tmpSize > maxSize)
-    {
-        // if cache is still too large remove oldest files
-        foreach(const QFileInfo &fileinfo, files)
-        {
-            QString hash = fileinfo.baseName();
-            table.remove(hash);
-            cache.remove(hash);
-            QFile::remove(fileinfo.absoluteFilePath());
-
-            qDebug() << "remove" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
-
-            tmpSize -= fileinfo.size();
-
-            if(tmpSize < maxSize)
-            {
-                break;
-            }
-        }
-    }
-}
diff --git a/.hg/Trashcan/CDiskCache_ceXfpe.cpp.bak b/.hg/Trashcan/CDiskCache_ceXfpe.cpp.bak
deleted file mode 100644
index 7b8cf5f..0000000
--- a/.hg/Trashcan/CDiskCache_ceXfpe.cpp.bak
+++ /dev/null
@@ -1,157 +0,0 @@
-/**********************************************************************************************
-    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 "CDiskCache.h"
-
-#include <QtWidgets>
-
-CDiskCache::CDiskCache(const QString &path, qint32 size, qint32 days, QObject * parent)
-    : IDiskCache(parent)
-    , dir(path)
-    , size(size)
-    , expiration(days)
-    , dummy(256,256, QImage::Format_ARGB32)
-{
-    dummy.fill(Qt::transparent);
-
-    dir.mkpath(dir.path());
-    QFileInfoList files = dir.entryInfoList(QStringList("*.png"), QDir::Files);
-    foreach(const QFileInfo &fileinfo, files)
-    {
-        QString hash    = fileinfo.baseName();
-        table[hash]     = fileinfo.fileName();
-    }
-
-    timer = new QTimer(this);
-    timer->setSingleShot(false);
-    timer->start(20000);
-    connect(timer, SIGNAL(timeout()), this, SLOT(slotCleanup()));
-}
-
-CDiskCache::~CDiskCache()
-{
-}
-
-void CDiskCache::store(const QString& key, QImage& img)
-{
-    QMutexLocker lock(&mutex);
-
-    QCryptographicHash md5(QCryptographicHash::Md5);
-    md5.addData(key.toLatin1());
-
-    QString hash        = md5.result().toHex();
-    QString filename    = QString("%1.png").arg(hash);
-
-    if(!img.isNull())
-    {
-        img.save(dir.absoluteFilePath(filename));
-        table[hash] = filename;
-        cache[hash] = img;
-    }
-    else
-    {
-        cache[hash] = dummy;
-    }
-}
-
-void CDiskCache::restore(const QString& key, QImage& img)
-{
-    QMutexLocker lock(&mutex);
-
-    QCryptographicHash md5(QCryptographicHash::Md5);
-    md5.addData(key.toLatin1());
-
-    QString hash = md5.result().toHex();
-
-    if(cache.contains(hash))
-    {
-        img = cache[hash];
-    }
-    else if(table.contains(hash))
-    {
-        img.load(dir.absoluteFilePath(table[hash]));
-        if(!cache.contains(hash))
-        {
-            cache[hash] = img;
-        }
-    }
-    else
-    {
-        img = QImage();
-    }
-}
-
-bool CDiskCache::contains(const QString& key)
-{
-    QMutexLocker lock(&mutex);
-
-    QCryptographicHash md5(QCryptographicHash::Md5);
-    md5.addData(key.toLatin1());
-
-    QString hash = md5.result().toHex();
-    return table.contains(hash) || cache.contains(hash);
-}
-
-void CDiskCache::slotCleanup()
-{
-    QMutexLocker lock(&mutex);
-
-    QFileInfoList files = dir.entryInfoList(QStringList("*.png"), QDir::Files);
-    QDateTime now       = QDateTime::currentDateTime();
-    int days            = expiration;
-    qint32 maxSize      = size * 1024 * 1024;
-    qint32 tmpSize      = 0;
-    // expire old files and calculate cache size
-    foreach(const QFileInfo &fileinfo, files)
-    {
-        if(fileinfo.lastModified().daysTo(now) > days)
-        {
-            QString hash = fileinfo.baseName();
-            table.remove(hash);
-            cache.remove(hash);
-            QFile::remove(fileinfo.absoluteFilePath());
-            qDebug() << "remove old tile" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
-        }
-        else
-        {
-            tmpSize += fileinfo.size();
-        }
-    }
-
-    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)
-        {
-            QString hash = fileinfo.baseName();
-            table.remove(hash);
-            cache.remove(hash);
-            QFile::remove(fileinfo.absoluteFilePath());
-
-            qDebug() << "remove" << fileinfo.lastModified() << fileinfo.absoluteFilePath();
-
-            tmpSize -= fileinfo.size();
-
-            if(tmpSize < maxSize)
-            {
-                break;
-            }
-        }
-    }
-}
diff --git a/.hg/Trashcan/CGisItemTrk_RakRPD.cpp.bak b/.hg/Trashcan/CGisItemTrk_RakRPD.cpp.bak
deleted file mode 100644
index 4129b73..0000000
--- a/.hg/Trashcan/CGisItemTrk_RakRPD.cpp.bak
+++ /dev/null
@@ -1,1729 +0,0 @@
-/**********************************************************************************************
-    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/CGisDraw.h"
-#include "gis/CGisWidget.h"
-#include "gis/prj/IGisProject.h"
-#include "gis/trk/CCombineTrk.h"
-#include "gis/trk/CDetailsTrk.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/trk/CScrOptTrk.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "plot/IPlot.h"
-
-#include <QtWidgets>
-#include <QtXml>
-#include <proj_api.h>
-
-#define ASCEND_THRESHOLD    5
-#define DEFAULT_COLOR       4
-#define MIN_DIST_CLOSE_TO   10
-#define MIN_DIST_FOCUS      40
-
-const QColor CGisItemTrk::lineColors[TRK_N_COLORS] =
-{
-    Qt::black                     // 0
-    ,Qt::darkRed                 // 1
-    ,Qt::darkGreen               // 2
-    ,Qt::darkYellow              // 3
-    ,Qt::darkBlue                // 4
-    ,Qt::darkMagenta             // 5
-    ,Qt::darkCyan                // 6
-    ,Qt::gray                    // 7
-    ,Qt::darkGray                // 8
-    ,Qt::red                     // 9
-    ,Qt::green                   // 10
-    ,Qt::yellow                  // 11
-    ,Qt::blue                    // 12
-    ,Qt::magenta                 // 13
-    ,Qt::cyan                    // 14
-    ,Qt::white                   // 15
-    ,Qt::transparent             // 16
-};
-
-const QString CGisItemTrk::bulletColors[TRK_N_COLORS] =
-{
-    // 0
-    QString("://icons/8x8/bullet_black.png")
-    // 1
-    ,QString("://icons/8x8/bullet_dark_red.png")
-    // 2
-    ,QString("://icons/8x8/bullet_dark_green.png")
-    // 3
-    ,QString("://icons/8x8/bullet_dark_yellow.png")
-    // 4
-    ,QString("://icons/8x8/bullet_dark_blue.png")
-    // 5
-    ,QString("://icons/8x8/bullet_dark_magenta.png")
-    // 6
-    ,QString("://icons/8x8/bullet_dark_cyan.png")
-    // 7
-    ,QString("://icons/8x8/bullet_gray.png")
-    // 8
-    ,QString("://icons/8x8/bullet_dark_gray.png")
-    // 9
-    ,QString("://icons/8x8/bullet_red.png")
-    // 10
-    ,QString("://icons/8x8/bullet_green.png")
-    // 11
-    ,QString("://icons/8x8/bullet_yellow.png")
-    // 12
-    ,QString("://icons/8x8/bullet_blue.png")
-    // 13
-    ,QString("://icons/8x8/bullet_magenta.png")
-    // 14
-    ,QString("://icons/8x8/bullet_cyan.png")
-    // 15
-    ,QString("://icons/8x8/bullet_white.png")
-    ,QString("")                 // 16
-};
-
-
-
-const QPen CGisItemTrk::penBackground(Qt::white, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-
-IGisItem::key_t CGisItemTrk::keyUserFocus;
-
-CGisItemTrk::CGisItemTrk(const QString &name, qint32 idx1, qint32 idx2, const trk_t& srctrk, IGisProject * project)
-    : IGisItem(project, eTypeTrk, -1)
-    , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , drawMode(eDrawNormal)
-    , mouseMoveFocus(0)
-    , mouseClickFocus(0)
-{
-    flags = eFlagCreatedInQms;
-
-    foreach(const trkseg_t &srcseg, srctrk.segs)
-    {
-        trkseg_t seg;
-        foreach(const trkpt_t &srcpt, srcseg.pts)
-        {
-            if(srcpt.idxTotal < idx1)
-            {
-                continue;
-            }
-            if(srcpt.idxTotal > idx2)
-            {
-                break;
-            }
-
-            seg.pts << srcpt;
-        }
-
-        if(!seg.pts.isEmpty())
-        {
-            trk.segs << seg;
-        }
-    }
-
-    trk.name    = name;
-    trk.cmt     = srctrk.cmt;
-    trk.desc    = srctrk.desc;
-    trk.src     = srctrk.src;
-    trk.links   = srctrk.links;
-    trk.number  = srctrk.number;
-    trk.type    = srctrk.type;
-
-    deriveSecondaryData();
-    setupHistory();
-    updateDecoration(eMarkChanged, eMarkNone);
-}
-
-CGisItemTrk::CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject *project, int idx, bool clone)
-    : IGisItem(project, eTypeTrk, idx)
-    , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , drawMode(eDrawNormal)
-    , mouseMoveFocus(0)
-    , mouseClickFocus(0)
-{
-    *this = parentTrk;
-    key.project = project->getKey();
-    key.device  = project->getDeviceKey();
-    registeredPlots.clear();
-
-    if(clone)
-    {
-        trk.name += QObject::tr("_Clone");
-        key.clear();
-        history.events.clear();
-    }
-
-    deriveSecondaryData();
-    setupHistory();
-    updateDecoration(eMarkChanged, eMarkNone);
-}
-
-
-CGisItemTrk::CGisItemTrk(const QPolygonF& l, const QString& name, IGisProject * project, int idx)
-    : IGisItem(project, eTypeTrk, idx)
-    , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , drawMode(eDrawNormal)
-    , mouseMoveFocus(0)
-    , mouseClickFocus(0)
-{
-    trk.name = name;
-    readTrackDataFromPolyLine(l);
-
-    flags |=  eFlagCreatedInQms|eFlagWriteAllowed;
-    setColor(str2color(""));
-
-    setupHistory();
-    updateDecoration(eMarkChanged, eMarkNone);
-}
-
-
-CGisItemTrk::CGisItemTrk(const QDomNode& xml, 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());
-    readTrk(xml, trk);
-    // --- stop read and process data ----
-
-    setupHistory();
-    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)
-    , drawMode(eDrawNormal)
-    , mouseMoveFocus(0)
-    , mouseClickFocus(0)
-{
-    history = hist;
-    loadHistory(hist.histIdxCurrent);
-}
-
-CGisItemTrk::CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project)
-    : IGisItem(project, eTypeTrk, -1)
-    , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , drawMode(eDrawNormal)
-    , mouseMoveFocus(0)
-    , mouseClickFocus(0)
-{
-    loadFromDb(id, db);
-}
-
-
-CGisItemTrk::~CGisItemTrk()
-{
-    // reset user focus if focused on this track
-    if(key == keyUserFocus)
-    {
-        keyUserFocus.clear();
-    }
-
-    /**
-        Delete all registerd plot as they can't exist without the item.
-        As the plot objects will unregister via unregisterPlot() in their
-        destructor things will get a bit complicated here. Better create
-        a copy of the list befor we start to delete.
-     */
-    qDeleteAll(registeredPlots.toList());
-
-    delete dlgDetails;
-}
-
-void CGisItemTrk::setSymbol()
-{
-    setColor(str2color(trk.color));
-}
-
-void CGisItemTrk::setDataFromPolyline(const QPolygonF &l)
-{
-    /*
-        as this will change the line significantly we better stop
-        all focus operations and close the detail dialog.
-     */
-    mouseClickFocus = 0;
-    mouseMoveFocus  = 0;
-    delete dlgDetails;
-
-    readTrackDataFromPolyLine(l);
-
-    flags |= eFlagTainted;
-    changed(QObject::tr("Changed trackpoints, sacrificed all previous data."), "://icons/48x48/LineMove.png");
-}
-
-void CGisItemTrk::getPolylineFromData(QPolygonF &l)
-{
-    l.clear();
-    foreach (const trkseg_t &seg, trk.segs)
-    {
-        foreach(const trkpt_t &pt, seg.pts)
-        {
-            if(pt.flags & trkpt_t::eHidden)
-            {
-                continue;
-            }
-            l << QPointF(pt.lon * DEG_TO_RAD, pt.lat * DEG_TO_RAD);
-        }
-    }
-}
-
-void CGisItemTrk::readTrackDataFromPolyLine(const QPolygonF &l)
-{
-    trk.segs.clear();
-    trk.segs.resize(1);
-    trkseg_t& seg = trk.segs.first();
-
-    seg.pts.resize(l.size());
-
-    QPolygonF ele(l.size());
-    CMainWindow::self().getEelevationAt(l, ele);
-
-    for(int i = 0; i < l.size(); i++)
-    {
-        trkpt_t& trkpt      = seg.pts[i];
-        const QPointF& pt   = l[i];
-
-        trkpt.lon = pt.x() * RAD_TO_DEG;
-        trkpt.lat = pt.y() * RAD_TO_DEG;
-        trkpt.ele = ele[i].y();
-    }
-
-    deriveSecondaryData();
-}
-
-void CGisItemTrk::registerPlot(IPlot * plot)
-{
-    registeredPlots << plot;
-}
-
-void CGisItemTrk::unregisterPlot(IPlot * plot)
-{
-    registeredPlots.remove(plot);
-}
-
-
-
-QString CGisItemTrk::getInfo() const
-{
-    QString val1, unit1, val2, unit2;
-    QString str = "<div style='font-weight: bold;'>" + getName() + "</div>";
-
-    if(cntVisiblePoints == 0)
-    {
-        return str;
-    }
-
-    IUnit::self().meter2distance(totalDistance, val1, unit1);
-    str += "<br/>\n";
-    str += QObject::tr("Length: %1 %2").arg(val1).arg(unit1);
-
-    if(totalAscend != NOFLOAT && totalDescend != NOFLOAT)
-    {
-        IUnit::self().meter2elevation(totalAscend, val1, unit1);
-        IUnit::self().meter2elevation(totalDescend, val2, unit2);
-
-        str += QObject::tr(", %1%2 %3, %4%5 %6").arg(QChar(0x2197)).arg(val1).arg(unit1).arg(QChar(0x2198)).arg(val2).arg(unit2);
-    }
-
-
-    if(totalElapsedSeconds != NOTIME)
-    {
-        IUnit::self().seconds2time(totalElapsedSeconds, val1, unit1);
-        str += "<br/>\n";
-        str += QObject::tr("Time: %1").arg(val1);
-
-        IUnit::self().meter2speed(totalDistance / totalElapsedSeconds, val1, unit1);
-        str += QObject::tr(", Speed: %1 %2").arg(val1).arg(unit1);
-    }
-
-    if(totalElapsedSecondsMoving != NOTIME)
-    {
-        IUnit::self().seconds2time(totalElapsedSecondsMoving, val1, unit1);
-        str += "<br/>\n";
-        str += QObject::tr("Moving: %1").arg(val1);
-
-        IUnit::self().meter2speed(totalDistance / totalElapsedSecondsMoving, val1, unit1);
-        str += QObject::tr(", Speed: %1 %2").arg(val1).arg(unit1);
-    }
-
-    if(timeStart.isValid())
-    {
-        str += "<br/>\n";
-        str += QObject::tr("Start: %1").arg(IUnit::datetime2string(timeStart, false, boundingRect.center()));
-    }
-    if(timeEnd.isValid())
-    {
-        str += "<br/>\n";
-        str += QObject::tr("End: %1").arg(IUnit::datetime2string(timeEnd, false, boundingRect.center()));
-    }
-
-    str += "<br/>\n";
-    str += QObject::tr("Points: %1 (%2)").arg(cntVisiblePoints).arg(cntTotalPoints);
-
-
-    return str;
-}
-
-QString CGisItemTrk::getInfoRange()
-{
-    qreal tmp, d, slope1, slope2;
-    QString str, val, unit;
-    if(mouseClickFocus == 0 || mouseMoveFocus == 0)
-    {
-        return str;
-    }
-
-    int idx1 = mouseClickFocus->idxTotal;
-    int idx2 = mouseMoveFocus->idxTotal;
-    const trkpt_t * pt1, * pt2;
-    if(idx1 < idx2)
-    {
-        pt1 = mouseClickFocus;
-        pt2 = mouseMoveFocus;
-    }
-    else
-    {
-        pt1 = mouseMoveFocus;
-        pt2 = mouseClickFocus;
-    }
-
-    d = tmp = pt2->distance - pt1->distance;
-    IUnit::self().meter2distance(tmp, val, unit);
-    str += QString("%3 %1%2\n").arg(val).arg(unit).arg(QChar(0x21A6));
-    if(pt1->time.isValid() && pt2->time.isValid())
-    {
-        quint32 t  = pt2->time.toTime_t() - pt1->time.toTime_t();
-        quint32 hh = t / 3600;
-        quint32 mm = (t - hh * 3600) / 60;
-        quint32 ss = (t - hh * 3600 - mm * 60);
-
-        str += QString("%4 %1:%2:%3\n").arg(hh,2,10,QChar('0')).arg(mm,2,10,QChar('0')).arg(ss,2,10,QChar('0')).arg(QChar(0x231a));
-    }
-
-    tmp       = atan((pt2->ascend - pt1->ascend)/d);
-    slope1    = qAbs(tmp * 360.0/(2 * M_PI));
-    slope2    = qTan(slope1 * DEG_TO_RAD) * 100;
-
-    IUnit::self().meter2elevation(pt2->ascend - pt1->ascend, val, unit);
-    str += QString("%3 %1%2 (%4%5, %6%)\n").arg(val).arg(unit).arg(QChar(0x2197)).arg(qRound(slope1)).arg(QChar(0260)).arg(qRound(slope2));
-
-    tmp       = atan((pt2->descend - pt1->descend)/d);
-    slope1    = qAbs(tmp * 360.0/(2 * M_PI));
-    slope2    = qTan(slope1 * DEG_TO_RAD) * 100;
-
-    IUnit::self().meter2elevation(pt2->descend - pt1->descend, val, unit);
-    str += QString("%3 %1%2 (%4%5, %6%)").arg(val).arg(unit).arg(QChar(0x2198)).arg(qRound(slope1)).arg(QChar(0260)).arg(qRound(slope2));
-
-
-    return str;
-}
-
-QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
-{
-    QString str, val1, unit1;
-    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)
-    {
-        str += QObject::tr(" slope: %1%3 (%2%)").arg(pt.slope1, 2, 'f', 0).arg(pt.slope2, 2, 'f', 0).arg(QChar(0260));
-    }
-    if(pt.speed != NOFLOAT)
-    {
-        IUnit::self().meter2speed(pt.speed, val1, unit1);
-        str += QObject::tr(" speed: %1%2").arg(val1).arg(unit1);
-    }
-
-    return str;
-}
-
-QString CGisItemTrk::getInfoProgress(const trkpt_t& pt)
-{
-    QString str, val, unit;
-    if(pt.ascend != NOFLOAT)
-    {
-        IUnit::self().meter2elevation(pt.ascend, val, unit);
-        str += QObject::tr("Ascend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.ascend * 100/totalAscend, 2,'f',0);
-    }
-    else
-    {
-        str += QObject::tr("Ascend: - (-)");
-    }
-
-    if(pt.descend != NOFLOAT)
-    {
-        IUnit::self().meter2elevation(pt.descend, val, unit);
-        str += QObject::tr(" Descend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.descend * 100/totalDescend, 2,'f',0);
-    }
-    else
-    {
-        str += QObject::tr(" Descend: - (-) ");
-    }
-
-    str += "\n";
-    if(pt.distance != NOFLOAT)
-    {
-        IUnit::self().meter2distance(pt.distance, val, unit);
-        str += QObject::tr("Dist.: %1%2 (%3%)").arg(val).arg(unit).arg(pt.distance * 100/totalDistance, 2,'f',0);
-    }
-    else
-    {
-        str += QObject::tr("Dist.: - (-)");
-    }
-
-    if(pt.elapsedSeconds != NOFLOAT)
-    {
-        IUnit::self().seconds2time(pt.elapsedSecondsMoving, val, unit);
-        str += QObject::tr(" Moving: %1%2 (%3%)").arg(val).arg(unit).arg(pt.elapsedSecondsMoving * 100/totalElapsedSecondsMoving, 2,'f',0);
-    }
-    else
-    {
-        str += QObject::tr(" Moving: - (-) ");
-    }
-
-    return str;
-}
-
-IScrOpt * CGisItemTrk::getScreenOptions(const QPoint& origin, IMouse * mouse)
-{
-    if(scrOpt.isNull())
-    {
-        scrOpt = new CScrOptTrk(this, origin, mouse);
-    }
-    return scrOpt;
-}
-
-QPointF CGisItemTrk::getPointCloseBy(const QPoint& screenPos)
-{
-    qint32 i    = 0;
-    qint32 idx  = -1;
-    qint32 d   = NOINT;
-    foreach(const QPointF &point, lineSimple)
-    {
-        int tmp = (screenPos - point).manhattanLength();
-        if(tmp < d)
-        {
-            idx = i;
-            d   = tmp;
-        }
-        i++;
-    }
-
-    if(idx < 0)
-    {
-        return NOPOINTF;
-    }
-
-    const trkpt_t * newPointOfFocus = getVisibleTrkPtByIndex(idx);
-    publishMouseFocus(newPointOfFocus, eFocusMouseClick, 0);
-
-    return lineSimple[idx];
-}
-
-
-#define WINDOW 25
-
-void CGisItemTrk::deriveSecondaryData()
-{
-    qreal north = -90;
-    qreal east  = -180;
-    qreal south =  90;
-    qreal west  =  180;
-
-    // reset all secondary data
-    cntTotalPoints          = 0;
-    cntVisiblePoints        = 0;
-    timeStart               = QDateTime();
-    timeEnd                 = QDateTime();
-    totalDistance           = NOFLOAT;
-    totalAscend             = NOFLOAT;
-    totalDescend            = NOFLOAT;
-    totalElapsedSeconds     = NOTIME;
-    totalElapsedSecondsMoving = NOTIME;
-
-
-    // remove empty segments
-    QVector<trkseg_t>::iterator i = trk.segs.begin();
-    while(i != trk.segs.end())
-    {
-        if((*i).pts.isEmpty())
-        {
-            i = trk.segs.erase(i);
-            continue;
-        }
-        i++;
-    }
-
-    // no segments -> no data -> nothing to do
-    if(trk.segs.isEmpty())
-    {
-        return;
-    }
-
-    trkpt_t * lastTrkpt     = 0;
-    qreal timestampStart    = NOFLOAT;
-    qreal lastEle           = NOFLOAT;
-
-    for(int s = 0; s < trk.segs.size(); s++)
-    {
-        trkseg_t& seg = trk.segs[s];
-
-        for(int p = 0; p < seg.pts.size(); p++)
-        {
-            trkpt_t& trkpt = seg.pts[p];
-
-            trkpt.idxTotal = cntTotalPoints++;
-            if(trkpt.flags & trkpt_t::eHidden)
-            {
-                trkpt.reset();
-                continue;
-            }
-            trkpt.idxVisible = cntVisiblePoints++;
-
-            if(trkpt.lon < west)
-            {
-                west    = trkpt.lon;
-            }
-            if(trkpt.lon > east)
-            {
-                east    = trkpt.lon;
-            }
-            if(trkpt.lat < south)
-            {
-                south   = trkpt.lat;
-            }
-            if(trkpt.lat > north)
-            {
-                north   = trkpt.lat;
-            }
-
-            if(lastTrkpt != 0)
-            {
-                trkpt.deltaDistance     = GPS_Math_Distance(lastTrkpt->lon * DEG_TO_RAD, lastTrkpt->lat * DEG_TO_RAD, trkpt.lon * DEG_TO_RAD, trkpt.lat * DEG_TO_RAD);
-                trkpt.distance          = lastTrkpt->distance + trkpt.deltaDistance;
-                trkpt.elapsedSeconds    = trkpt.time.toMSecsSinceEpoch()/1000.0 - timestampStart;
-
-                // ascend descend
-                if(lastEle != NOFLOAT)
-                {
-                    qreal delta     = trkpt.ele - lastEle;
-                    qreal absDelta  = qAbs(delta);
-
-                    if(absDelta > ASCEND_THRESHOLD)
-                    {
-                        if(delta > 0)
-                        {
-                            trkpt.ascend  = lastTrkpt->ascend + delta;
-                            trkpt.descend = lastTrkpt->descend;
-                        }
-                        else
-                        {
-                            trkpt.ascend  = lastTrkpt->ascend;
-                            trkpt.descend = lastTrkpt->descend - delta;
-                        }
-                        lastEle = trkpt.ele;
-                    }
-                    else
-                    {
-                        trkpt.ascend     = lastTrkpt->ascend;
-                        trkpt.descend    = lastTrkpt->descend;
-                    }
-                }
-
-                // time moving
-                qreal dt = (trkpt.time.toMSecsSinceEpoch() - lastTrkpt->time.toMSecsSinceEpoch()) / 1000.0;
-                if(dt > 0 && ((trkpt.deltaDistance / dt) > 0.2))
-                {
-                    trkpt.elapsedSecondsMoving = lastTrkpt->elapsedSecondsMoving + dt;
-                }
-                else
-                {
-                    trkpt.elapsedSecondsMoving = lastTrkpt->elapsedSecondsMoving;
-                }
-            }
-            else
-            {
-                timeStart       = trkpt.time;
-                timestampStart  = timeStart.toMSecsSinceEpoch()/1000.0;
-                lastEle         = trkpt.ele;
-
-                trkpt.deltaDistance         = 0;
-                trkpt.distance              = 0;
-                trkpt.ascend                = 0;
-                trkpt.descend               = 0;
-                trkpt.elapsedSeconds        = 0;
-                trkpt.elapsedSecondsMoving  = 0;
-            }
-
-            lastTrkpt = &trkpt;
-        }
-    }
-
-    boundingRect = QRectF(QPointF(west * DEG_TO_RAD, north * DEG_TO_RAD), QPointF(east * DEG_TO_RAD,south * DEG_TO_RAD));
-
-    // speed and slope (short average +-25m)
-    for(int s = 0; s < trk.segs.size(); s++)
-    {
-        trkseg_t& seg = trk.segs[s];
-
-        for(int p = 0; p < seg.pts.size(); p++)
-        {
-            trkpt_t& trkpt = seg.pts[p];
-            if(trkpt.flags & trkpt_t::eHidden)
-            {
-                continue;
-            }
-
-            qreal d1 = trkpt.distance;
-            qreal e1 = trkpt.ele;
-            qreal t1 = trkpt.time.toMSecsSinceEpoch() / 1000.0;
-            int n = p;
-
-            while(n>0)
-            {
-                trkpt_t & trkpt2 = seg.pts[n];
-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT) || (!trkpt2.time.isValid()))
-                {
-                    n--;
-                    continue;
-                }
-
-                if(trkpt.distance - trkpt2.distance >= WINDOW)
-                {
-                    d1 = trkpt2.distance;
-                    e1 = trkpt2.ele;
-                    t1 = trkpt2.time.toMSecsSinceEpoch()/1000.0;
-                    break;
-                }
-                n--;
-            }
-
-            qreal d2 = trkpt.distance;
-            qreal e2 = trkpt.ele;
-            qreal t2 = trkpt.time.toMSecsSinceEpoch() / 1000.0;
-            n = p;
-            while(n < seg.pts.size())
-            {
-                trkpt_t & trkpt2 = seg.pts[n];;
-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT))
-                {
-                    n++;
-                    continue;
-                }
-
-                if(trkpt2.distance - trkpt.distance >= WINDOW)
-                {
-                    d2 = trkpt2.distance;
-                    e2 = trkpt2.ele;
-                    t2 = trkpt2.time.toMSecsSinceEpoch() / 1000.0;
-                    break;
-                }
-                n++;
-            }
-
-            qreal a         = atan((e2 - e1)/(d2 - d1));
-            trkpt.slope1    = qAbs(a * 360.0/(2 * M_PI));
-            trkpt.slope2    = qTan(trkpt.slope1 * DEG_TO_RAD) * 100;
-
-            if((t2 - t1) > 0)
-            {
-                trkpt.speed         = (d2 - d1) / (t2 - t1);
-                trkpt.rateAscent    = (e2 - e1) / (t2 - t1);
-            }
-            else
-            {
-                trkpt.speed         = NOFLOAT;
-                trkpt.rateAscent    = NOFLOAT;
-            }
-        }
-    }
-
-
-
-    if(lastTrkpt != 0)
-    {
-        timeEnd                 = lastTrkpt->time;
-        totalDistance           = lastTrkpt->distance;
-        totalAscend             = lastTrkpt->ascend;
-        totalDescend            = lastTrkpt->descend;
-        totalElapsedSeconds     = lastTrkpt->elapsedSeconds;
-        totalElapsedSecondsMoving = lastTrkpt->elapsedSecondsMoving;
-    }
-
-//    qDebug() << "--------------" << getName() << "------------------";
-//    qDebug() << "totalDistance" << totalDistance;
-//    qDebug() << "totalAscend" << totalAscend;
-//    qDebug() << "totalDescend" << totalDescend;
-//    qDebug() << "totalElapsedSeconds" << totalElapsedSeconds;
-//    qDebug() << "totalElapsedSecondsMoving" << totalElapsedSecondsMoving;
-}
-
-struct trkwpt_t
-{
-    trkwpt_t() : x(0), y(0), idx(-1), lastDistance(20*20)
-    {
-    }
-
-    qreal x;
-    qreal y;
-    IGisItem::key_t key;
-    qint32 idx;
-    qreal lastDistance;
-};
-
-void CGisItemTrk::findWaypointsCloseBy()
-{
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project == 0)
-    {
-        return;
-    }
-
-    QVector<pointDP> line;
-
-    // combine all segments to a single line
-    foreach (const trkseg_t &seg, trk.segs)
-    {
-        foreach(const trkpt_t &pt, seg.pts)
-        {
-            if(pt.flags & CGisItemTrk::trkpt_t::eHidden)
-            {
-                continue;
-            }
-            pointDP dp;
-            dp.x    = pt.lon * DEG_TO_RAD;
-            dp.y    = pt.lat * DEG_TO_RAD;
-            dp.idx  = pt.idxTotal;
-            line << dp;
-        }
-    }
-
-    // convert coodinates of all waypoints into meter coordinates relative to the first track point
-    point3D pt0 = line[0];
-    QList<trkwpt_t> trkwpts;
-    for(int i=0; i < project->childCount(); i++)
-    {
-        CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(project->child(i));
-        if(wpt == 0)
-        {
-            continue;
-        }
-
-        QPointF pos;
-        pos = wpt->getPosition();
-
-        trkwpt_t trkwpt;
-        trkwpt.x      = pos.x() * DEG_TO_RAD;
-        trkwpt.y      = pos.y() * DEG_TO_RAD;
-        trkwpt.key    = wpt->getKey();
-
-        qreal a1, a2;
-        qreal d = GPS_Math_Distance(pt0.x, pt0.y, trkwpt.x, trkwpt.y, a1, a2);
-
-        trkwpt.x = cos(a1 * DEG_TO_RAD) * d;
-        trkwpt.y = sin(a1 * DEG_TO_RAD) * d;
-
-        trkwpts << trkwpt;
-    }
-
-
-    // convert all coordinates into meter relative to the first track point.
-    line[0].x = 0;
-    line[0].y = 0;
-    for(int i = 1; i < line.size(); i++)
-    {
-        qreal d, a1, a2;
-        pointDP& pt1 = line[i - 1];
-        pointDP& pt2 = line[i];
-
-        d = GPS_Math_Distance(pt0.x, pt0.y, pt2.x, pt2.y, a1, a2);
-
-        pt0 = pt2;
-
-        pt2.x = pt1.x + cos(a1 * DEG_TO_RAD) * d;
-        pt2.y = pt1.y + sin(a1 * DEG_TO_RAD) * d;
-
-        // test for waypoint close by
-        for(int n = 0; n < trkwpts.size(); n++)
-        {
-            trkwpt_t& trkwpt = trkwpts[n];
-            qreal d = (trkwpt.x - pt2.x)*(trkwpt.x - pt2.x) + (trkwpt.y - pt2.y)*(trkwpt.y - pt2.y);
-            if(d < trkwpt.lastDistance)
-            {
-                trkwpt.idx = pt2.idx;
-                trkwpt.lastDistance = d;
-            }
-        }
-    }
-}
-
-bool CGisItemTrk::isCloseTo(const QPointF& pos)
-{
-    foreach(const QPointF &pt, lineSimple)
-    {
-        if((pt - pos).manhattanLength() < MIN_DIST_CLOSE_TO)
-        {
-            return true;
-        }
-    }
-    return false;
-}
-
-void CGisItemTrk::gainUserFocus(bool yes)
-{
-    keyUserFocus    = yes ? key : key_t();
-}
-
-void CGisItemTrk::edit()
-{
-    if(dlgDetails.isNull())
-    {
-        dlgDetails = new CDetailsTrk(*this, 0);
-        dlgDetails->setObjectName(getName());
-    }
-
-    CMainWindow::self().addWidgetToTab(dlgDetails);
-}
-
-
-bool CGisItemTrk::cut()
-{
-    if(mouseClickFocus == 0)
-    {
-        return false;
-    }
-
-    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);
-    if(name1.isEmpty())
-    {
-        return false;
-    }
-
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
-    {
-        return false;
-    }
-
-    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);
-    if(name1.isEmpty())
-    {
-        return false;
-    }
-
-    project = CGisWidget::self().selectProject();
-    if(project == 0)
-    {
-        return false;
-    }
-
-    new CGisItemTrk(name1, mouseClickFocus->idxTotal, cntTotalPoints-1, trk, project);
-
-    return true;
-}
-
-void CGisItemTrk::reverse()
-{
-    QString name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + "_rev");
-    if(name1.isEmpty())
-    {
-        return;
-    }
-
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
-    {
-        return;
-    }
-
-    // start with a 1:1 copy of the first track
-    CGisItemTrk * trk1 = new CGisItemTrk(*this, project, -1, false);
-    trk1->trk.name = name1;
-    /*
-        clear track data, item key and history. To clear the history is important as
-        the original track's history would restore the original key
-
-     */
-    trk1->trk.segs.clear();
-    trk1->key.clear();
-    trk1->history.events.clear();
-
-    foreach(const trkseg_t &seg, trk.segs)
-    {
-        trkseg_t seg1;
-        foreach(const trkpt_t &pt, seg.pts)
-        {
-            trkpt_t pt1     = pt;
-            pt1.time        = QDateTime();
-
-            seg1.pts.push_front(pt1);
-        }
-        trk1->trk.segs.push_front(seg1);
-    }
-    // restore secondary data and create a new history
-    trk1->deriveSecondaryData();
-    trk1->setupHistory();
-    trk1->updateDecoration(eMarkChanged, eMarkNone);
-}
-
-void CGisItemTrk::combine()
-{
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project == 0)
-    {
-        return;
-    }
-
-    CCombineTrk dlg(*this, *project, 0);
-    dlg.exec();
-
-    QList<IGisItem::key_t> keys = dlg.getTrackKeys();
-    if(keys.isEmpty())
-    {
-        return;
-    }
-
-    QString name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + " & other");
-    if(name1.isEmpty())
-    {
-        return;
-    }
-
-    IGisProject * projectNew = CGisWidget::self().selectProject();
-    if(projectNew == 0)
-    {
-        return;
-    }
-
-    // start with a 1:1 copy of the first track
-    CGisItemTrk * trk1 = new CGisItemTrk(*this, projectNew, -1, false);
-    // replace name
-    trk1->trk.name = name1;
-
-    /*
-        clear track data, item key and history. To clear the history is important as
-        the original track's history would restore the original key
-
-     */
-    trk1->trk.segs.clear();
-    trk1->key.clear();
-    trk1->history.events.clear();
-
-    // copy the segments of all tracks to new track
-    foreach(const IGisItem::key_t &key, keys)
-    {
-        CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(project->getItemByKey(key));
-        if(trk2 == 0)
-        {
-            continue;
-        }
-
-        trk1->trk.segs += trk2->trk.segs;
-    }
-
-    // restore secondary data and create a new history
-    trk1->deriveSecondaryData();
-    trk1->setupHistory();
-    trk1->updateDecoration(eMarkChanged, eMarkNone);
-}
-
-void CGisItemTrk::hideSelectedPoints()
-{
-    if((mouseClickFocus == 0) && (mouseMoveFocus == 0))
-    {
-        return;
-    }
-
-    // read start/stop indices
-    qint32 idx1 = mouseClickFocus->idxTotal;
-    qint32 idx2 = mouseMoveFocus->idxTotal;
-    if(idx1 > idx2)
-    {
-        qSwap(idx1,idx2);
-    }
-
-    // if first index is the first point adjust index to hide it, too
-    if(idx1 == 0)
-    {
-        idx1 = -1;
-    }
-    // if second index is the last point adjust index to hide it, too
-    if(idx2 == cntTotalPoints - 1)
-    {
-        idx2 = cntTotalPoints;
-    }
-
-    // iterate over all segments and delete points between idx1 and idx2
-    for(int s = 0; s < trk.segs.size(); s++)
-    {
-        trkseg_t& seg = trk.segs[s];
-        for(int i = 0; i < seg.pts.size(); i++)
-        {
-            trkpt_t& trkpt = seg.pts[i];
-
-            if((idx1 < trkpt.idxTotal) && (trkpt.idxTotal < idx2))
-            {
-                trkpt.flags |= trkpt_t::eHidden;
-            }
-        }
-    }
-    mouseClickFocus = 0;
-    mouseMoveFocus  = 0;
-    deriveSecondaryData();
-    changed(QObject::tr("Hide points."), "://icons/48x48/PointHide.png");
-}
-
-void CGisItemTrk::showSelectedPoints()
-{
-    if((mouseClickFocus == 0) && (mouseMoveFocus == 0))
-    {
-        return;
-    }
-
-    qint32 idx1 = mouseClickFocus->idxTotal;
-    qint32 idx2 = mouseMoveFocus->idxTotal;
-
-    if(idx1 > idx2)
-    {
-        qSwap(idx1,idx2);
-    }
-
-    for(int s = 0; s < trk.segs.size(); s++)
-    {
-        trkseg_t& seg = trk.segs[s];
-        for(int i = 0; i < seg.pts.size(); i++)
-        {
-            trkpt_t& trkpt = seg.pts[i];
-
-            if((idx1 < trkpt.idxTotal) && (trkpt.idxTotal < idx2))
-            {
-                trkpt.flags &= ~trkpt_t::eHidden;
-            }
-        }
-    }
-    mouseClickFocus = 0;
-    mouseMoveFocus  = 0;
-    deriveSecondaryData();
-    changed(QObject::tr("Show points."), "://icons/48x48/PointShow.png");
-}
-
-void CGisItemTrk::copySelectedPoints()
-{
-    if((mouseClickFocus == 0) && (mouseMoveFocus == 0))
-    {
-        return;
-    }
-
-    quint32 idx1 = mouseClickFocus->idxTotal;
-    quint32 idx2 = mouseMoveFocus->idxTotal;
-
-    if(idx1 > idx2)
-    {
-        qSwap(idx1,idx2);
-    }
-
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
-    {
-        return;
-    }
-
-    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);
-    if(name1.isEmpty())
-    {
-        return;
-    }
-    new CGisItemTrk(name1, idx1, idx2, trk, project);
-}
-
-void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF> &blockedAreas, CGisDraw *gis)
-{
-    lineSimple.clear();
-    lineFull.clear();
-
-    if(!isVisible(boundingRect, viewport,gis))
-    {
-        return;
-    }
-
-    QPointF pt1;
-    QPointF p1 = viewport[0];
-    QPointF p2 = viewport[2];
-    gis->convertRad2Px(p1);
-    gis->convertRad2Px(p2);
-    QRectF extViewport(p1,p2);
-
-    if(drawMode == eDrawNormal)
-    {
-        // in normal mode the trackline without points marked as deleted is drawn
-        foreach (const trkseg_t &seg, trk.segs)
-        {
-            foreach(const trkpt_t &pt, seg.pts)
-            {
-                if(pt.flags & trkpt_t::eHidden)
-                {
-                    continue;
-                }
-
-                pt1.setX(pt.lon);
-                pt1.setY(pt.lat);
-                pt1 *= DEG_TO_RAD;
-                lineSimple << pt1;
-            }
-        }
-    }
-    else
-    {
-        // in full mode the complete track including points marked as deleted
-        // is drawn as gray line first. Then the track without points marked as
-        // deleted is drawn with it's configured color
-        foreach (const trkseg_t &seg, trk.segs)
-        {
-            foreach(const trkpt_t &pt, seg.pts)
-            {
-                pt1.setX(pt.lon);
-                pt1.setY(pt.lat);
-                pt1 *= DEG_TO_RAD;
-
-                lineFull << pt1;
-
-                if(pt.flags & trkpt_t::eHidden)
-                {
-                    continue;
-                }
-
-                lineSimple << pt1;
-            }
-        }
-    }
-    gis->convertRad2Px(lineSimple);
-    gis->convertRad2Px(lineFull);
-
-    // draw the full line first
-    if(drawMode == eDrawRange)
-    {
-        QList<QPolygonF> lines;
-        splitLineToViewport(lineFull, extViewport, lines);
-
-        p.setPen(QPen(Qt::lightGray,5,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
-
-        foreach(const QPolygonF &l, lines)
-        {
-            p.drawPolyline(l);
-        }
-
-        QPixmap bullet("://icons/8x8/bullet_dark_gray.png");
-        foreach(const QPolygonF &l, lines)
-        {
-            foreach(const QPointF &pt, l)
-            {
-                p.drawPixmap(pt.x() - 3, pt.y() - 3, bullet);
-            }
-        }
-    }
-    // -------------------------
-
-    // draw the reduced track line
-    QList<QPolygonF> lines;
-    splitLineToViewport(lineSimple, extViewport, lines);
-
-    if(key == keyUserFocus)
-    {
-        p.setPen(QPen(Qt::red,11,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
-        foreach(const QPolygonF &l, lines)
-        {
-            p.drawPolyline(l);
-        }
-    }
-
-    p.setBrush(color);
-    p.setPen(penBackground);
-    foreach(const QPolygonF &l, lines)
-    {
-        p.drawPolyline(l);
-        drawArrows(l, extViewport, p);
-    }
-    penForeground.setColor(color);
-    p.setPen(penForeground);
-    foreach(const QPolygonF &l, lines)
-    {
-        p.drawPolyline(l);
-    }
-    // -------------------------
-}
-
-void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
-{
-    if(hasUserFocus() && mouseMoveFocus)
-    {
-        // derive anchor
-        QPointF anchor(mouseMoveFocus->lon, mouseMoveFocus->lat);
-        anchor *= DEG_TO_RAD;
-        gis->convertRad2Px(anchor);
-
-        // create trackpoint info text
-        QString str, val1, unit1, val2, unit2;
-        str = getInfoTrkPt(*mouseMoveFocus);
-
-        // calculate bounding box of text
-        QFont f = CMainWindow::self().getMapFont();
-        QFontMetrics fm(f);
-        QRect rectText = fm.boundingRect(QRect(0,0,500,0), Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap, str);
-
-        // create info box
-        int w = rectText.width()  + 5 + 5;
-        int h = rectText.height() + 5 + (fm.height() + 8);
-        if(totalElapsedSeconds != 0)
-        {
-            h += 5 + fm.height() + 8;
-        }
-
-
-        QRect box(0, 0, w, h);
-        box.moveBottomLeft(anchor.toPoint() + QPoint(-50,-50));
-
-        // create bubble path
-        QPainterPath path1;
-        path1.addRoundedRect(box,5,5);
-
-        QPolygonF poly2;
-        poly2 << anchor << (box.bottomLeft() + QPointF(10,-5)) << (box.bottomLeft() + QPointF(30,-5)) << anchor;
-        QPainterPath path2;
-        path2.addPolygon(poly2);
-
-        path1 = path1.united(path2);
-
-        p.setFont(f);
-        // draw bubble
-        p.setPen(CCanvas::penBorderGray);
-        p.setBrush(CCanvas::brushBackWhite);
-        p.drawPolygon(path1.toFillPolygon());
-
-        p.save();
-        p.translate(box.topLeft());
-
-        // draw progress bar distance
-        p.translate(5,5);
-        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.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,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
-        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, 3);
-        p.setPen(Qt::darkBlue);
-        p.drawText(rectText, Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap,str);
-
-        p.restore();
-    }
-
-    if(!scrOpt.isNull() && mouseClickFocus)
-    {
-        QPointF anchor(mouseClickFocus->lon, mouseClickFocus->lat);
-        anchor *= DEG_TO_RAD;
-        gis->convertRad2Px(anchor);
-
-        p.drawPixmap(anchor - QPointF(4,4), QPixmap(bulletColors[colorIdx]));
-    }
-}
-
-void CGisItemTrk::drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF> &blockedAreas, const QFontMetricsF &fm, CGisDraw *gis)
-{
-    // tracks have no labels
-}
-
-
-void CGisItemTrk::drawHighlight(QPainter& p)
-{
-    if(lineSimple.isEmpty() || (key == keyUserFocus))
-    {
-        return;
-    }
-    p.setPen(QPen(QColor(255,0,0,100),11,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
-    p.drawPolyline(lineSimple);
-}
-
-void CGisItemTrk::drawRange(QPainter& p)
-{
-    if((mouseClickFocus != 0) && (mouseMoveFocus != 0))
-    {
-        int idx1 = mouseClickFocus->idxVisible;
-        int idx2 = mouseMoveFocus->idxVisible;
-
-        if(idx1 > idx2)
-        {
-            qSwap(idx1,idx2);
-        }
-
-        QPolygonF line = lineSimple.mid(idx1, idx2 - idx1 + 1);
-
-        p.setPen(QPen(Qt::red, 12, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
-        p.drawPolyline(line);
-        foreach(const QPointF &pt, line)
-        {
-            p.drawPixmap(pt.x() - 3, pt.y() - 3, bullet);
-        }
-    }
-}
-
-void CGisItemTrk::setName(const QString& str)
-{
-    setText(CGisListWks::eColumnName, str);
-    trk.name = str;
-    changed(QObject::tr("Changed name"), "://icons/48x48/EditText.png");
-}
-
-void CGisItemTrk::setComment(const QString& str)
-{
-    trk.cmt = str;
-    changed(QObject::tr("Changed comment"), "://icons/48x48/EditText.png");
-}
-
-void CGisItemTrk::setDescription(const QString& str)
-{
-    trk.desc = str;
-    changed(QObject::tr("Changed description"), "://icons/48x48/EditText.png");
-}
-
-void CGisItemTrk::setLinks(const QList<link_t>& links)
-{
-    trk.links = links;
-    changed(QObject::tr("Changed links"), "://icons/48x48/Link.png");
-}
-
-
-void CGisItemTrk::setColor(int idx)
-{
-    int N = sizeof(lineColors)/sizeof(QColor);
-    if(idx >= N)
-    {
-        return;
-    }
-    setColor(lineColors[idx]);
-    changed(QObject::tr("Changed color"), "://icons/48x48/SelectColor.png");
-}
-
-void CGisItemTrk::setColor(const QColor& c)
-{
-    int n;
-    int N = sizeof(lineColors)/sizeof(QColor);
-
-    for(n = 0; n < N; n++)
-    {
-        if(lineColors[n] == c)
-        {
-            colorIdx    = n;
-            color       = lineColors[n];
-            bullet      = QPixmap(bulletColors[n]);
-            break;
-        }
-    }
-
-    if(n == N)
-    {
-        colorIdx    = DEFAULT_COLOR;
-        color       = lineColors[DEFAULT_COLOR];
-        bullet      = QPixmap(bulletColors[DEFAULT_COLOR]);
-    }
-
-    setIcon(color.name());
-}
-
-
-
-void CGisItemTrk::setIcon(const QString& c)
-{
-    trk.color   = c;
-    icon        = QPixmap("://icons/48x48/Track.png");
-
-    QPixmap mask( icon.size() );
-    mask.fill( str2color(c) );
-    mask.setMask( icon.createMaskFromColor( Qt::transparent ) );
-    icon = mask.scaled(22,22, Qt::KeepAspectRatio, Qt::SmoothTransformation);
-
-    QTreeWidgetItem::setIcon(CGisListWks::eColumnName,icon);
-}
-
-void CGisItemTrk::setMouseFocusByDistance(qreal dist, focusmode_e mode, IPlot *initiator)
-{
-    const trkpt_t * newPointOfFocus = 0;
-
-    if(dist != NOFLOAT)
-    {
-        qreal delta = totalDistance;
-
-        /// @todo: optimze search by single out segment and then do a binary search
-
-        foreach (const trkseg_t &seg, trk.segs)
-        {
-            foreach(const trkpt_t &pt, seg.pts)
-            {
-                if(pt.flags & trkpt_t::eHidden)
-                {
-                    continue;
-                }
-
-                qreal d = qAbs(pt.distance - dist);
-                if(d <= delta)
-                {
-                    newPointOfFocus = &pt;
-                    delta = d;
-                }
-                else
-                {
-                    break;
-                }
-            }
-        }
-    }
-
-    publishMouseFocus(newPointOfFocus, mode, initiator);
-}
-
-void CGisItemTrk::setMouseFocusByTime(quint32 time, focusmode_e mode, IPlot * initiator)
-{
-    const trkpt_t * newPointOfFocus = 0;
-
-    if(time != NOTIME)
-    {
-        /// @todo: optimze search by single out segment and then do a binary search
-
-        qreal delta = totalElapsedSeconds;
-
-        foreach (const trkseg_t &seg, trk.segs)
-        {
-            foreach(const trkpt_t &pt, seg.pts)
-            {
-                if(pt.flags & trkpt_t::eHidden)
-                {
-                    continue;
-                }
-
-                qreal d = qAbs(qreal(pt.time.toTime_t()) - qreal(time));
-                if(d <= delta)
-                {
-                    newPointOfFocus = &pt;
-                    delta = d;
-                }
-                else
-                {
-                    break;
-                }
-            }
-        }
-    }
-
-    publishMouseFocus(newPointOfFocus, mode, initiator);
-}
-
-QPointF CGisItemTrk::setMouseFocusByPoint(const QPoint& pt, focusmode_e mode)
-{
-    const trkpt_t * newPointOfFocus = 0;
-    quint32 idx = 0;
-
-    if((hasUserFocus() || (drawMode == eDrawRange)) && (pt != NOPOINT))
-    {
-        /*
-            Iterate over the polyline used to draw the track as it contains screen
-            coordinates. The polyline has all visible track points. But there are
-            invisible points, those marked as deleted, too. That is why the index
-            into the polyline cant't be used directly. In a second step we have
-            to iterate over all segments and visible points of the trk_t object
-            until the visible index is reached. This is done by getVisibleTrkPtByIndex().
-         */
-
-        quint32 i = 0;
-        qint32 d  = NOINT;
-        foreach(const QPointF &point, lineSimple)
-        {
-            int tmp = (pt - point).manhattanLength();
-            if(tmp < d)
-            {
-                idx = i;
-                d   = tmp;
-            }
-            i++;
-        }
-
-        if(d < MIN_DIST_FOCUS)
-        {
-            newPointOfFocus = getVisibleTrkPtByIndex(idx);
-        }
-    }
-    publishMouseFocus(newPointOfFocus, mode, 0);
-
-    return newPointOfFocus ? lineSimple[idx] : NOPOINTF;
-}
-
-
-void CGisItemTrk::setMouseFocusByIndex(qint32 idx, focusmode_e mode)
-{
-    const trkpt_t * newPointOfFocus = 0;
-
-    foreach (const trkseg_t &seg, trk.segs)
-    {
-        foreach(const trkpt_t &pt, seg.pts)
-        {
-            if(pt.idxTotal == idx)
-            {
-                newPointOfFocus = &pt;
-                publishMouseFocus(newPointOfFocus, mode, 0);
-                return;
-            }
-        }
-    }
-}
-
-const CGisItemTrk::trkpt_t * CGisItemTrk::getVisibleTrkPtByIndex(quint32 idx)
-{
-    quint32 i = 0;
-    foreach (const trkseg_t &seg, trk.segs)
-    {
-        foreach(const trkpt_t &pt, seg.pts)
-        {
-            if(pt.flags & trkpt_t::eHidden)
-            {
-                continue;
-            }
-            if(i == idx)
-            {
-                return &pt;
-            }
-            i++;
-        }
-    }
-    return 0;
-}
-
-
-
-void CGisItemTrk::publishMouseFocus(const trkpt_t * pt, focusmode_e mode,  IPlot * initiator)
-{
-    switch(mode)
-    {
-    case eFocusMouseMove:
-        if(pt != mouseMoveFocus)
-        {
-            mouseMoveFocus = pt;
-            foreach(IPlot * plot, registeredPlots)
-            {
-                if(plot != initiator)
-                {
-                    plot->setMouseMoveFocus(mouseMoveFocus);
-                }
-            }
-
-            if(!dlgDetails.isNull())
-            {
-                dlgDetails->setMouseMoveFocus(mouseMoveFocus);
-            }
-        }
-        break;
-
-    case eFocusMouseClick:
-        if(pt != mouseClickFocus)
-        {
-            mouseClickFocus = pt;
-            if(!dlgDetails.isNull())
-            {
-                dlgDetails->setMouseClickFocus(mouseClickFocus);
-            }
-        }
-
-    default:;
-    }
-}
-
-void CGisItemTrk::changed(const QString& what, const QString& icon)
-{
-    IGisItem::changed(what, icon);
-    if(!dlgDetails.isNull())
-    {
-        dlgDetails->setupGui();
-    }
-}
diff --git a/.hg/Trashcan/CGisItemTrk_jYp8hv.h.bak b/.hg/Trashcan/CGisItemTrk_jYp8hv.h.bak
deleted file mode 100644
index 046c779..0000000
--- a/.hg/Trashcan/CGisItemTrk_jYp8hv.h.bak
+++ /dev/null
@@ -1,619 +0,0 @@
-/**********************************************************************************************
-    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 CGISITEMTRK_H
-#define CGISITEMTRK_H
-
-#include "gis/IGisItem.h"
-#include "gis/IGisLine.h"
-
-#include <QPen>
-#include <QPointer>
-
-class QDomNode;
-class IGisProject;
-class IPlot;
-class CDetailsTrk;
-class CScrOptTrk;
-class QSqlDatabase;
-class CQlgtTrack;
-class QDir;
-
-#define TRK_N_COLORS 17
-
-#include <QDebug>
-
-class CGisItemTrk : public IGisItem, public IGisLine
-{
-public:
-    struct trk_t;
-    struct trkpt_t;
-
-    enum focusmode_e
-    {
-        eFocusMouseMove
-        ,eFocusMouseClick
-    };
-
-    enum drawmode_e
-    {
-        eDrawNormal
-        , eDrawRange
-    };
-
-    /**
-       @brief Used to create a new track from a part of an existing track
-       @param name
-       @param idx1
-       @param idx2
-       @param srctrk
-       @param project
-     */
-    CGisItemTrk(const QString& name, qint32 idx1, qint32 idx2, const trk_t &srctrk, IGisProject *project);
-    /**
-       @brief Used to create a copy of track with new parent
-       @param parentTrk
-       @param project
-       @param idx
-       @param clone
-     */
-    CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject * project, int idx, bool clone);
-    /**
-       @brief Used to restore a track from a line of coordinates
-       @param l
-       @param name
-       @param project
-       @param idx
-     */
-    CGisItemTrk(const QPolygonF& l, const QString &name, IGisProject *project, int idx);
-    /**
-       @brief Used to create track from GPX file
-       @param xml
-       @param project
-     */
-    CGisItemTrk(const QDomNode &xml, IGisProject *project);
-    /**
-       @brief Used to restore track from history structure
-       @param hist
-       @param project
-     */
-    CGisItemTrk(const history_t& hist, IGisProject * project);
-    /**
-       @brief Used to restore track from database
-       @param id
-       @param db
-       @param project
-     */
-    CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project);
-    /**
-       @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() 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() const
-    {
-        return totalElapsedSeconds;
-    }
-    const QString& getComment() const
-    {
-        return trk.cmt;
-    }
-    const QString& getDescription() const
-    {
-        return trk.desc;
-    }
-    const QList<link_t>& getLinks() const
-    {
-        return trk.links;
-    }
-    void getPolylineFromData(QPolygonF& l);
-    const QDateTime& getTimeStart() const
-    {
-        return timeStart;
-    }
-
-    void setName(const QString& str);
-    void setColor(int idx);
-    void setDrawMode(drawmode_e mode)
-    {
-        drawMode = mode;
-    }
-    void setComment(const QString& str);
-    void setDescription(const QString& str);
-    void setLinks(const QList<link_t>& links);
-    void setDataFromPolyline(const QPolygonF& l);
-
-    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
-    QPointF getPointCloseBy(const QPoint& screenPos);
-    bool isCloseTo(const QPointF& pos);
-
-    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
-    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-    void drawHighlight(QPainter& p);
-    void drawRange(QPainter& p);
-
-    /**
-       @brief Switch user focus on and off.
-
-       If the focus is switched on any other track having the focus will loose it.
-
-       @param yes   set true to gain focus.
-     */
-    void gainUserFocus(bool yes);
-
-    /**
-       @brief Make sure a CDetailsTrk widget is registered with the main tab widget
-     */
-    void edit();
-
-    /**
-       @brief Cut track at mouseClickFocus
-       @return Return true on success.
-     */
-    bool cut();
-
-    /**
-       @brief Reverse the complete track
-
-       @note All timestamps will be removed
-     */
-    void reverse();
-
-    /**
-       @brief Combine this track with several others.
-
-       Handle the complete process of selecting tracks, choosing the order and
-       the final name with dialogs.
-     */
-    void combine();
-
-    /**
-       @brief Set the trkpt_t::eHidden flag
-
-       The flag is set for all track points between mouseClickFocus and mouseMoveFocus,
-       regardless of their previous state.
-
-     */
-    void hideSelectedPoints();
-
-    /**
-       @brief Reset the trkpt_t::eHidden flag
-
-       The flag is reset for all track points between mouseClickFocus and mouseMoveFocus,
-       regardless of their previous state.
-
-     */
-    void showSelectedPoints();
-
-    /**
-       @brief Copy a section into a new track object
-
-       The section is defined by mouseClickFocus and mouseMoveFocus, All points are copied,
-       including the hidden (trkpt_t::eHidden) ones.
-
-     */
-    void copySelectedPoints();
-
-    /**
-       @brief Check for user focus
-
-       @return True if the track has user focus
-     */
-    bool hasUserFocus() const
-    {
-        return key == keyUserFocus;
-    }
-
-    /**
-       @brief Get the key of the current track with user focus
-
-       @return If no track has the focus an empty string is returned
-     */
-    static const key_t& getKeyUserFocus()
-    {
-        return keyUserFocus;
-    }
-
-    /**
-       @brief Each plot widget that operates on the track must register during it's contruction
-
-       see registeredPlots for a detailed discussion
-
-       @param plot
-     */
-    void registerPlot(IPlot * plot);
-
-    /**
-       @brief Each plot widget that operates on the track must unregister during it's destruction
-
-       see registeredPlots for a detailed discussion
-
-       @param plot
-     */
-    void unregisterPlot(IPlot * plot);
-
-    /**
-       @brief Use point with the distance from start matching best the given distance.
-
-       @param dist      the distance in [m]
-       @param initiator a pointer to an initiating IPlot object, or 0
-     */
-    void setMouseFocusByDistance(qreal dist, focusmode_e mode, IPlot * initiator);
-
-    /**
-       @brief Use point with time from start matching best the given time delta
-
-       @param time      a time delta in [s] relative to the start time
-       @param initiator a pointer to an initiating IPlot object, or 0
-     */
-    void setMouseFocusByTime(quint32 time, focusmode_e mode, IPlot * initiator);
-
-    /**
-       @brief Use the point that is closest to the given point on the screen.
-
-       @param pt        a point on the screen in pixel.
-     */
-    QPointF setMouseFocusByPoint(const QPoint& pt, focusmode_e mode);
-
-    /**
-       @brief Use point with given index counter
-       @param idx
-     */
-    void setMouseFocusByIndex(qint32 idx, focusmode_e mode);
-
-    /**
-       @brief Reduce the amount of visible track points with the help of the Douglas Peuker algorithm
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param dist the Douglas Peuker distance in meters
-     */
-    void filterReducePoints(qreal dist);
-    /**
-       @brief filterReset
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-     */
-    void filterReset();
-    /**
-       @brief filterDelete
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-     */
-    void filterDelete();
-    /**
-       @brief filterSmoothProfile
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param points  size of Median filter
-     */
-    void filterSmoothProfile(int points);
-    /**
-       @brief filterReplaceElevation
-     */
-    void filterReplaceElevation();
-    /**
-       @brief filterOffsetElevation
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param offset elevation offset in meters
-     */
-    void filterOffsetElevation(int offset);
-    /**
-       @brief filterNewDate
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param date new date for start of track
-     */
-    void filterNewDate(const QDateTime& date);
-    /**
-       @brief filterObscureDate
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param delta intervall to increase timestamps in seconds
-     */
-    void filterObscureDate(int delta);
-    /**
-       @brief filterSpeed
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param speed speed in meter per seconds
-     */
-    void filterSpeed(qreal speed);
-
-    void findWaypointsCloseBy();
-
-    static const QColor lineColors[TRK_N_COLORS];
-    static const QString bulletColors[TRK_N_COLORS];
-
-private:
-    void setSymbol();
-    /**
-       @brief Read track data from section in GPX file
-       @param xml   The XML <trk> section
-       @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
-
-       This has to be called each time the track data is changed.
-     */
-    void deriveSecondaryData();
-
-    /**
-       @brief Try to get access Nth visible point matching the idx
-
-       This will iterate over all segments and count the visible points. If the
-       count matches idx a pointer to the track point is passed
-
-       @param idx The index into all visible points
-       @return A null pointer of no point is found.
-     */
-    const trkpt_t *getVisibleTrkPtByIndex(quint32 idx);
-
-    /**
-       @brief Tell the point of focus to all plots and the detail dialog
-
-       @param pt        A pointer to the point itself
-       @param mode      The reason for the focus
-       @param initiator A pointer to an IPlot object that has set the point of focus. Can be 0.
-     */
-    void publishMouseFocus(const trkpt_t * pt, focusmode_e mode, IPlot *initiator);
-    /**
-       @brief Replace all trackpoints by the coordinates stored in the polyline
-
-       The DEM layer will be queried for elevation data. All other data is lost.
-
-       @param l     A polyline with coordinates [rad]
-     */
-    void readTrackDataFromPolyLine(const QPolygonF &l);
-    /**
-       @brief Overide IGisItem::changed() method
-
-       As the CDetailsTrk is no modal dialog that blocks the GUI from any other input the track
-       can be changed while the widget is visible. Therfore it needs some feedback to update the
-       CDetailsTrk widget. Usualy this would be a signal. However CGisItemTrk is a QTreeWidgetItem
-       and therefor no QObject. Fortunately there the dlgDetails pointer. So CDetailsTrk::setupGui()
-       can be called from changed()
-
-       @param what  The reason string
-       @param icon  An icon string
-     */
-    void changed(const QString& what, const QString& icon);
-
-    void setColor(const QColor& c);
-    void setIcon(const QString& c);
-
-public:
-    struct trkpt_t : public wpt_t
-    {
-        trkpt_t()
-            : flags(0)
-        {
-            reset();
-        }
-
-        void reset()
-        {
-            deltaDistance   = NOFLOAT;
-            distance        = NOFLOAT;
-            ascend          = NOFLOAT;
-            descend         = NOFLOAT;
-            elapsedSeconds  = NOFLOAT;
-            elapsedSecondsMoving = NOFLOAT;
-            slope1          = NOFLOAT;
-            slope2          = NOFLOAT;
-            speed           = NOFLOAT;
-            rateAscent      = NOFLOAT;
-            rateDescent     = NOFLOAT;
-        }
-
-        enum flag_e
-        {
-            eHidden   = 0x00000004      ///< mark point as deleted
-        };
-
-        quint32 flags;
-        /// index within the complete track
-        qint32 idxTotal;
-        /// offset into lineSimple
-        qint32 idxVisible;
-
-        /// the distance to the last point
-        qreal deltaDistance;
-        /// the distance from the start of the track
-        qreal distance;
-        /// the ascend from the start of the track
-        qreal ascend;
-        /// the descend from the start of the track
-        qreal descend;
-        /// the slope [°] over several points close by
-        qreal slope1;
-        /// the slope [%] over several points close by
-        qreal slope2;
-        /// the speed over several points close by
-        qreal speed;
-        /// the seconds since the start of the track
-        qreal elapsedSeconds;
-        /// the seconds since the start of the track with moving speed
-        qreal elapsedSecondsMoving;
-
-        qreal rateAscent;
-
-        qreal rateDescent;
-    };
-
-    struct trkseg_t
-    {
-        QVector<trkpt_t> pts;
-        QMap<QString, QVariant> extensions;
-    };
-
-    struct trk_t
-    {
-        trk_t() : number(0)
-        {
-        }
-        // -- all gpx tags - start
-        QString name;
-        QString cmt;
-        QString desc;
-        QString src;
-        QList<link_t> links;
-        quint64 number;
-        QString type;
-        QVector<trkseg_t> segs;
-        // -- all gpx tags - stop
-        QMap<QString, QVariant> extensions;
-
-        QString color;
-    };
-
-    /**
-       @brief Read only access to the track data.
-       @return
-     */
-    const trk_t& getTrackData() const
-    {
-        return trk;
-    }
-
-private:
-    trk_t trk;
-
-    static key_t keyUserFocus;
-    static const QPen penBackground;
-
-    QPen penForeground;
-
-    drawmode_e drawMode;
-
-    qint32 cntTotalPoints;
-    qint32 cntVisiblePoints;
-    QDateTime timeStart;
-    QDateTime timeEnd;
-    qreal totalDistance;
-    qreal totalAscend;
-    qreal totalDescend;
-    qreal totalElapsedSeconds;
-    qreal totalElapsedSecondsMoving;
-
-    /// the track line color
-    QColor color;
-    /// the trakpoint bullet icon
-    QPixmap bullet;
-    /// the track line color by index
-    unsigned colorIdx;
-    /// the current track line as screen pixel coordinates
-    QPolygonF lineSimple;
-    /// visible and invisible points
-    QPolygonF lineFull;
-
-    /**
-        A list of plot objects that need to get informed on any change in data.
-
-        @note This is necessary because QTreeWidgetItem is not derived from QObject.
-              Thus no signals and slots can be handled. Probably this is because the
-              signal/slot system would be a huge overhead on treewidgets with a large
-              amount of items.
-
-              Anyway we need some kind of signaling between the track object and the
-              plot objects displaying the data. And we have to keep in mind that
-              the track can be delete by the user at any time. That is why no other
-              object is allowed to save a pointer to the track. It must store the
-              key. But accessing the track via key is expensive.
-
-              That is why we make an exception here. As the track will delete all
-              registered plot objects upon destruction, it should be ok to store
-              the track object in the plot object, too. By that plot and track can
-              easily communicate with each other.
-     */
-    QSet<IPlot*> registeredPlots;
-
-    const trkpt_t * mouseMoveFocus;
-    const trkpt_t * mouseClickFocus;
-
-    QPointer<CDetailsTrk> dlgDetails;
-    QPointer<CScrOptTrk>  scrOpt;
-};
-
-#endif //CGISITEMTRK_H
-
diff --git a/.hg/Trashcan/CGisItemWpt_dhk314.cpp.bak b/.hg/Trashcan/CGisItemWpt_dhk314.cpp.bak
deleted file mode 100644
index c731a21..0000000
--- a/.hg/Trashcan/CGisItemWpt_dhk314.cpp.bak
+++ /dev/null
@@ -1,458 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index 19668ca..0000000
--- a/.hg/Trashcan/CGisItemWpt_lZD09f.h.bak
+++ /dev/null
@@ -1,117 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index 24a83e2..0000000
--- a/.hg/Trashcan/CGisItemWpt_qCGlIQ.cpp.bak
+++ /dev/null
@@ -1,476 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index 0b73189..0000000
--- a/.hg/Trashcan/CGisItemWpt_v6zJBd.h.bak
+++ /dev/null
@@ -1,119 +0,0 @@
-/**********************************************************************************************
-    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/.hg/Trashcan/CGisListWks_3x8ATJ.cpp.bak b/.hg/Trashcan/CGisListWks_3x8ATJ.cpp.bak
deleted file mode 100644
index 266c790..0000000
--- a/.hg/Trashcan/CGisListWks_3x8ATJ.cpp.bak
+++ /dev/null
@@ -1,1110 +0,0 @@
-/**********************************************************************************************
-    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 "config.h"
-#include "gis/CGisListWks.h"
-#include "gis/CGisWidget.h"
-#include "gis/IGisItem.h"
-#include "gis/db/CDBProject.h"
-#include "gis/db/macros.h"
-#include "gis/gpx/CGpxProject.h"
-#include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/prj/IGisProject.h"
-#include "gis/qms/CQmsProject.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/search/CSearchGoogle.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CSelectProjectDialog.h"
-#include "helpers/CSelectCopyAction.h"
-#include "helpers/CSettings.h"
-
-#include <QtSql>
-#include <QtWidgets>
-
-#define DB_VERSION 1
-
-class CGisListWksEditLock
-{
-    public:
-        CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
-        {
-            if(waitCursor)
-            {
-                QApplication::setOverrideCursor(Qt::WaitCursor);
-            }
-            mutex.lock();
-        }
-        ~CGisListWksEditLock()
-        {
-            if(waitCursor)
-            {
-                QApplication::restoreOverrideCursor();
-            }
-            mutex.unlock();
-        }
-    private:
-        QMutex& mutex;
-        bool waitCursor;
-
-};
-
-
-CGisListWks::CGisListWks(QWidget *parent)
-    : QTreeWidget(parent)
-    , menuNone(0)
-    , saveOnExit(true)
-    , saveEvery(5)
-{
-    db = QSqlDatabase::addDatabase("QSQLITE","Workspace1");
-    db.setDatabaseName(QDir::home().filePath(CONFIGDIR).append("/workspace.db"));
-    db.open();
-    configDB();
-
-    menuProject     = new QMenu(this);
-    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()));
-    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)));
-
-    menuItem        = new QMenu(this);
-    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;
-    saveOnExit  = cfg.value("Database/saveOnExit", saveOnExit).toBool();
-    saveEvery   = cfg.value("Database/saveEvery", saveEvery).toInt();
-
-    if(saveOnExit && (saveEvery > 0))
-    {
-        QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
-    }
-
-    QTimer::singleShot(500, this, SLOT(slotLoadWorkspace()));
-}
-
-CGisListWks::~CGisListWks()
-{
-}
-
-void CGisListWks::configDB()
-{
-    QSqlQuery query(db);
-    if(!query.exec("PRAGMA locking_mode=EXCLUSIVE"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA synchronous=OFF"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA temp_store=MEMORY"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA default_cache_size=50"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA page_size=8192"))
-    {
-        return;
-    }
-
-    if(!query.exec("SELECT version FROM versioninfo"))
-    {
-        initDB();
-    }
-    else if(query.next())
-    {
-        int version = query.value(0).toInt();
-        if(version != DB_VERSION)
-        {
-            migrateDB(version);
-        }
-    }
-    else
-    {
-        initDB();
-    }
-}
-
-void CGisListWks::initDB()
-{
-    QSqlQuery query(db);
-
-    if(query.exec( "CREATE TABLE versioninfo ( version TEXT )"))
-    {
-        query.prepare( "INSERT INTO versioninfo (version) VALUES(:version)");
-        query.bindValue(":version", DB_VERSION);
-        QUERY_EXEC(; );
-    }
-
-    if(!query.exec( "CREATE TABLE workspace ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "type           INTEGER NOT NULL,"
-                    "name           TEXT NOT NULL,"
-                    "key            TEXT NOT NULL,"
-                    "changed        BOOLEAN DEFAULT FALSE,"
-                    "data           BLOB NOT NULL"
-
-                    ")"))
-    {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
-    }
-}
-
-void CGisListWks::migrateDB(int version)
-{
-    QSqlQuery query(db);
-
-    for(version++; version <= DB_VERSION; version++)
-    {
-        switch(version)
-        {
-        }
-    }
-    query.prepare( "UPDATE versioninfo set version=:version");
-    query.bindValue(":version", version - 1);
-    QUERY_EXEC(; );
-}
-
-void CGisListWks::setExternalMenu(QMenu * project)
-{
-    menuNone = project;
-    connect(CMainWindow::self().findChild<QAction*>("actionAddEmptyProject"), SIGNAL(triggered()), this, SLOT(slotAddEmptyProject()));
-    connect(CMainWindow::self().findChild<QAction*>("actionCloseAllProjects"), SIGNAL(triggered(bool)), this, SLOT(slotCloseAllProjects()));
-    connect(CMainWindow::self().findChild<QAction*>("actionSearchGoogle"), SIGNAL(triggered(bool)), this, SLOT(slotSearchGoogle(bool)));
-}
-
-void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
-{
-    QTreeWidgetItem * item1 = currentItem();
-    QTreeWidgetItem * item2 = itemAt(e->pos());
-
-
-    // changeing the item order is only valid for single selected items
-    if(selectedItems().count() == 1)
-    {
-        /*
-            What's happening here?
-
-            1) Cast current item and item under cursor to GIS item type
-            2) If type matches for both test for common parent
-            2.1) common parent->  move
-            2.1) different parent -> copy
-            3) go on with dragMoveEvent();
-
-         */
-
-        CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(item1);
-        CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(item2);
-
-        if(trk1 && trk2)
-        {
-            if(trk1->parent() == trk2->parent())
-            {
-                e->setDropAction(Qt::MoveAction);
-            }
-            else
-            {
-                e->setDropAction(Qt::CopyAction);
-            }
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-
-        CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(item1);
-        CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(item2);
-
-        if(wpt1 && wpt2)
-        {
-            if(wpt1->parent() == wpt2->parent())
-            {
-                e->setDropAction(Qt::MoveAction);
-            }
-            else
-            {
-                e->setDropAction(Qt::CopyAction);
-            }
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-
-        CGisItemRte * rte1 = dynamic_cast<CGisItemRte*>(item1);
-        CGisItemRte * rte2 = dynamic_cast<CGisItemRte*>(item2);
-
-        if(rte1 && rte2)
-        {
-            if(rte1->parent() == rte2->parent())
-            {
-                e->setDropAction(Qt::MoveAction);
-            }
-            else
-            {
-                e->setDropAction(Qt::CopyAction);
-            }
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-
-        CGisItemOvlArea * area1 = dynamic_cast<CGisItemOvlArea*>(item1);
-        CGisItemOvlArea * area2 = dynamic_cast<CGisItemOvlArea*>(item2);
-
-        if(area1 && area2)
-        {
-            if(area1->parent() == area2->parent())
-            {
-                e->setDropAction(Qt::MoveAction);
-            }
-            else
-            {
-                e->setDropAction(Qt::CopyAction);
-            }
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-    }
-
-    IGisProject * proj = dynamic_cast<IGisProject*>(item2);
-    if(proj && (proj != currentItem()->parent()))
-    {
-        e->setDropAction(Qt::CopyAction);
-        QTreeWidget::dragMoveEvent(e);
-        return;
-    }
-
-    e->setDropAction(Qt::IgnoreAction);
-    QTreeWidget::dragMoveEvent(e);
-}
-
-void CGisListWks::dropEvent ( QDropEvent  * e )
-{
-
-    QList<QTreeWidgetItem*> items   = selectedItems();
-    if(items.isEmpty())
-    {
-        return;
-    }
-
-    int lastResult = CSelectCopyAction::eResultNone;
-
-    // go on with item insertion
-    /*
-        What's happening here?
-
-        for single selected items do:
-        1) Test if item will be inserted above ore below item under cursor.
-        2) Cast current item and item under cursor to GIS item type
-        3) If type matches for both test for common parent
-        3.1) common parent-> go on with default drop event
-        3.1) different parent -> create a copy and insert it index
-        4) signal change of project
-
-        for single and multiple selected items, do:
-        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)
-        QRect r = visualItemRect(itemAt(e->pos()));
-        int y1 = r.top() + r.height()/2;
-        int y2 = e->pos().y();
-        int off = y2 > y1 ? 1 : 0;
-
-        CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(currentItem());
-        CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(itemAt(e->pos()));
-
-        if(wpt1 && wpt2)
-        {
-            if(wpt1->parent() == wpt2->parent())
-            {
-                QTreeWidget::dropEvent(e);
-            }
-            else
-            {
-                IGisProject * project = dynamic_cast<IGisProject*>(wpt2->parent());
-                if(project)
-                {
-                    project->insertCopyOfItem(wpt1, off, lastResult);
-                }
-            }
-            emit sigChanged();
-            return;
-        }
-
-        CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(currentItem());
-        CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(itemAt(e->pos()));
-
-        if(trk1 && trk2)
-        {
-            if(trk1->parent() == trk2->parent())
-            {
-                QTreeWidget::dropEvent(e);
-            }
-            else
-            {
-                IGisProject * project = dynamic_cast<IGisProject*>(trk2->parent());
-                if(project)
-                {
-                    project->insertCopyOfItem(trk1, off, lastResult);
-                }
-            }
-            emit sigChanged();
-            return;
-        }
-
-        CGisItemRte * rte1 = dynamic_cast<CGisItemRte*>(currentItem());
-        CGisItemRte * rte2 = dynamic_cast<CGisItemRte*>(itemAt(e->pos()));
-
-        if(rte1 && rte2)
-        {
-            if(rte1->parent() == rte2->parent())
-            {
-                QTreeWidget::dropEvent(e);
-            }
-            else
-            {
-                IGisProject * project = dynamic_cast<IGisProject*>(rte2->parent());
-                if(project)
-                {
-                    project->insertCopyOfItem(rte1, off, lastResult);
-                }
-            }
-            emit sigChanged();
-            return;
-        }
-
-        CGisItemOvlArea * area1 = dynamic_cast<CGisItemOvlArea*>(currentItem());
-        CGisItemOvlArea * area2 = dynamic_cast<CGisItemOvlArea*>(itemAt(e->pos()));
-
-        if(area1 && area2)
-        {
-            if(area1->parent() == area2->parent())
-            {
-                QTreeWidget::dropEvent(e);
-            }
-            else
-            {
-                IGisProject * project = dynamic_cast<IGisProject*>(area2->parent());
-                if(project)
-                {
-                    project->insertCopyOfItem(area1, off, lastResult);
-                }
-            }
-            emit sigChanged();
-            return;
-        }
-    }
-
-    // check if item at position is a project and insert a copy of all selected items
-    IGisProject * project = dynamic_cast<IGisProject*>(itemAt(e->pos()));
-    if(project)
-    {
-        int cnt = 1;
-        int N   = items.size();
-        QProgressDialog progress("Drop items...", "Abort drop", 0, 100, this);
-        progress.setWindowModality(Qt::WindowModal);
-
-        foreach(QTreeWidgetItem * item, items)
-        {
-            progress.setValue((100 * cnt++) / N);
-            if (progress.wasCanceled())
-            {
-                break;
-            }
-
-            IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-            project->insertCopyOfItem(gisItem, -1, lastResult);
-        }
-    }
-    emit sigChanged();
-}
-
-
-bool CGisListWks::hasProject(IGisProject * project)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    QString key = project->getKey();
-
-    for(int i = 0; i < topLevelItemCount(); i++)
-    {
-        IGisProject * item = dynamic_cast<IGisProject*>(topLevelItem(i));
-        if(item && item->getKey() == key)
-        {
-            if(item != project)
-            {
-                return(true);
-            }
-        }
-    }
-    return(false);
-}
-
-IGisProject * CGisListWks::getProjectByKey(const QString& key)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    for(int i = 0; i < topLevelItemCount(); i++)
-    {
-        IGisProject * item = dynamic_cast<IGisProject*>(topLevelItem(i));
-        if(item && item->getKey() == key)
-        {
-            return item;
-        }
-    }
-    return 0;
-}
-
-CDBProject * CGisListWks::getProjectById(quint64 id, const QString& db)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    for(int i = 0; i < topLevelItemCount(); i++)
-    {
-        CDBProject * item = dynamic_cast<CDBProject*>(topLevelItem(i));
-        if(item && item->getId() == id && item->getDBName() == db)
-        {
-            return item;
-        }
-    }
-    return 0;
-
-}
-
-void CGisListWks::slotSaveWorkspace()
-{
-    if(!saveOnExit)
-    {
-        return;
-    }
-
-    QSqlQuery query(db);
-    if(!query.exec("DELETE FROM workspace"))
-    {
-        QUERY_EXEC(return );
-    }
-
-    qDebug() << "slotSaveWorkspace()";
-
-    const int total = topLevelItemCount();
-    PROGRESS_SETUP(tr("Saving workspace. Please wait."), total);
-
-    for(int i = 0; i < total; i++)
-    {
-        PROGRESS(i, return );
-
-        IGisProject * project = dynamic_cast<IGisProject*>(topLevelItem(i));
-        if(project == 0)
-        {
-            continue;
-        }
-
-        QByteArray data;
-        QDataStream stream(&data, QIODevice::WriteOnly);
-        stream.setVersion(QDataStream::Qt_5_2);
-        stream.setByteOrder(QDataStream::LittleEndian);
-
-        project->IGisProject::operator>>(stream);
-
-        query.prepare("INSERT INTO workspace (type, key, name, changed, data) VALUES (:type, :key, :name, :changed, :data)");
-        query.bindValue(":type", project->getType());
-        query.bindValue(":key", project->getKey());
-        query.bindValue(":name", project->getName());
-        query.bindValue(":changed", project->text(1) == "*");
-        query.bindValue(":data", data);
-        QUERY_EXEC(continue);
-    }
-
-    if(saveEvery)
-    {
-        QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
-    }
-}
-
-void CGisListWks::slotLoadWorkspace()
-{
-    QSqlQuery query(db);
-
-    query.prepare("SELECT type, key, name, changed, data FROM workspace");
-    QUERY_EXEC(return );
-
-    PROGRESS_SETUP(tr("Loading workspace. Please wait."), query.size());
-    quint32 progCnt = 0;
-
-    while(query.next())
-    {
-        PROGRESS(progCnt++, return );
-
-        int type        = query.value(0).toInt();
-        QString name    = query.value(2).toString();
-        bool changed    = query.value(3).toBool();
-        QByteArray data = query.value(4).toByteArray();
-
-        QDataStream stream(&data, QIODevice::ReadOnly);
-        stream.setVersion(QDataStream::Qt_5_2);
-        stream.setByteOrder(QDataStream::LittleEndian);
-
-        IGisProject * project = 0;
-        switch(type)
-        {
-        case IGisProject::eTypeQms:
-        {
-            project = new CQmsProject(name, this);
-            *project << stream;
-            break;
-        }
-
-        case IGisProject::eTypeGpx:
-        {
-            project = new CGpxProject(name, this);
-            *project << stream;
-            break;
-        }
-
-        case IGisProject::eTypeDb:
-        {
-            CDBProject * dbProject;
-            project = dbProject = new CDBProject(this);
-            project->IGisProject::operator<<(stream);
-            dbProject->restoreDBLink();
-            if(!project->isValid())
-            {
-                delete project;
-                project = 0;
-            }
-            else
-            {
-                dbProject->postStatus();
-            }
-            break;
-        }
-        }
-
-        if(project == 0)
-        {
-            continue;
-        }
-
-        project->setToolTip(eColumnName,project->getInfo());
-        if(changed)
-        {
-            project->setText(eColumnDecoration, "*");
-        }
-    }
-
-    emit sigChanged();
-}
-
-void CGisListWks::slotContextMenu(const QPoint& point)
-{
-    if(selectedItems().isEmpty() && menuNone)
-    {
-        QPoint p = mapToGlobal(point);
-        menuNone->exec(p);
-        return;
-    }
-
-    if(selectedItems().count() > 1)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-        if(project != 0)
-        {
-            actionEditPrj->setVisible(false);
-
-            QPoint p = mapToGlobal(point);
-            menuProject->exec(p);
-            return;
-        }
-
-        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;
-    }
-
-    if(selectedItems().count() == 1)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-        if(project != 0)
-        {
-            actionEditPrj->setVisible(true);
-
-            QPoint p = mapToGlobal(point);
-            menuProject->exec(p);
-            return;
-        }
-
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
-        if(gisItem != 0)
-        {
-            actionEditDetails->setVisible(true);
-
-            // 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());
-            }
-
-            // 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());
-            }
-
-            // 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;
-        }
-    }
-}
-
-void CGisListWks::slotCloseProject()
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            delete project;
-        }
-    }
-    emit sigChanged();
-}
-
-void CGisListWks::slotSaveProject()
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            project->save();
-        }
-    }
-}
-
-void CGisListWks::slotSaveAsProject()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            project->saveAs();
-        }
-    }
-}
-
-void CGisListWks::slotEditPrj()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-
-    IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-    if(project != 0)
-    {
-        project->edit();
-    }
-
-}
-
-void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-    if(gisItem != 0)
-    {
-        CMainWindow::self().zoomCanvasTo(gisItem->getBoundingRect());
-        CGisWidget::self().focusTrkByKey(true, gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotEditItem()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().editItemByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotDeleteItem()
-{        
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    QList<QTreeWidgetItem*> items       = selectedItems();
-    QMessageBox::StandardButtons last   = QMessageBox::NoButton;
-
-    QSet<CDBProject*> projects;
-
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-        if(gisItem != 0)
-        {
-            bool yes = false;
-            IGisProject * project = dynamic_cast<IGisProject*>(gisItem->parent());
-            if(project)
-            {
-                yes = project->delItemByKey(gisItem->getKey(), last);
-            }
-
-            /*
-                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);
-            }
-
-            if(last == QMessageBox::Cancel)
-            {
-                break;
-            }
-        }
-    }
-
-    // make all database projects that are changed to post their new status
-    // this will update the database view.
-    foreach(CDBProject * project, projects)
-    {
-        if(project)
-        {
-            project->postStatus();
-        }
-    }
-}
-
-void CGisListWks::slotCopyItem()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
-    {
-        return;
-    }
-
-    int lastResult = CSelectCopyAction::eResultNone;
-
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-        if(gisItem == 0)
-        {
-            continue;
-        }
-
-        project->insertCopyOfItem(gisItem, -1, lastResult);
-    }
-}
-
-void CGisListWks::slotProjWpt()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().projWptByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotMoveWpt()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().moveWptByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotFocusTrk(bool on)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().focusTrkByKey(on, gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotEditTrk()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().editTrkByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotReverseTrk()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().reverseTrkByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotCombineTrk()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().combineTrkByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotRangeTrk()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().rangeTrkByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotEditArea()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemOvlArea * gisItem = dynamic_cast<CGisItemOvlArea*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().editAreaByKey(gisItem->getKey());
-    }
-}
-
-
-void CGisListWks::slotAddEmptyProject()
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    QString key, name;
-    CSelectProjectDialog::type_e type;
-    CSelectProjectDialog dlg(key, name, type, 0);
-    dlg.exec();
-    if(name.isEmpty())
-    {
-        return;
-    }
-
-    if(type == CSelectProjectDialog::eTypeGpx)
-    {
-        new CGpxProject(name, this);
-    }
-    else if(type == CSelectProjectDialog::eTypeQms)
-    {
-        new CQmsProject(name, this);
-    }
-}
-
-void CGisListWks::slotCloseAllProjects()
-{
-    int res = QMessageBox::question(this, tr("Close all projects..."), tr("This will remove all projects from the workspace."), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
-    if(res != QMessageBox::Ok)
-    {
-        return;
-    }
-
-
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    QList<QTreeWidgetItem*> items = findItems("*", Qt::MatchWildcard);
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            delete project;
-        }
-    }
-    emit sigChanged();
-}
-
-void CGisListWks::slotSearchGoogle(bool on)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    delete searchGoogle;
-    if(on)
-    {
-        searchGoogle = new CSearchGoogle(this);
-    }
-}
-
-bool CGisListWks::event(QEvent * e)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    switch(e->type())
-    {
-    case eEvtD2WReqInfo:
-    {
-        CEvtD2WReqInfo * evt = (CEvtD2WReqInfo*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        if(project)
-        {
-            project->postStatus();
-        }
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
-    case eEvtD2WShowFolder:
-    {
-        CEvtD2WShowFolder * evt = (CEvtD2WShowFolder*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        if(project == 0)
-        {
-            project = new CDBProject(evt->db, evt->id, this);
-            if(!project->isValid())
-            {
-                delete project;
-            }
-        }
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
-    case eEvtD2WHideFolder:
-    {
-        CEvtD2WHideFolder * evt = (CEvtD2WHideFolder*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        delete project;
-
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
-    case eEvtD2WShowItems:
-    {
-        CEvtD2WShowItems * evt = (CEvtD2WShowItems*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        if(project)
-        {
-            project->showItems(evt);
-        }
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
-    case eEvtD2WHideItems:
-    {
-        CEvtD2WHideItems * evt = (CEvtD2WHideItems*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        if(project)
-        {
-            project->hideItems(evt);
-        }
-        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
deleted file mode 100644
index a741a60..0000000
--- a/.hg/Trashcan/CGisListWks_HrzlcL.cpp.bak
+++ /dev/null
@@ -1,159 +0,0 @@
-/**********************************************************************************************
-    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/.hg/Trashcan/CGisListWks_N1Po8J.cpp.bak b/.hg/Trashcan/CGisListWks_N1Po8J.cpp.bak
deleted file mode 100644
index a42c1d1..0000000
--- a/.hg/Trashcan/CGisListWks_N1Po8J.cpp.bak
+++ /dev/null
@@ -1,1122 +0,0 @@
-/**********************************************************************************************
-    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 "config.h"
-#include "gis/CGisListWks.h"
-#include "gis/CGisWidget.h"
-#include "gis/IGisItem.h"
-#include "gis/db/CDBProject.h"
-#include "gis/db/macros.h"
-#include "gis/gpx/CGpxProject.h"
-#include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/prj/IGisProject.h"
-#include "gis/qms/CQmsProject.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/search/CSearchGoogle.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CSelectProjectDialog.h"
-#include "helpers/CSelectCopyAction.h"
-#include "helpers/CSettings.h"
-
-#include <QtSql>
-#include <QtWidgets>
-
-#define DB_VERSION 1
-
-class CGisListWksEditLock
-{
-    public:
-        CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
-        {
-            if(waitCursor)
-            {
-                QApplication::setOverrideCursor(Qt::WaitCursor);
-            }
-            mutex.lock();
-        }
-        ~CGisListWksEditLock()
-        {
-            if(waitCursor)
-            {
-                QApplication::restoreOverrideCursor();
-            }
-            mutex.unlock();
-        }
-    private:
-        QMutex& mutex;
-        bool waitCursor;
-
-};
-
-
-CGisListWks::CGisListWks(QWidget *parent)
-    : QTreeWidget(parent)
-    , menuNone(0)
-    , saveOnExit(true)
-    , saveEvery(5)
-{
-    db = QSqlDatabase::addDatabase("QSQLITE","Workspace1");
-    db.setDatabaseName(QDir::home().filePath(CONFIGDIR).append("/workspace.db"));
-    db.open();
-    configDB();
-
-    menuProject     = new QMenu(this);
-    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()));
-    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)));
-
-    menuItem        = new QMenu(this);
-    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;
-    saveOnExit  = cfg.value("Database/saveOnExit", saveOnExit).toBool();
-    saveEvery   = cfg.value("Database/saveEvery", saveEvery).toInt();
-
-    if(saveOnExit && (saveEvery > 0))
-    {
-        QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
-    }
-
-    QTimer::singleShot(500, this, SLOT(slotLoadWorkspace()));
-}
-
-CGisListWks::~CGisListWks()
-{
-}
-
-void CGisListWks::configDB()
-{
-    QSqlQuery query(db);
-    if(!query.exec("PRAGMA locking_mode=EXCLUSIVE"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA synchronous=OFF"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA temp_store=MEMORY"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA default_cache_size=50"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA page_size=8192"))
-    {
-        return;
-    }
-
-    if(!query.exec("SELECT version FROM versioninfo"))
-    {
-        initDB();
-    }
-    else if(query.next())
-    {
-        int version = query.value(0).toInt();
-        if(version != DB_VERSION)
-        {
-            migrateDB(version);
-        }
-    }
-    else
-    {
-        initDB();
-    }
-}
-
-void CGisListWks::initDB()
-{
-    QSqlQuery query(db);
-
-    if(query.exec( "CREATE TABLE versioninfo ( version TEXT )"))
-    {
-        query.prepare( "INSERT INTO versioninfo (version) VALUES(:version)");
-        query.bindValue(":version", DB_VERSION);
-        QUERY_EXEC(; );
-    }
-
-    if(!query.exec( "CREATE TABLE workspace ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "type           INTEGER NOT NULL,"
-                    "name           TEXT NOT NULL,"
-                    "key            TEXT NOT NULL,"
-                    "changed        BOOLEAN DEFAULT FALSE,"
-                    "data           BLOB NOT NULL"
-
-                    ")"))
-    {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
-    }
-}
-
-void CGisListWks::migrateDB(int version)
-{
-    QSqlQuery query(db);
-
-    for(version++; version <= DB_VERSION; version++)
-    {
-        switch(version)
-        {
-        }
-    }
-    query.prepare( "UPDATE versioninfo set version=:version");
-    query.bindValue(":version", version - 1);
-    QUERY_EXEC(; );
-}
-
-void CGisListWks::setExternalMenu(QMenu * project)
-{
-    menuNone = project;
-    connect(CMainWindow::self().findChild<QAction*>("actionAddEmptyProject"), SIGNAL(triggered()), this, SLOT(slotAddEmptyProject()));
-    connect(CMainWindow::self().findChild<QAction*>("actionCloseAllProjects"), SIGNAL(triggered(bool)), this, SLOT(slotCloseAllProjects()));
-    connect(CMainWindow::self().findChild<QAction*>("actionSearchGoogle"), SIGNAL(triggered(bool)), this, SLOT(slotSearchGoogle(bool)));
-}
-
-void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
-{
-    QTreeWidgetItem * item1 = currentItem();
-    QTreeWidgetItem * item2 = itemAt(e->pos());
-
-
-    // changeing the item order is only valid for single selected items
-    if(selectedItems().count() == 1)
-    {
-        /*
-            What's happening here?
-
-            1) Cast current item and item under cursor to GIS item type
-            2) If type matches for both test for common parent
-            2.1) common parent->  move
-            2.1) different parent -> copy
-            3) go on with dragMoveEvent();
-
-         */
-
-        CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(item1);
-        CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(item2);
-
-        if(trk1 && trk2)
-        {
-            if(trk1->parent() == trk2->parent())
-            {
-                e->setDropAction(Qt::MoveAction);
-            }
-            else
-            {
-                e->setDropAction(Qt::CopyAction);
-            }
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-
-        CGisItemWpt * wpt1 = dynamic_cast<CGisItemWpt*>(item1);
-        CGisItemWpt * wpt2 = dynamic_cast<CGisItemWpt*>(item2);
-
-        if(wpt1 && wpt2)
-        {
-            if(wpt1->parent() == wpt2->parent())
-            {
-                e->setDropAction(Qt::MoveAction);
-            }
-            else
-            {
-                e->setDropAction(Qt::CopyAction);
-            }
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-
-        CGisItemRte * rte1 = dynamic_cast<CGisItemRte*>(item1);
-        CGisItemRte * rte2 = dynamic_cast<CGisItemRte*>(item2);
-
-        if(rte1 && rte2)
-        {
-            if(rte1->parent() == rte2->parent())
-            {
-                e->setDropAction(Qt::MoveAction);
-            }
-            else
-            {
-                e->setDropAction(Qt::CopyAction);
-            }
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-
-        CGisItemOvlArea * area1 = dynamic_cast<CGisItemOvlArea*>(item1);
-        CGisItemOvlArea * area2 = dynamic_cast<CGisItemOvlArea*>(item2);
-
-        if(area1 && area2)
-        {
-            if(area1->parent() == area2->parent())
-            {
-                e->setDropAction(Qt::MoveAction);
-            }
-            else
-            {
-                e->setDropAction(Qt::CopyAction);
-            }
-            QTreeWidget::dragMoveEvent(e);
-            return;
-        }
-    }
-
-    IGisProject * proj = dynamic_cast<IGisProject*>(item2);
-    if(proj && (proj != currentItem()->parent()))
-    {
-        e->setDropAction(Qt::CopyAction);
-        QTreeWidget::dragMoveEvent(e);
-        return;
-    }
-
-    e->setDropAction(Qt::IgnoreAction);
-    QTreeWidget::dragMoveEvent(e);
-}
-
-void CGisListWks::dropEvent ( QDropEvent  * e )
-{
-
-    QList<QTreeWidgetItem*> items   = selectedItems();
-    if(items.isEmpty())
-    {
-        return;
-    }
-
-    int lastResult = CSelectCopyAction::eResultNone;
-
-    // go on with item insertion
-    /*
-        What's happening here?
-
-        for single selected items do:
-        1) Test if item will be inserted above ore below item under cursor.
-        2) Cast current item and item under cursor to GIS item type
-        3) If type matches for both test for common parent
-        3.1) common parent-> go on with default drop event
-        3.1) different parent -> create a copy and insert it index
-        4) signal change of project
-
-        for single and multiple selected items, do:
-        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)
-        QRect r = visualItemRect(itemAt(e->pos()));
-        int y1 = r.top() + r.height()/2;
-        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()));
-
-        if(wpt1 && wpt2)
-        {
-            if(wpt1->parent() == wpt2->parent())
-            {
-                QTreeWidget::dropEvent(e);
-            }
-            else
-            {
-                IGisProject * project = dynamic_cast<IGisProject*>(wpt2->parent());
-                if(project)
-                {
-                    project->insertCopyOfItem(wpt1, off, lastResult);
-                }
-            }
-            emit sigChanged();
-            return;
-        }
-
-        CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(currentItem());
-        CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(itemAt(e->pos()));
-
-        if(trk1 && trk2)
-        {
-            if(trk1->parent() == trk2->parent())
-            {
-                QTreeWidget::dropEvent(e);
-            }
-            else
-            {
-                IGisProject * project = dynamic_cast<IGisProject*>(trk2->parent());
-                if(project)
-                {
-                    project->insertCopyOfItem(trk1, off, lastResult);
-                }
-            }
-            emit sigChanged();
-            return;
-        }
-
-        CGisItemRte * rte1 = dynamic_cast<CGisItemRte*>(currentItem());
-        CGisItemRte * rte2 = dynamic_cast<CGisItemRte*>(itemAt(e->pos()));
-
-        if(rte1 && rte2)
-        {
-            if(rte1->parent() == rte2->parent())
-            {
-                QTreeWidget::dropEvent(e);
-            }
-            else
-            {
-                IGisProject * project = dynamic_cast<IGisProject*>(rte2->parent());
-                if(project)
-                {
-                    project->insertCopyOfItem(rte1, off, lastResult);
-                }
-            }
-            emit sigChanged();
-            return;
-        }
-
-        CGisItemOvlArea * area1 = dynamic_cast<CGisItemOvlArea*>(currentItem());
-        CGisItemOvlArea * area2 = dynamic_cast<CGisItemOvlArea*>(itemAt(e->pos()));
-
-        if(area1 && area2)
-        {
-            if(area1->parent() == area2->parent())
-            {
-                QTreeWidget::dropEvent(e);
-            }
-            else
-            {
-                IGisProject * project = dynamic_cast<IGisProject*>(area2->parent());
-                if(project)
-                {
-                    project->insertCopyOfItem(area1, off, lastResult);
-                }
-            }
-            emit sigChanged();
-            return;
-        }
-    }
-
-    // check if item at position is a project and insert a copy of all selected items
-    IGisProject * project = dynamic_cast<IGisProject*>(itemAt(e->pos()));
-    if(project)
-    {
-        int cnt = 1;
-        int N   = items.size();
-        QProgressDialog progress("Drop items...", "Abort drop", 0, 100, this);
-        progress.setWindowModality(Qt::WindowModal);
-
-        foreach(QTreeWidgetItem * item, items)
-        {
-            progress.setValue((100 * cnt++) / N);
-            if (progress.wasCanceled())
-            {
-                break;
-            }
-
-            IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-            if(gisItem)
-            {
-                project->insertCopyOfItem(gisItem, -1, lastResult);
-            }
-        }
-    }
-    emit sigChanged();
-}
-
-
-bool CGisListWks::hasProject(IGisProject * project)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    QString key = project->getKey();
-
-    for(int i = 0; i < topLevelItemCount(); i++)
-    {
-        IGisProject * item = dynamic_cast<IGisProject*>(topLevelItem(i));
-        if(item && item->getKey() == key)
-        {
-            if(item != project)
-            {
-                return(true);
-            }
-        }
-    }
-    return(false);
-}
-
-IGisProject * CGisListWks::getProjectByKey(const QString& key)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    for(int i = 0; i < topLevelItemCount(); i++)
-    {
-        IGisProject * item = dynamic_cast<IGisProject*>(topLevelItem(i));
-        if(item && item->getKey() == key)
-        {
-            return item;
-        }
-    }
-    return 0;
-}
-
-CDBProject * CGisListWks::getProjectById(quint64 id, const QString& db)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    for(int i = 0; i < topLevelItemCount(); i++)
-    {
-        CDBProject * item = dynamic_cast<CDBProject*>(topLevelItem(i));
-        if(item && item->getId() == id && item->getDBName() == db)
-        {
-            return item;
-        }
-    }
-    return 0;
-
-}
-
-void CGisListWks::slotSaveWorkspace()
-{
-    if(!saveOnExit)
-    {
-        return;
-    }
-
-    QSqlQuery query(db);
-    if(!query.exec("DELETE FROM workspace"))
-    {
-        QUERY_EXEC(return );
-    }
-
-    qDebug() << "slotSaveWorkspace()";
-
-    const int total = topLevelItemCount();
-    PROGRESS_SETUP(tr("Saving workspace. Please wait."), total);
-
-    for(int i = 0; i < total; i++)
-    {
-        PROGRESS(i, return );
-
-        IGisProject * project = dynamic_cast<IGisProject*>(topLevelItem(i));
-        if(project == 0)
-        {
-            continue;
-        }
-
-        QByteArray data;
-        QDataStream stream(&data, QIODevice::WriteOnly);
-        stream.setVersion(QDataStream::Qt_5_2);
-        stream.setByteOrder(QDataStream::LittleEndian);
-
-        project->IGisProject::operator>>(stream);
-
-        query.prepare("INSERT INTO workspace (type, key, name, changed, data) VALUES (:type, :key, :name, :changed, :data)");
-        query.bindValue(":type", project->getType());
-        query.bindValue(":key", project->getKey());
-        query.bindValue(":name", project->getName());
-        query.bindValue(":changed", project->text(1) == "*");
-        query.bindValue(":data", data);
-        QUERY_EXEC(continue);
-    }
-
-    if(saveEvery)
-    {
-        QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
-    }
-}
-
-void CGisListWks::slotLoadWorkspace()
-{
-    QSqlQuery query(db);
-
-    query.prepare("SELECT type, key, name, changed, data FROM workspace");
-    QUERY_EXEC(return );
-
-    PROGRESS_SETUP(tr("Loading workspace. Please wait."), query.size());
-    quint32 progCnt = 0;
-
-    while(query.next())
-    {
-        PROGRESS(progCnt++, return );
-
-        int type        = query.value(0).toInt();
-        QString name    = query.value(2).toString();
-        bool changed    = query.value(3).toBool();
-        QByteArray data = query.value(4).toByteArray();
-
-        QDataStream stream(&data, QIODevice::ReadOnly);
-        stream.setVersion(QDataStream::Qt_5_2);
-        stream.setByteOrder(QDataStream::LittleEndian);
-
-        IGisProject * project = 0;
-        switch(type)
-        {
-        case IGisProject::eTypeQms:
-        {
-            project = new CQmsProject(name, this);
-            *project << stream;
-            break;
-        }
-
-        case IGisProject::eTypeGpx:
-        {
-            project = new CGpxProject(name, this);
-            *project << stream;
-            break;
-        }
-
-        case IGisProject::eTypeDb:
-        {
-            CDBProject * dbProject;
-            project = dbProject = new CDBProject(this);
-            project->IGisProject::operator<<(stream);
-            dbProject->restoreDBLink();
-            if(!project->isValid())
-            {
-                delete project;
-                project = 0;
-            }
-            else
-            {
-                dbProject->postStatus();
-            }
-            break;
-        }
-        }
-
-        if(project == 0)
-        {
-            continue;
-        }
-
-        project->setToolTip(eColumnName,project->getInfo());
-        if(changed)
-        {
-            project->setText(eColumnDecoration, "*");
-        }
-    }
-
-    emit sigChanged();
-}
-
-void CGisListWks::slotContextMenu(const QPoint& point)
-{
-    if(selectedItems().isEmpty() && menuNone)
-    {
-        QPoint p = mapToGlobal(point);
-        menuNone->exec(p);
-        return;
-    }
-
-    if(selectedItems().count() > 1)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-        if(project != 0)
-        {
-            actionEditPrj->setVisible(false);
-
-            QPoint p = mapToGlobal(point);
-            menuProject->exec(p);
-            return;
-        }
-
-        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;
-    }
-
-    if(selectedItems().count() == 1)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-        if(project != 0)
-        {
-            actionEditPrj->setVisible(true);
-
-            QPoint p = mapToGlobal(point);
-            menuProject->exec(p);
-            return;
-        }
-
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
-        if(gisItem != 0)
-        {
-            actionEditDetails->setVisible(true);
-
-            // 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());
-            }
-
-            // 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());
-            }
-
-            // 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;
-        }
-    }
-}
-
-void CGisListWks::slotCloseProject()
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            delete project;
-        }
-    }
-    emit sigChanged();
-}
-
-void CGisListWks::slotSaveProject()
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            project->save();
-        }
-    }
-}
-
-void CGisListWks::slotSaveAsProject()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            project->saveAs();
-        }
-    }
-}
-
-void CGisListWks::slotEditPrj()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-
-    IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-    if(project != 0)
-    {
-        project->edit();
-    }
-
-}
-
-void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-    if(gisItem != 0)
-    {
-        CMainWindow::self().zoomCanvasTo(gisItem->getBoundingRect());
-        CGisWidget::self().focusTrkByKey(true, gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotEditItem()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().editItemByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotDeleteItem()
-{        
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    QList<QTreeWidgetItem*> items       = selectedItems();
-    QMessageBox::StandardButtons last   = QMessageBox::NoButton;
-
-    QSet<CDBProject*> projects;
-
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-        if(gisItem != 0)
-        {
-            bool yes = false;
-            IGisProject * project = dynamic_cast<IGisProject*>(gisItem->parent());
-            if(project)
-            {
-                yes = project->delItemByKey(gisItem->getKey(), last);
-            }
-
-            /*
-                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);
-            }
-
-            if(last == QMessageBox::Cancel)
-            {
-                break;
-            }
-        }
-    }
-
-    // make all database projects that are changed to post their new status
-    // this will update the database view.
-    foreach(CDBProject * project, projects)
-    {
-        if(project)
-        {
-            project->postStatus();
-        }
-    }
-}
-
-void CGisListWks::slotCopyItem()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
-    {
-        return;
-    }
-
-    int lastResult = CSelectCopyAction::eResultNone;
-
-    QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-        if(gisItem == 0)
-        {
-            continue;
-        }
-
-        project->insertCopyOfItem(gisItem, -1, lastResult);
-    }
-}
-
-void CGisListWks::slotProjWpt()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().projWptByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotMoveWpt()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().moveWptByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotFocusTrk(bool on)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().focusTrkByKey(on, gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotEditTrk()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().editTrkByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotReverseTrk()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().reverseTrkByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotCombineTrk()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().combineTrkByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotRangeTrk()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().rangeTrkByKey(gisItem->getKey());
-    }
-}
-
-void CGisListWks::slotEditArea()
-{
-    CGisListWksEditLock lock(false, IGisItem::mutexItems);
-    CGisItemOvlArea * gisItem = dynamic_cast<CGisItemOvlArea*>(currentItem());
-    if(gisItem != 0)
-    {
-        CGisWidget::self().editAreaByKey(gisItem->getKey());
-    }
-}
-
-
-void CGisListWks::slotAddEmptyProject()
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    QString key, name;
-    CSelectProjectDialog::type_e type;
-    CSelectProjectDialog dlg(key, name, type, 0);
-    dlg.exec();
-    if(name.isEmpty())
-    {
-        return;
-    }
-
-    if(type == CSelectProjectDialog::eTypeGpx)
-    {
-        new CGpxProject(name, this);
-    }
-    else if(type == CSelectProjectDialog::eTypeQms)
-    {
-        new CQmsProject(name, this);
-    }
-}
-
-void CGisListWks::slotCloseAllProjects()
-{
-    int res = QMessageBox::question(this, tr("Close all projects..."), tr("This will remove all projects from the workspace."), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
-    if(res != QMessageBox::Ok)
-    {
-        return;
-    }
-
-
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    QList<QTreeWidgetItem*> items = findItems("*", Qt::MatchWildcard);
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            delete project;
-        }
-    }
-    emit sigChanged();
-}
-
-void CGisListWks::slotSearchGoogle(bool on)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    delete searchGoogle;
-    if(on)
-    {
-        searchGoogle = new CSearchGoogle(this);
-    }
-}
-
-bool CGisListWks::event(QEvent * e)
-{
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-
-    switch(e->type())
-    {
-    case eEvtD2WReqInfo:
-    {
-        CEvtD2WReqInfo * evt = (CEvtD2WReqInfo*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        if(project)
-        {
-            project->postStatus();
-        }
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
-    case eEvtD2WShowFolder:
-    {
-        CEvtD2WShowFolder * evt = (CEvtD2WShowFolder*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        if(project == 0)
-        {
-            project = new CDBProject(evt->db, evt->id, this);
-            if(!project->isValid())
-            {
-                delete project;
-            }
-        }
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
-    case eEvtD2WHideFolder:
-    {
-        CEvtD2WHideFolder * evt = (CEvtD2WHideFolder*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        delete project;
-
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
-    case eEvtD2WShowItems:
-    {
-        CEvtD2WShowItems * evt = (CEvtD2WShowItems*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        if(project)
-        {
-            project->showItems(evt);
-        }
-        e->accept();
-        emit sigChanged();
-        return true;
-    }
-    case eEvtD2WHideItems:
-    {
-        CEvtD2WHideItems * evt = (CEvtD2WHideItems*)e;
-        CDBProject * project =  getProjectById(evt->id, evt->db);
-        if(project)
-        {
-            project->hideItems(evt);
-        }
-        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
deleted file mode 100644
index cafa59e..0000000
--- a/.hg/Trashcan/CGisListWks_w3G0J5.cpp.bak
+++ /dev/null
@@ -1,164 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index 8d65daa..0000000
--- a/.hg/Trashcan/CGisWidget_0r6eN4.cpp.bak
+++ /dev/null
@@ -1,215 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index c484731..0000000
--- a/.hg/Trashcan/CGisWidget_1Gl0ex.cpp.bak
+++ /dev/null
@@ -1,217 +0,0 @@
-/**********************************************************************************************
-    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/.hg/Trashcan/CMakeLists_OYf8I5.txt.bak b/.hg/Trashcan/CMakeLists_OYf8I5.txt.bak
deleted file mode 100644
index 95b1823..0000000
--- a/.hg/Trashcan/CMakeLists_OYf8I5.txt.bak
+++ /dev/null
@@ -1,102 +0,0 @@
-cmake_minimum_required(VERSION 3.0.0)
-
-project(QMapShack)
-
-# has to be removed later on
-
-if(UNIX)
-#set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /opt/Qt/5.3/gcc_64)
-endif(UNIX)
-
-
-if(WIN32)
-set(QT_DEV_PATH   "" CACHE PATH "Path to directory containing Qt5 include and lib, e.g. C:\\Qt5\\5.3\\msvc2013_64")
-set(GDAL_DEV_PATH "" CACHE PATH "Path to directory containing GDAL include and lib, e.g. M:\\lib\\gdal")
-set(PROJ_DEV_PATH "" CACHE PATH "Path to directory containing PROJ.4 include and lib, e.g. M:\\lib\\PROJ")
-set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${QT_DEV_PATH})
-endif(WIN32)
-
-
-set(APPLICATION_NAME qmapshack)
-
-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})
-
-
-if (APPLE)
-  set(PROGNAME "QMapShack")
-  set(CONFIGDIR "Library/Application Support/${PROGNAME}/")
-  set(MAC_BUNDLE_PATH ${EXECUTABLE_OUTPUT_PATH}/${PROGNAME}.app)
-  set(MAC_ICON_FILE qmapshack.icns)
-  set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR}.${APPLICATION_VERSION_PATCH})
-  set(MACOSX_BUNDLE_ICON_FILE ${MAC_ICON_FILE})
-  set(MACOSX_BUNDLE_BUNDLE_NAME ${PROGNAME})
-  set(MACOSX_BUNDLE_BUNDLE_VERSION ${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR})
-  set(MACOSX_BUNDLE_GUI_IDENTIFIER org.qlandkarte.QMapShack)
-else(APPLE)
-  set(PROGNAME qmapshack)
-  set(CONFIGDIR ".config/QLandkarte/")
-endif(APPLE)
-if(MSVC)
-  # Add link-time code generation to improve performance
-  set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
-  set(CMAKE_EXE_LINKER_FLAGS_RELEASE    "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")
-  set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /LTCG")
-  set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG")
-endif(MSVC)
-
-# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
-set(CMAKE_MODULE_PATH
-  ${CMAKE_SOURCE_DIR}/cmake/Modules
-)
-
-# add definitions
-include(DefineCMakeDefaults)
-include(DefineCompilerFlags)
-include(DefineInstallationPaths)
-include(CPackConfig.cmake)
-
-include(ConfigureChecks.cmake)
-configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
-
-
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
-add_subdirectory(3rdparty/CGetOpt)
-#add_subdirectory(3rdparty/DBConverter)
-add_subdirectory(src)
-
-
-if (UNIX AND NOT WIN32 AND NOT APPLE)
-  install(
-    FILES
-      qmapshack.desktop
-    DESTINATION
-      ${XDG_APPS_DIR}
-  )
-
-  install(
-    FILES
-      src/icons/48x48/QMapShack.png
-    DESTINATION
-      ${DATA_INSTALL_PREFIX}/pixmaps
-  )
-
-  install(
-    FILES
-      qmapshack.1
-    DESTINATION
-      ${MAN_INSTALL_DIR}/man1
-  )
-endif (UNIX AND NOT WIN32 AND NOT APPLE)
-
-CONFIGURE_FILE(
-  "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
-  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
-  IMMEDIATE @ONLY)
-
-ADD_CUSTOM_TARGET(uninstall
-  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
-
diff --git a/.hg/Trashcan/CMakeLists_SIS4BY.txt.bak b/.hg/Trashcan/CMakeLists_SIS4BY.txt.bak
deleted file mode 100644
index 88273f0..0000000
--- a/.hg/Trashcan/CMakeLists_SIS4BY.txt.bak
+++ /dev/null
@@ -1,256 +0,0 @@
-
-# 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/.hg/Trashcan/CMakeLists_XwOIvC.txt.bak b/.hg/Trashcan/CMakeLists_XwOIvC.txt.bak
deleted file mode 100644
index 116fd7e..0000000
--- a/.hg/Trashcan/CMakeLists_XwOIvC.txt.bak
+++ /dev/null
@@ -1,102 +0,0 @@
-cmake_minimum_required(VERSION 3.0.0)
-
-project(QMapShack)
-
-# has to be removed later on
-
-if(UNIX)
-#set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /opt/Qt/5.3/gcc_64)
-endif(UNIX)
-
-
-if(WIN32)
-set(QT_DEV_PATH   "" CACHE PATH "Path to directory containing Qt5 include and lib, e.g. C:\\Qt5\\5.3\\msvc2013_64")
-set(GDAL_DEV_PATH "" CACHE PATH "Path to directory containing GDAL include and lib, e.g. M:\\lib\\gdal")
-set(PROJ_DEV_PATH "" CACHE PATH "Path to directory containing PROJ.4 include and lib, e.g. M:\\lib\\PROJ")
-set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${QT_DEV_PATH})
-endif(WIN32)
-
-
-set(APPLICATION_NAME qmapshack)
-
-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})
-
-
-if (APPLE)
-  set(PROGNAME "QMapShack")
-  set(CONFIGDIR "Library/Application Support/${PROGNAME}/")
-  set(MAC_BUNDLE_PATH ${EXECUTABLE_OUTPUT_PATH}/${PROGNAME}.app)
-  set(MAC_ICON_FILE qmapshack.icns)
-  set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR}.${APPLICATION_VERSION_PATCH})
-  set(MACOSX_BUNDLE_ICON_FILE ${MAC_ICON_FILE})
-  set(MACOSX_BUNDLE_BUNDLE_NAME ${PROGNAME})
-  set(MACOSX_BUNDLE_BUNDLE_VERSION ${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR})
-  set(MACOSX_BUNDLE_GUI_IDENTIFIER org.qlandkarte.QMapShack)
-else(APPLE)
-  set(PROGNAME qmapshack)
-  set(CONFIGDIR ".config/QLandkarte/")
-endif(APPLE)
-if(MSVC)
-  # Add link-time code generation to improve performance
-  set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
-  set(CMAKE_EXE_LINKER_FLAGS_RELEASE    "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")
-  set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /LTCG")
-  set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG")
-endif(MSVC)
-
-# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
-set(CMAKE_MODULE_PATH
-  ${CMAKE_SOURCE_DIR}/cmake/Modules
-)
-
-# add definitions
-include(DefineCMakeDefaults)
-include(DefineCompilerFlags)
-include(DefineInstallationPaths)
-include(CPackConfig.cmake)
-
-include(ConfigureChecks.cmake)
-configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
-
-
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
-add_subdirectory(3rdparty/CGetOpt)
-#add_subdirectory(3rdparty/DBConverter)
-add_subdirectory(src)
-
-
-if (UNIX AND NOT WIN32 AND NOT APPLE)
-  install(
-    FILES
-      qmapshack.desktop
-    DESTINATION
-      ${XDG_APPS_DIR}
-  )
-
-  install(
-    FILES
-      src/icons/48x48/QMapShack.png
-    DESTINATION
-      ${DATA_INSTALL_PREFIX}/pixmaps
-  )
-
-  install(
-    FILES
-      qmapshack.1
-    DESTINATION
-      ${MAN_INSTALL_DIR}/man1
-  )
-endif (UNIX AND NOT WIN32 AND NOT APPLE)
-
-CONFIGURE_FILE(
-  "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
-  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
-  IMMEDIATE @ONLY)
-
-ADD_CUSTOM_TARGET(uninstall
-  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
-
diff --git a/.hg/Trashcan/CMakeLists_lr2bNv.txt.bak b/.hg/Trashcan/CMakeLists_lr2bNv.txt.bak
deleted file mode 100644
index e9e689e..0000000
--- a/.hg/Trashcan/CMakeLists_lr2bNv.txt.bak
+++ /dev/null
@@ -1,253 +0,0 @@
-
-# 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
deleted file mode 100644
index 56e90cf..0000000
--- a/.hg/Trashcan/CPlotSpeed__YNWxV.cpp.bak
+++ /dev/null
@@ -1,116 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index abccd2c..0000000
--- a/.hg/Trashcan/CScrOptWpt_XBKh1B.cpp.bak
+++ /dev/null
@@ -1,89 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index f209af8..0000000
--- a/.hg/Trashcan/CScrOptWpt_xMZh5g.cpp.bak
+++ /dev/null
@@ -1,89 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index b6af0a7..0000000
--- a/.hg/Trashcan/IGisItem_5WFVpa.h.bak
+++ /dev/null
@@ -1,375 +0,0 @@
-/**********************************************************************************************
-    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/.hg/Trashcan/IGisItem_APOLa5.cpp.bak b/.hg/Trashcan/IGisItem_APOLa5.cpp.bak
deleted file mode 100644
index 743cc15..0000000
--- a/.hg/Trashcan/IGisItem_APOLa5.cpp.bak
+++ /dev/null
@@ -1,623 +0,0 @@
-/**********************************************************************************************
-    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 "gis/CGisListWks.h"
-#include "gis/prj/IGisProject.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 <QtXml>
-#include <QtWidgets>
-#include <QtSql>
-
-QMutex IGisItem::mutexItems(QMutex::Recursive);
-
-QString IGisItem::noKey;
-
-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(IGisProject *parent, type_e typ, int idx)
-    : QTreeWidgetItem(parent, typ)
-    , flags(0)
-{
-    int n;
-    setFlags(QTreeWidgetItem::flags() & ~Qt::ItemIsDropEnabled);
-
-    if(parent == 0)
-    {
-        return;
-    }
-
-    key.project = parent->getKey();
-    if(idx >= 0)
-    {
-        parent->removeChild(this);
-        parent->insertChild(idx, this);
-    }
-    else
-    {
-        if(type() == eTypeTrk)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeRte)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if( childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeWpt)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeWpt || childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeOvl)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeOvl || childType == eTypeWpt || childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-
-        if(n < 0)
-        {
-            parent->removeChild(this);
-            parent->insertChild(0, this);
-        }
-    }
-}
-
-IGisItem::~IGisItem()
-{
-
-}
-
-void IGisItem::genKey()
-{
-    if(key.item.isEmpty())
-    {
-        QByteArray buffer;
-        QDataStream stream(&buffer, QIODevice::WriteOnly);
-        stream.setByteOrder(QDataStream::LittleEndian);
-        stream.setVersion(QDataStream::Qt_5_2);
-
-        *this >> stream;
-
-        QCryptographicHash md5(QCryptographicHash::Md5);
-        md5.addData(buffer);
-        key.item = md5.result().toHex();
-    }
-}
-
-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);
-    if(query.next())
-    {
-        QByteArray data(query.value(0).toByteArray());
-        QDataStream in(&data, QIODevice::ReadOnly);
-        in.setByteOrder(QDataStream::LittleEndian);
-        in.setVersion(QDataStream::Qt_5_2);
-        in >> history;
-        loadHistory(history.histIdxCurrent);
-    }
-}
-
-QString IGisItem::getNameEx() const
-{
-    QString str = getName();
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project)
-    {
-        str += " @ " + project->getName();
-    }
-    return str;
-}
-
-
-void IGisItem::updateDecoration(mark_e enable, mark_e disable)
-{
-    // update text and icon
-    setToolTip(CGisListWks::eColumnName,getInfo());
-    setText(CGisListWks::eColumnName, getName());
-    setSymbol();
-
-    // update project if necessary
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project && (enable & eMarkChanged))
-    {
-        project->setText(CGisListWks::eColumnDecoration,"*");
-    }
-
-    // set marks in column 1
-    quint32 mask = data(1,Qt::UserRole).toUInt();
-    mask |=  enable;
-    mask &= ~disable;
-    setData(1, Qt::UserRole, mask);
-
-    QString str;
-    if(mask & eMarkChanged)
-    {
-        str += "*";
-    }
-    setText(CGisListWks::eColumnDecoration, str);
-}
-
-
-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;
-    }
-
-    // forget all history entries after the current entry
-    for(int i = history.events.size() - 1; i > history.histIdxCurrent; i--)
-    {
-        history.events.pop_back();
-    }
-
-    // append history by new entry
-    history.events << history_event_t();
-    history_event_t& event = history.events.last();
-    event.time      = QDateTime::currentDateTimeUtc();
-    event.comment   = what;
-    event.icon      = icon;
-
-    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();
-
-    history.histIdxCurrent = history.events.size() - 1;
-
-    updateDecoration(eMarkChanged, eMarkNone);
-}
-
-void IGisItem::setupHistory()
-{    
-    history.histIdxInitial = -1;
-    history.histIdxCurrent = -1;
-
-    // if history is empty setup an initial item
-    if(history.events.isEmpty())
-    {
-        history.events << history_event_t();
-        history_event_t& event = history.events.last();
-        event.time      = QDateTime::currentDateTimeUtc();
-        event.comment   = QObject::tr("Initial version.");
-        event.icon      = "://icons/48x48/Start.png";        
-    }
-
-    // search for the first item with data
-    for(int i = 0; i < history.events.size(); i++)
-    {
-        if(!history.events[i].data.isEmpty())
-        {
-            history.histIdxInitial = i;
-            break;
-        }
-    }
-
-    // if no initial item can be found fill the last item with data
-    // and make it the initial item
-    if(history.histIdxInitial == -1)
-    {
-        history_event_t& event = history.events.last();
-
-        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();
-
-        history.histIdxInitial = history.events.size() - 1;
-    }
-
-    history.histIdxCurrent = history.events.size() - 1;
-}
-
-void IGisItem::loadHistory(int idx)
-{
-    // test for bad index
-    if((idx >= history.events.size()) || (idx < 0))
-    {
-        return;
-    }
-
-    history_event_t& event = history.events[idx];
-
-    // test for no data
-    if(event.data.isEmpty())
-    {
-        return;
-    }
-
-    // restore item from history entry
-    QDataStream stream(&event.data, QIODevice::ReadOnly);
-    stream.setByteOrder(QDataStream::LittleEndian);
-    stream.setVersion(QDataStream::Qt_5_2);
-    *this << stream;
-
-    history.histIdxCurrent = idx;
-}
-
-void IGisItem::cutHistory()
-{
-    while(history.events.size() > (history.histIdxCurrent + 1))
-    {
-        history.events.pop_back();
-    }
-}
-
-bool IGisItem::isReadOnly() const
-{
-    return !(flags & eFlagWriteAllowed);
-}
-
-bool IGisItem::isTainted() const
-{
-    return (flags & eFlagTainted);
-}
-
-void IGisItem::setReadOnlyMode(bool readOnly)
-{
-    if(!(flags & (eFlagCreatedInQms|eFlagTainted)))
-    {
-        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)
-            {
-                return;
-            }
-        }
-    }
-
-    if(readOnly)
-    {
-        flags &= ~eFlagWriteAllowed;
-    }
-    else
-    {
-        flags |= eFlagWriteAllowed;
-    }
-}
-
-
-const IGisItem::key_t &IGisItem::getKey()
-{
-    if(key.item.isEmpty())
-    {
-        genKey();
-    }
-    return key;
-}
-
-QColor IGisItem::str2color(const QString& name)
-{
-    QColor ref(name);
-    const color_t * p = colorMap;
-    while(p->name)
-    {
-        if(p->color == ref)
-        {
-            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;
-    qreal  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((qreal)(pt.y() - pt1.y()), (qreal)(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();
-}
-
-
-QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str)
-{
-    if(isReadOnly)
-    {
-        return QString("%1").arg(str);
-    }
-
-    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)
-{
-    QString str;
-
-    str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"));
-    if(removeHtml(cmt).simplified().isEmpty())
-    {
-        str += QObject::tr("<p>--- no comment ---</p>");
-    }
-    else
-    {
-        str += cmt;
-    }
-
-    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
-    if(removeHtml(desc).simplified().isEmpty())
-    {
-        str += QObject::tr("<p>--- no description ---</p>");
-    }
-    else
-    {
-        str += desc;
-    }
-
-    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
-    if(links.isEmpty())
-    {
-        str += QObject::tr("<p>--- no links ---</p>");
-    }
-    else
-    {
-        foreach(const link_t& link, links)
-        {
-            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)
-{
-    QString str;
-
-    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
-    if(removeHtml(desc).simplified().isEmpty())
-    {
-        str += QObject::tr("<p>--- no description ---</p>");
-    }
-    else
-    {
-        str += desc;
-    }
-
-    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
-    if(links.isEmpty())
-    {
-        str += QObject::tr("<p>--- no links ---</p>");
-    }
-    else
-    {
-        foreach(const link_t& link, links)
-        {
-            str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
-        }
-    }
-
-    return str;
-}
diff --git a/.hg/Trashcan/IGisItem_GNArfG.h.bak b/.hg/Trashcan/IGisItem_GNArfG.h.bak
deleted file mode 100644
index ff21eb0..0000000
--- a/.hg/Trashcan/IGisItem_GNArfG.h.bak
+++ /dev/null
@@ -1,375 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index 247cdf6..0000000
--- a/.hg/Trashcan/IGisItem_SGAlUU.cpp.bak
+++ /dev/null
@@ -1,286 +0,0 @@
-/**********************************************************************************************
-    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/.hg/Trashcan/IGisItem_W2uRAd.cpp.bak b/.hg/Trashcan/IGisItem_W2uRAd.cpp.bak
deleted file mode 100644
index 7b2ad6d..0000000
--- a/.hg/Trashcan/IGisItem_W2uRAd.cpp.bak
+++ /dev/null
@@ -1,714 +0,0 @@
-/**********************************************************************************************
-    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 "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/prj/IGisProject.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "units/IUnit.h"
-
-#include <QtSql>
-#include <QtWidgets>
-#include <QtXml>
-
-QMutex IGisItem::mutexItems(QMutex::Recursive);
-
-QString IGisItem::noKey;
-
-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(IGisProject *parent, type_e typ, int idx)
-    : QTreeWidgetItem(parent, typ)
-    , flags(0)
-{
-    int n = -1;
-    setFlags(QTreeWidgetItem::flags() & ~Qt::ItemIsDropEnabled);
-
-    if(parent == 0)
-    {
-        return;
-    }
-
-    key.project = parent->getKey();
-    key.device  = parent->getDeviceKey();
-
-    if(idx >= 0)
-    {
-        parent->removeChild(this);
-        parent->insertChild(idx, this);
-    }
-    else
-    {
-        if(type() == eTypeTrk)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeRte)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if( childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeWpt)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeWpt || childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeOvl)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeOvl || childType == eTypeWpt || childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-
-        if(n < 0)
-        {
-            parent->removeChild(this);
-            parent->insertChild(0, this);
-        }
-    }
-}
-
-IGisItem::~IGisItem()
-{
-}
-
-void IGisItem::genKey()
-{
-    if(key.item.isEmpty())
-    {
-        QByteArray buffer;
-        QDataStream stream(&buffer, QIODevice::WriteOnly);
-        stream.setByteOrder(QDataStream::LittleEndian);
-        stream.setVersion(QDataStream::Qt_5_2);
-
-        *this >> stream;
-
-        QCryptographicHash md5(QCryptographicHash::Md5);
-        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)
-{
-    QSqlQuery query(db);
-    query.prepare("SELECT data FROM items WHERE id=:id");
-    query.bindValue(":id", id);
-    QUERY_EXEC(return );
-    if(query.next())
-    {
-        QByteArray data(query.value(0).toByteArray());
-        QDataStream in(&data, QIODevice::ReadOnly);
-        in.setByteOrder(QDataStream::LittleEndian);
-        in.setVersion(QDataStream::Qt_5_2);
-        in >> history;
-        loadHistory(history.histIdxCurrent);
-    }
-}
-
-QString IGisItem::getNameEx() const
-{
-    QString str = getName();
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project)
-    {
-        str += " @ " + project->getName();
-    }
-    return str;
-}
-
-
-void IGisItem::updateDecoration(mark_e enable, mark_e disable)
-{
-    // update text and icon
-    setToolTip(CGisListWks::eColumnName,getInfo());
-    setText(CGisListWks::eColumnName, getName());
-    setSymbol();
-
-    // update project if necessary
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project && (enable & eMarkChanged))
-    {
-        project->setText(CGisListWks::eColumnDecoration,"*");
-    }
-
-    // set marks in column 1
-    quint32 mask = data(1,Qt::UserRole).toUInt();
-    mask |=  enable;
-    mask &= ~disable;
-    setData(1, Qt::UserRole, mask);
-
-    QString str;
-    if(mask & eMarkChanged)
-    {
-        str += "*";
-    }
-    setText(CGisListWks::eColumnDecoration, str);
-}
-
-
-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;
-    }
-
-    // forget all history entries after the current entry
-    for(int i = history.events.size() - 1; i > history.histIdxCurrent; i--)
-    {
-        history.events.pop_back();
-    }
-
-    // append history by new entry
-    history.events << history_event_t();
-    history_event_t& event = history.events.last();
-    event.time      = QDateTime::currentDateTimeUtc();
-    event.comment   = what;
-    event.icon      = icon;
-
-    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();
-
-    history.histIdxCurrent = history.events.size() - 1;
-
-    updateDecoration(eMarkChanged, eMarkNone);
-}
-
-void IGisItem::setupHistory()
-{
-    history.histIdxInitial = -1;
-    history.histIdxCurrent = -1;
-
-    // if history is empty setup an initial item
-    if(history.events.isEmpty())
-    {
-        history.events << history_event_t();
-        history_event_t& event = history.events.last();
-        event.time      = QDateTime::currentDateTimeUtc();
-        event.comment   = QObject::tr("Initial version.");
-        event.icon      = "://icons/48x48/Start.png";
-    }
-
-    // search for the first item with data
-    for(int i = 0; i < history.events.size(); i++)
-    {
-        if(!history.events[i].data.isEmpty())
-        {
-            history.histIdxInitial = i;
-            break;
-        }
-    }
-
-    // if no initial item can be found fill the last item with data
-    // and make it the initial item
-    if(history.histIdxInitial == -1)
-    {
-        history_event_t& event = history.events.last();
-
-        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();
-
-        history.histIdxInitial = history.events.size() - 1;
-    }
-
-    history.histIdxCurrent = history.events.size() - 1;
-}
-
-void IGisItem::loadHistory(int idx)
-{
-    // test for bad index
-    if((idx >= history.events.size()) || (idx < 0))
-    {
-        return;
-    }
-
-    history_event_t& event = history.events[idx];
-
-    // test for no data
-    if(event.data.isEmpty())
-    {
-        return;
-    }
-
-    // restore item from history entry
-    QDataStream stream(&event.data, QIODevice::ReadOnly);
-    stream.setByteOrder(QDataStream::LittleEndian);
-    stream.setVersion(QDataStream::Qt_5_2);
-    *this << stream;
-
-    history.histIdxCurrent = idx;
-}
-
-void IGisItem::cutHistory()
-{
-    while(history.events.size() > (history.histIdxCurrent + 1))
-    {
-        history.events.pop_back();
-    }
-}
-
-bool IGisItem::isReadOnly() const
-{
-    return !(flags & eFlagWriteAllowed) || isOnDevice();
-}
-
-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();
-}
-
-void IGisItem::setReadOnlyMode(bool readOnly)
-{
-    if(!(flags & (eFlagCreatedInQms|eFlagTainted)))
-    {
-        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)
-            {
-                return;
-            }
-        }
-    }
-
-    if(readOnly)
-    {
-        flags &= ~eFlagWriteAllowed;
-    }
-    else
-    {
-        flags |= eFlagWriteAllowed;
-    }
-}
-
-
-const IGisItem::key_t &IGisItem::getKey()
-{
-    if(key.item.isEmpty() || key.project.isEmpty())
-    {
-        genKey();
-    }
-    return key;
-}
-
-QColor IGisItem::str2color(const QString& name)
-{
-    QColor ref(name);
-    const color_t * p = colorMap;
-    while(p->name)
-    {
-        if(p->color == ref)
-        {
-            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();
-
-    if(line.isEmpty())
-    {
-        return;
-    }
-
-    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;
-    qreal 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((qreal)(pt.y() - pt1.y()), (qreal)(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();
-}
-
-
-QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str, const QString &key)
-{
-    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);
-    }
-}
-
-QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links, const QString &key)
-{
-    QString str;
-    bool isEmpty;
-
-    isEmpty = removeHtml(cmt).simplified().isEmpty();
-    if(!isReadOnly || !isEmpty)
-    {
-        str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"), key);
-        if(isEmpty)
-        {
-            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>"), key);
-        if(removeHtml(desc).simplified().isEmpty())
-        {
-            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>"), key);
-        if(isEmpty)
-        {
-            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);
-                }
-            }
-        }
-    }
-    return str;
-}
-
-QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<link_t>& links, const QString& key)
-{
-    QString str;
-    bool isEmpty;
-
-    isEmpty = removeHtml(desc).simplified().isEmpty();
-    if(!isReadOnly || !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;
-        }
-    }
-
-    isEmpty = links.isEmpty();
-    if(!isReadOnly || !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)
-            {
-                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);
-                }
-            }
-        }
-    }
-    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);
-}
-
diff --git a/.hg/Trashcan/IGisItem_g1UeWY.cpp.bak b/.hg/Trashcan/IGisItem_g1UeWY.cpp.bak
deleted file mode 100644
index e4d8c9c..0000000
--- a/.hg/Trashcan/IGisItem_g1UeWY.cpp.bak
+++ /dev/null
@@ -1,709 +0,0 @@
-/**********************************************************************************************
-    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 "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/prj/IGisProject.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "units/IUnit.h"
-
-#include <QtSql>
-#include <QtWidgets>
-#include <QtXml>
-
-QMutex IGisItem::mutexItems(QMutex::Recursive);
-
-QString IGisItem::noKey;
-
-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(IGisProject *parent, type_e typ, int idx)
-    : QTreeWidgetItem(parent, typ)
-    , flags(0)
-{
-    int n = -1;
-    setFlags(QTreeWidgetItem::flags() & ~Qt::ItemIsDropEnabled);
-
-    if(parent == 0)
-    {
-        return;
-    }
-
-    key.project = parent->getKey();
-    key.device  = parent->getDeviceKey();
-
-    if(idx >= 0)
-    {
-        parent->removeChild(this);
-        parent->insertChild(idx, this);
-    }
-    else
-    {
-        if(type() == eTypeTrk)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeRte)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if( childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeWpt)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeWpt || childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeOvl)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeOvl || childType == eTypeWpt || childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-
-        if(n < 0)
-        {
-            parent->removeChild(this);
-            parent->insertChild(0, this);
-        }
-    }
-}
-
-IGisItem::~IGisItem()
-{
-}
-
-void IGisItem::genKey()
-{
-    if(key.item.isEmpty())
-    {
-        QByteArray buffer;
-        QDataStream stream(&buffer, QIODevice::WriteOnly);
-        stream.setByteOrder(QDataStream::LittleEndian);
-        stream.setVersion(QDataStream::Qt_5_2);
-
-        *this >> stream;
-
-        QCryptographicHash md5(QCryptographicHash::Md5);
-        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)
-{
-    QSqlQuery query(db);
-    query.prepare("SELECT data FROM items WHERE id=:id");
-    query.bindValue(":id", id);
-    QUERY_EXEC(return );
-    if(query.next())
-    {
-        QByteArray data(query.value(0).toByteArray());
-        QDataStream in(&data, QIODevice::ReadOnly);
-        in.setByteOrder(QDataStream::LittleEndian);
-        in.setVersion(QDataStream::Qt_5_2);
-        in >> history;
-        loadHistory(history.histIdxCurrent);
-    }
-}
-
-QString IGisItem::getNameEx() const
-{
-    QString str = getName();
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project)
-    {
-        str += " @ " + project->getName();
-    }
-    return str;
-}
-
-
-void IGisItem::updateDecoration(mark_e enable, mark_e disable)
-{
-    // update text and icon
-    setToolTip(CGisListWks::eColumnName,getInfo());
-    setText(CGisListWks::eColumnName, getName());
-    setSymbol();
-
-    // update project if necessary
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project && (enable & eMarkChanged))
-    {
-        project->setText(CGisListWks::eColumnDecoration,"*");
-    }
-
-    // set marks in column 1
-    quint32 mask = data(1,Qt::UserRole).toUInt();
-    mask |=  enable;
-    mask &= ~disable;
-    setData(1, Qt::UserRole, mask);
-
-    QString str;
-    if(mask & eMarkChanged)
-    {
-        str += "*";
-    }
-    setText(CGisListWks::eColumnDecoration, str);
-}
-
-
-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;
-    }
-
-    // forget all history entries after the current entry
-    for(int i = history.events.size() - 1; i > history.histIdxCurrent; i--)
-    {
-        history.events.pop_back();
-    }
-
-    // append history by new entry
-    history.events << history_event_t();
-    history_event_t& event = history.events.last();
-    event.time      = QDateTime::currentDateTimeUtc();
-    event.comment   = what;
-    event.icon      = icon;
-
-    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();
-
-    history.histIdxCurrent = history.events.size() - 1;
-
-    updateDecoration(eMarkChanged, eMarkNone);
-}
-
-void IGisItem::setupHistory()
-{
-    history.histIdxInitial = -1;
-    history.histIdxCurrent = -1;
-
-    // if history is empty setup an initial item
-    if(history.events.isEmpty())
-    {
-        history.events << history_event_t();
-        history_event_t& event = history.events.last();
-        event.time      = QDateTime::currentDateTimeUtc();
-        event.comment   = QObject::tr("Initial version.");
-        event.icon      = "://icons/48x48/Start.png";
-    }
-
-    // search for the first item with data
-    for(int i = 0; i < history.events.size(); i++)
-    {
-        if(!history.events[i].data.isEmpty())
-        {
-            history.histIdxInitial = i;
-            break;
-        }
-    }
-
-    // if no initial item can be found fill the last item with data
-    // and make it the initial item
-    if(history.histIdxInitial == -1)
-    {
-        history_event_t& event = history.events.last();
-
-        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();
-
-        history.histIdxInitial = history.events.size() - 1;
-    }
-
-    history.histIdxCurrent = history.events.size() - 1;
-}
-
-void IGisItem::loadHistory(int idx)
-{
-    // test for bad index
-    if((idx >= history.events.size()) || (idx < 0))
-    {
-        return;
-    }
-
-    history_event_t& event = history.events[idx];
-
-    // test for no data
-    if(event.data.isEmpty())
-    {
-        return;
-    }
-
-    // restore item from history entry
-    QDataStream stream(&event.data, QIODevice::ReadOnly);
-    stream.setByteOrder(QDataStream::LittleEndian);
-    stream.setVersion(QDataStream::Qt_5_2);
-    *this << stream;
-
-    history.histIdxCurrent = idx;
-}
-
-void IGisItem::cutHistory()
-{
-    while(history.events.size() > (history.histIdxCurrent + 1))
-    {
-        history.events.pop_back();
-    }
-}
-
-bool IGisItem::isReadOnly() const
-{
-    return !(flags & eFlagWriteAllowed) || isOnDevice();
-}
-
-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();
-}
-
-void IGisItem::setReadOnlyMode(bool readOnly)
-{
-    if(!(flags & (eFlagCreatedInQms|eFlagTainted)))
-    {
-        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)
-            {
-                return;
-            }
-        }
-    }
-
-    if(readOnly)
-    {
-        flags &= ~eFlagWriteAllowed;
-    }
-    else
-    {
-        flags |= eFlagWriteAllowed;
-    }
-}
-
-
-const IGisItem::key_t &IGisItem::getKey()
-{
-    if(key.item.isEmpty() || key.project.isEmpty())
-    {
-        genKey();
-    }
-    return key;
-}
-
-QColor IGisItem::str2color(const QString& name)
-{
-    QColor ref(name);
-    const color_t * p = colorMap;
-    while(p->name)
-    {
-        if(p->color == ref)
-        {
-            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;
-    qreal 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((qreal)(pt.y() - pt1.y()), (qreal)(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();
-}
-
-
-QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str, const QString &key)
-{
-    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);
-    }
-}
-
-QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links, const QString &key)
-{
-    QString str;
-    bool isEmpty;
-
-    isEmpty = removeHtml(cmt).simplified().isEmpty();
-    if(!isReadOnly || !isEmpty)
-    {
-        str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"), key);
-        if(isEmpty)
-        {
-            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>"), key);
-        if(removeHtml(desc).simplified().isEmpty())
-        {
-            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>"), key);
-        if(isEmpty)
-        {
-            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);
-                }
-            }
-        }
-    }
-    return str;
-}
-
-QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<link_t>& links, const QString& key)
-{
-    QString str;
-    bool isEmpty;
-
-    isEmpty = removeHtml(desc).simplified().isEmpty();
-    if(!isReadOnly || !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;
-        }
-    }
-
-    isEmpty = links.isEmpty();
-    if(!isReadOnly || !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)
-            {
-                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);
-                }
-            }
-        }
-    }
-    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);
-}
-
diff --git a/.hg/Trashcan/IGisItem_sh1ohv.h.bak b/.hg/Trashcan/IGisItem_sh1ohv.h.bak
deleted file mode 100644
index 91fdbf1..0000000
--- a/.hg/Trashcan/IGisItem_sh1ohv.h.bak
+++ /dev/null
@@ -1,402 +0,0 @@
-/**********************************************************************************************
-    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/.hg/Trashcan/IGisItem_xTCUle.cpp.bak b/.hg/Trashcan/IGisItem_xTCUle.cpp.bak
deleted file mode 100644
index 020c910..0000000
--- a/.hg/Trashcan/IGisItem_xTCUle.cpp.bak
+++ /dev/null
@@ -1,623 +0,0 @@
-/**********************************************************************************************
-    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 "gis/CGisListWks.h"
-#include "gis/prj/IGisProject.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 <QtXml>
-#include <QtWidgets>
-#include <QtSql>
-
-QMutex IGisItem::mutexItems(QMutex::Recursive);
-
-QString IGisItem::noKey;
-
-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(IGisProject *parent, type_e typ, int idx)
-    : QTreeWidgetItem(parent, typ)
-    , flags(0)
-{
-    int n;
-    setFlags(QTreeWidgetItem::flags() & ~Qt::ItemIsDropEnabled);
-
-    if(parent == 0)
-    {
-        return;
-    }
-
-    key.project = parent->getKey();
-    if(idx >= 0)
-    {
-        parent->removeChild(this);
-        parent->insertChild(idx, this);
-    }
-    else
-    {
-        if(type() == eTypeTrk)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeRte)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if( childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeWpt)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeWpt || childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-        else if(type() == eTypeOvl)
-        {
-            for(n = parent->childCount() - 2; n >= 0; n--)
-            {
-                /** @note   The order of item types to test is given by the order items read from
-                            the GPX file in the CGpxProject constructor.  */
-
-                int childType = parent->child(n)->type();
-                if(childType == eTypeOvl || childType == eTypeWpt || childType == eTypeRte || childType == eTypeTrk)
-                {
-                    parent->removeChild(this);
-                    parent->insertChild(n+1, this);
-                    break;
-                }
-            }
-        }
-
-        if(n < 0)
-        {
-            parent->removeChild(this);
-            parent->insertChild(0, this);
-        }
-    }
-}
-
-IGisItem::~IGisItem()
-{
-
-}
-
-void IGisItem::genKey()
-{
-    if(key.item.isEmpty())
-    {
-        QByteArray buffer;
-        QDataStream stream(&buffer, QIODevice::WriteOnly);
-        stream.setByteOrder(QDataStream::LittleEndian);
-        stream.setVersion(QDataStream::Qt_5_2);
-
-        *this >> stream;
-
-        QCryptographicHash md5(QCryptographicHash::Md5);
-        md5.addData(buffer);
-        key.item = md5.result().toHex();
-    }
-}
-
-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);
-    if(query.next())
-    {
-        QByteArray data(query.value(0).toByteArray());
-        QDataStream in(&data, QIODevice::ReadOnly);
-        in.setByteOrder(QDataStream::LittleEndian);
-        in.setVersion(QDataStream::Qt_5_2);
-        in >> history;
-        loadHistory(history.histIdxCurrent);
-    }
-}
-
-QString IGisItem::getNameEx()
-{
-    QString str = getName();
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project)
-    {
-        str += " @ " + project->getName();
-    }
-    return str;
-}
-
-
-void IGisItem::updateDecoration(mark_e enable, mark_e disable)
-{
-    // update text and icon
-    setToolTip(CGisListWks::eColumnName,getInfo());
-    setText(CGisListWks::eColumnName, getName());
-    setSymbol();
-
-    // update project if necessary
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project && (enable & eMarkChanged))
-    {
-        project->setText(CGisListWks::eColumnDecoration,"*");
-    }
-
-    // set marks in column 1
-    quint32 mask = data(1,Qt::UserRole).toUInt();
-    mask |=  enable;
-    mask &= ~disable;
-    setData(1, Qt::UserRole, mask);
-
-    QString str;
-    if(mask & eMarkChanged)
-    {
-        str += "*";
-    }
-    setText(CGisListWks::eColumnDecoration, str);
-}
-
-
-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;
-    }
-
-    // forget all history entries after the current entry
-    for(int i = history.events.size() - 1; i > history.histIdxCurrent; i--)
-    {
-        history.events.pop_back();
-    }
-
-    // append history by new entry
-    history.events << history_event_t();
-    history_event_t& event = history.events.last();
-    event.time      = QDateTime::currentDateTimeUtc();
-    event.comment   = what;
-    event.icon      = icon;
-
-    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();
-
-    history.histIdxCurrent = history.events.size() - 1;
-
-    updateDecoration(eMarkChanged, eMarkNone);
-}
-
-void IGisItem::setupHistory()
-{    
-    history.histIdxInitial = -1;
-    history.histIdxCurrent = -1;
-
-    // if history is empty setup an initial item
-    if(history.events.isEmpty())
-    {
-        history.events << history_event_t();
-        history_event_t& event = history.events.last();
-        event.time      = QDateTime::currentDateTimeUtc();
-        event.comment   = QObject::tr("Initial version.");
-        event.icon      = "://icons/48x48/Start.png";        
-    }
-
-    // search for the first item with data
-    for(int i = 0; i < history.events.size(); i++)
-    {
-        if(!history.events[i].data.isEmpty())
-        {
-            history.histIdxInitial = i;
-            break;
-        }
-    }
-
-    // if no initial item can be found fill the last item with data
-    // and make it the initial item
-    if(history.histIdxInitial == -1)
-    {
-        history_event_t& event = history.events.last();
-
-        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();
-
-        history.histIdxInitial = history.events.size() - 1;
-    }
-
-    history.histIdxCurrent = history.events.size() - 1;
-}
-
-void IGisItem::loadHistory(int idx)
-{
-    // test for bad index
-    if((idx >= history.events.size()) || (idx < 0))
-    {
-        return;
-    }
-
-    history_event_t& event = history.events[idx];
-
-    // test for no data
-    if(event.data.isEmpty())
-    {
-        return;
-    }
-
-    // restore item from history entry
-    QDataStream stream(&event.data, QIODevice::ReadOnly);
-    stream.setByteOrder(QDataStream::LittleEndian);
-    stream.setVersion(QDataStream::Qt_5_2);
-    *this << stream;
-
-    history.histIdxCurrent = idx;
-}
-
-void IGisItem::cutHistory()
-{
-    while(history.events.size() > (history.histIdxCurrent + 1))
-    {
-        history.events.pop_back();
-    }
-}
-
-bool IGisItem::isReadOnly()
-{
-    return !(flags & eFlagWriteAllowed);
-}
-
-bool IGisItem::isTainted()
-{
-    return (flags & eFlagTainted);
-}
-
-void IGisItem::setReadOnlyMode(bool readOnly)
-{
-    if(!(flags & (eFlagCreatedInQms|eFlagTainted)))
-    {
-        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)
-            {
-                return;
-            }
-        }
-    }
-
-    if(readOnly)
-    {
-        flags &= ~eFlagWriteAllowed;
-    }
-    else
-    {
-        flags |= eFlagWriteAllowed;
-    }
-}
-
-
-const IGisItem::key_t &IGisItem::getKey()
-{
-    if(key.item.isEmpty())
-    {
-        genKey();
-    }
-    return key;
-}
-
-QColor IGisItem::str2color(const QString& name)
-{
-    QColor ref(name);
-    const color_t * p = colorMap;
-    while(p->name)
-    {
-        if(p->color == ref)
-        {
-            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;
-    qreal  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((qreal)(pt.y() - pt1.y()), (qreal)(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();
-}
-
-
-QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str)
-{
-    if(isReadOnly)
-    {
-        return QString("%1").arg(str);
-    }
-
-    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)
-{
-    QString str;
-
-    str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"));
-    if(removeHtml(cmt).simplified().isEmpty())
-    {
-        str += QObject::tr("<p>--- no comment ---</p>");
-    }
-    else
-    {
-        str += cmt;
-    }
-
-    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
-    if(removeHtml(desc).simplified().isEmpty())
-    {
-        str += QObject::tr("<p>--- no description ---</p>");
-    }
-    else
-    {
-        str += desc;
-    }
-
-    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
-    if(links.isEmpty())
-    {
-        str += QObject::tr("<p>--- no links ---</p>");
-    }
-    else
-    {
-        foreach(const link_t& link, links)
-        {
-            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)
-{
-    QString str;
-
-    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
-    if(removeHtml(desc).simplified().isEmpty())
-    {
-        str += QObject::tr("<p>--- no description ---</p>");
-    }
-    else
-    {
-        str += desc;
-    }
-
-    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
-    if(links.isEmpty())
-    {
-        str += QObject::tr("<p>--- no links ---</p>");
-    }
-    else
-    {
-        foreach(const link_t& link, links)
-        {
-            str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
-        }
-    }
-
-    return str;
-}
diff --git a/.hg/Trashcan/IGisItem_xsSU6A.h.bak b/.hg/Trashcan/IGisItem_xsSU6A.h.bak
deleted file mode 100644
index 736587f..0000000
--- a/.hg/Trashcan/IGisItem_xsSU6A.h.bak
+++ /dev/null
@@ -1,404 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index 67461dc..0000000
--- a/.hg/Trashcan/IGisItem_yfQJAp.cpp.bak
+++ /dev/null
@@ -1,286 +0,0 @@
-/**********************************************************************************************
-    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/.hg/Trashcan/IGisProject_117WVD.cpp.bak b/.hg/Trashcan/IGisProject_117WVD.cpp.bak
deleted file mode 100644
index 80eee79..0000000
--- a/.hg/Trashcan/IGisProject_117WVD.cpp.bak
+++ /dev/null
@@ -1,458 +0,0 @@
-/**********************************************************************************************
-    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/prj/IGisProject.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>
-
-
-IGisProject::IGisProject(type_e type, const QString &filename, CGisListWks *parent)
-    : QTreeWidgetItem(parent)
-    , type(type)
-    , filename(filename)
-    , valid(false)
-{
-
-}
-
-IGisProject::~IGisProject()
-{
-    delete dlgDetails;
-}
-
-
-void IGisProject::genKey()
-{
-    if(key.isEmpty())
-    {
-        QByteArray buffer;
-        QDataStream stream(&buffer, QIODevice::WriteOnly);
-        stream.setByteOrder(QDataStream::LittleEndian);
-        stream.setVersion(QDataStream::Qt_5_2);
-
-        *this >> stream;
-
-        QCryptographicHash md5(QCryptographicHash::Md5);
-        md5.addData(buffer);
-        key = md5.result().toHex();
-    }
-}
-
-
-void IGisProject::edit()
-{
-    if(dlgDetails.isNull())
-    {
-        dlgDetails = new CDetailsPrj(*this, 0);
-        dlgDetails->setObjectName(getName());
-    }
-
-    CMainWindow::self().addWidgetToTab(dlgDetails);
-}
-
-void IGisProject::setName(const QString& str)
-{
-    metadata.name = str;
-    setText(CGisListWks::eColumnName, str);
-    changed();
-}
-
-void IGisProject::setKeywords(const QString& str)
-{
-    metadata.keywords = str;
-    changed();
-}
-
-void IGisProject::setDescription(const QString& str)
-{
-    metadata.desc = str;
-    changed();
-}
-
-void IGisProject::setLinks(const QList<IGisItem::link_t>& links)
-{
-    metadata.links = links;
-    changed();
-}
-
-void IGisProject::changed()
-{
-    setText(CGisListWks::eColumnDecoration,"*");
-}
-
-
-void IGisProject::setupName(const QString &defaultName)
-{
-    if(metadata.name.isEmpty())
-    {
-        setText(CGisListWks::eColumnName, defaultName);
-        metadata.name = defaultName;
-    }
-    else
-    {
-        setText(CGisListWks::eColumnName,metadata.name);
-    }
-
-}
-
-void IGisProject::markAsSaved()
-{
-    setText(CGisListWks::eColumnDecoration,"");
-    for(int i = 0; i < childCount(); i++)
-    {
-
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
-        {
-            continue;
-        }
-        item->updateDecoration(IGisItem::eMarkNone, IGisItem::eMarkChanged);
-    }
-}
-
-QString IGisProject::getInfo()
-{
-    QString str = metadata.name.isEmpty() ? text(CGisListWks::eColumnName) : metadata.name;
-    str = "<div style='font-weight: bold;'>" + str + "</div>";
-
-    if(metadata.time.isValid())
-    {
-        str += "<br/>\n";
-        str += IUnit::datetime2string(metadata.time, false);
-    }
-
-
-    QString desc = IGisItem::removeHtml(metadata.desc).simplified();
-    if(!desc.isEmpty())
-    {
-        str += "<br/>\n";
-
-        if(desc.count() < 100)
-        {
-            str += desc;
-        }
-        else
-        {
-            str += desc.left(97) + "...";
-        }
-    }
-
-    if(!filename.isEmpty())
-    {
-        str += QObject::tr("<br/>\nFilename: %1").arg(filename);
-    }
-
-    // count number of items by type
-    int counter[IGisItem::eTypeMax] = {0};
-    for(int i = 0; i < childCount(); i++)
-    {
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
-        {
-            continue;
-        }
-
-        counter[item->type()]++;
-    }
-    if(counter[IGisItem::eTypeWpt])
-    {
-        str += "<br/>\n" + QObject::tr("Waypoints: %1").arg(counter[IGisItem::eTypeWpt]);
-    }
-    if(counter[IGisItem::eTypeTrk])
-    {
-        str += "<br/>\n" + QObject::tr("Tracks: %1").arg(counter[IGisItem::eTypeTrk]);
-    }
-    if(counter[IGisItem::eTypeRte])
-    {
-        str += "<br/>\n" + QObject::tr("Routes: %1").arg(counter[IGisItem::eTypeRte]);
-    }
-    if(counter[IGisItem::eTypeOvl])
-    {
-        str += "<br/>\n" + QObject::tr("Areas: %1").arg(counter[IGisItem::eTypeOvl]);
-    }
-
-    return str;
-}
-
-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)
-        {
-            continue;
-        }
-
-        if(item->getKey() == key)
-        {
-            return item;
-        }
-    }
-    return 0;
-}
-
-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)
-        {
-            continue;
-        }
-
-        if(item->isCloseTo(pos))
-        {
-            items << item;
-        }
-    }
-}
-
-
-bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::StandardButtons& last)
-{
-    for(int i = childCount(); i > 0; i--)
-    {
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i-1));
-        if(item == 0)
-        {
-            continue;
-        }
-
-        if(item->getKey() == key)
-        {
-            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);
-                if((last == QMessageBox::No) || (last == QMessageBox::Cancel))
-                {
-                    // as each item in the project has to be unique, we can stop searching.
-                    return false;
-                }
-            }
-            delete item;
-
-            /*
-                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();
-            }
-
-            // as each item in the project has to be unique, we can stop searching.
-            return true;
-        }
-    }
-    return false;
-}
-
-void IGisProject::editItemByKey(const IGisItem::key_t& key)
-{
-    for(int i = childCount(); i > 0; i--)
-    {
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i-1));
-        if(item == 0)
-        {
-            continue;
-        }
-
-        if(item->getKey() == key)
-        {
-            item->edit();
-        }
-    }
-}
-
-
-void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
-{
-    bool clone = false;
-    IGisItem::key_t key = item->getKey();
-    key.project = getKey();
-
-    IGisItem * item2 = getItemByKey(key);
-    if(item2 != 0)
-    {
-
-        int result = lastResult;
-        if(lastResult == CSelectCopyAction::eResultNone)
-        {
-            CSelectCopyAction dlg(item, item2, 0);
-            dlg.exec();
-            result = dlg.getResult();
-            if(dlg.allOthersToo())
-            {
-                lastResult = result;
-            }
-        }
-
-        if(result == CSelectCopyAction::eResultSkip)
-        {
-            return;
-        }
-        if(result == CSelectCopyAction::eResultNone)
-        {
-            return;
-        }
-        if(result == CSelectCopyAction::eResultClone)
-        {
-            clone = true;
-        }
-        else
-        {
-            // replace item2 with item
-            if(item != item2)
-            {
-                delete item2;
-            }
-            else
-            {
-                // replacing an item with itself does not make sense
-                return;
-            }
-        }
-    }
-
-    switch(item->type())
-    {
-    case IGisItem::eTypeTrk:
-    {
-        CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(item);
-        if(trk != 0)
-        {
-            new CGisItemTrk(*trk, this, off, clone);
-        }
-        break;
-    }
-    case IGisItem::eTypeWpt:
-    {
-        CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
-        if(wpt != 0)
-        {
-            new CGisItemWpt(*wpt, this, off, clone);
-        }
-        break;
-    }
-    case IGisItem::eTypeRte:
-    {
-        CGisItemRte * rte = dynamic_cast<CGisItemRte*>(item);
-        if(rte != 0)
-        {
-            new CGisItemRte(*rte, this, off, clone);
-        }
-        break;
-    }
-    case IGisItem::eTypeOvl:
-    {
-        CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(item);
-        if(area != 0)
-        {
-            new CGisItemOvlArea(*area, this, off, clone);
-        }
-        break;
-    }
-    }
-}
-
-void IGisProject::drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis)
-{
-    for(int i = 0; i < childCount(); i++)
-    {
-        if(gis->needsRedraw())
-        {
-            break;
-        }
-
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
-        {
-            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)
-        {
-            continue;
-        }
-
-
-        item->drawItem(p, viewport, 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())
-        {
-            break;
-        }
-
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
-        {
-            continue;
-        }
-
-//        if(seenKeys.contains(item->getKey()))
-//        {
-//            continue;
-//        }
-//        seenKeys << item->getKey();
-
-        item->drawLabel(p, viewport, blockedAreas, fm, gis);
-    }
-
-}
-
diff --git a/.hg/Trashcan/IGisProject_AqlgcN.cpp.bak b/.hg/Trashcan/IGisProject_AqlgcN.cpp.bak
deleted file mode 100644
index fa9624e..0000000
--- a/.hg/Trashcan/IGisProject_AqlgcN.cpp.bak
+++ /dev/null
@@ -1,458 +0,0 @@
-/**********************************************************************************************
-    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/prj/IGisProject.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>
-
-
-IGisProject::IGisProject(type_e type, const QString &filename, CGisListWks *parent)
-    : QTreeWidgetItem(parent)
-    , type(type)
-    , filename(filename)
-    , valid(false)
-{
-
-}
-
-IGisProject::~IGisProject()
-{
-    delete dlgDetails;
-}
-
-
-void IGisProject::genKey()
-{
-    if(key.isEmpty())
-    {
-        QByteArray buffer;
-        QDataStream stream(&buffer, QIODevice::WriteOnly);
-        stream.setByteOrder(QDataStream::LittleEndian);
-        stream.setVersion(QDataStream::Qt_5_2);
-
-        *this >> stream;
-
-        QCryptographicHash md5(QCryptographicHash::Md5);
-        md5.addData(buffer);
-        key = md5.result().toHex();
-    }
-}
-
-
-void IGisProject::edit()
-{
-    if(dlgDetails.isNull())
-    {
-        dlgDetails = new CDetailsPrj(*this, 0);
-        dlgDetails->setObjectName(getName());
-    }
-
-    CMainWindow::self().addWidgetToTab(dlgDetails);
-}
-
-void IGisProject::setName(const QString& str)
-{
-    metadata.name = str;
-    setText(CGisListWks::eColumnName, str);
-    changed();
-}
-
-void IGisProject::setKeywords(const QString& str)
-{
-    metadata.keywords = str;
-    changed();
-}
-
-void IGisProject::setDescription(const QString& str)
-{
-    metadata.desc = str;
-    changed();
-}
-
-void IGisProject::setLinks(const QList<IGisItem::link_t>& links)
-{
-    metadata.links = links;
-    changed();
-}
-
-void IGisProject::changed()
-{
-    setText(CGisListWks::eColumnDecoration,"*");
-}
-
-
-void IGisProject::setupName(const QString &defaultName)
-{
-    if(metadata.name.isEmpty())
-    {
-        setText(CGisListWks::eColumnName, defaultName);
-        metadata.name = defaultName;
-    }
-    else
-    {
-        setText(CGisListWks::eColumnName,metadata.name);
-    }
-
-}
-
-void IGisProject::markAsSaved()
-{
-    setText(CGisListWks::eColumnDecoration,"");
-    for(int i = 0; i < childCount(); i++)
-    {
-
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
-        {
-            continue;
-        }
-        item->updateDecoration(IGisItem::eMarkNone, IGisItem::eMarkChanged);
-    }
-}
-
-QString IGisProject::getInfo() const
-{
-    QString str = metadata.name.isEmpty() ? text(CGisListWks::eColumnName) : metadata.name;
-    str = "<div style='font-weight: bold;'>" + str + "</div>";
-
-    if(metadata.time.isValid())
-    {
-        str += "<br/>\n";
-        str += IUnit::datetime2string(metadata.time, false);
-    }
-
-
-    QString desc = IGisItem::removeHtml(metadata.desc).simplified();
-    if(!desc.isEmpty())
-    {
-        str += "<br/>\n";
-
-        if(desc.count() < 100)
-        {
-            str += desc;
-        }
-        else
-        {
-            str += desc.left(97) + "...";
-        }
-    }
-
-    if(!filename.isEmpty())
-    {
-        str += QObject::tr("<br/>\nFilename: %1").arg(filename);
-    }
-
-    // count number of items by type
-    int counter[IGisItem::eTypeMax] = {0};
-    for(int i = 0; i < childCount(); i++)
-    {
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
-        {
-            continue;
-        }
-
-        counter[item->type()]++;
-    }
-    if(counter[IGisItem::eTypeWpt])
-    {
-        str += "<br/>\n" + QObject::tr("Waypoints: %1").arg(counter[IGisItem::eTypeWpt]);
-    }
-    if(counter[IGisItem::eTypeTrk])
-    {
-        str += "<br/>\n" + QObject::tr("Tracks: %1").arg(counter[IGisItem::eTypeTrk]);
-    }
-    if(counter[IGisItem::eTypeRte])
-    {
-        str += "<br/>\n" + QObject::tr("Routes: %1").arg(counter[IGisItem::eTypeRte]);
-    }
-    if(counter[IGisItem::eTypeOvl])
-    {
-        str += "<br/>\n" + QObject::tr("Areas: %1").arg(counter[IGisItem::eTypeOvl]);
-    }
-
-    return str;
-}
-
-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)
-        {
-            continue;
-        }
-
-        if(item->getKey() == key)
-        {
-            return item;
-        }
-    }
-    return 0;
-}
-
-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)
-        {
-            continue;
-        }
-
-        if(item->isCloseTo(pos))
-        {
-            items << item;
-        }
-    }
-}
-
-
-bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::StandardButtons& last)
-{
-    for(int i = childCount(); i > 0; i--)
-    {
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i-1));
-        if(item == 0)
-        {
-            continue;
-        }
-
-        if(item->getKey() == key)
-        {
-            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);
-                if((last == QMessageBox::No) || (last == QMessageBox::Cancel))
-                {
-                    // as each item in the project has to be unique, we can stop searching.
-                    return false;
-                }
-            }
-            delete item;
-
-            /*
-                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();
-            }
-
-            // as each item in the project has to be unique, we can stop searching.
-            return true;
-        }
-    }
-    return false;
-}
-
-void IGisProject::editItemByKey(const IGisItem::key_t& key)
-{
-    for(int i = childCount(); i > 0; i--)
-    {
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i-1));
-        if(item == 0)
-        {
-            continue;
-        }
-
-        if(item->getKey() == key)
-        {
-            item->edit();
-        }
-    }
-}
-
-
-void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
-{
-    bool clone = false;
-    IGisItem::key_t key = item->getKey();
-    key.project = getKey();
-
-    IGisItem * item2 = getItemByKey(key);
-    if(item2 != 0)
-    {
-
-        int result = lastResult;
-        if(lastResult == CSelectCopyAction::eResultNone)
-        {
-            CSelectCopyAction dlg(item, item2, 0);
-            dlg.exec();
-            result = dlg.getResult();
-            if(dlg.allOthersToo())
-            {
-                lastResult = result;
-            }
-        }
-
-        if(result == CSelectCopyAction::eResultSkip)
-        {
-            return;
-        }
-        if(result == CSelectCopyAction::eResultNone)
-        {
-            return;
-        }
-        if(result == CSelectCopyAction::eResultClone)
-        {
-            clone = true;
-        }
-        else
-        {
-            // replace item2 with item
-            if(item != item2)
-            {
-                delete item2;
-            }
-            else
-            {
-                // replacing an item with itself does not make sense
-                return;
-            }
-        }
-    }
-
-    switch(item->type())
-    {
-    case IGisItem::eTypeTrk:
-    {
-        CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(item);
-        if(trk != 0)
-        {
-            new CGisItemTrk(*trk, this, off, clone);
-        }
-        break;
-    }
-    case IGisItem::eTypeWpt:
-    {
-        CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
-        if(wpt != 0)
-        {
-            new CGisItemWpt(*wpt, this, off, clone);
-        }
-        break;
-    }
-    case IGisItem::eTypeRte:
-    {
-        CGisItemRte * rte = dynamic_cast<CGisItemRte*>(item);
-        if(rte != 0)
-        {
-            new CGisItemRte(*rte, this, off, clone);
-        }
-        break;
-    }
-    case IGisItem::eTypeOvl:
-    {
-        CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(item);
-        if(area != 0)
-        {
-            new CGisItemOvlArea(*area, this, off, clone);
-        }
-        break;
-    }
-    }
-}
-
-void IGisProject::drawItem(QPainter& p, const QRectF& viewport, QList<QRectF>& blockedAreas, QSet<QString> &seenKeys, CGisDraw * gis)
-{
-    for(int i = 0; i < childCount(); i++)
-    {
-        if(gis->needsRedraw())
-        {
-            break;
-        }
-
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
-        {
-            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)
-        {
-            continue;
-        }
-
-
-        item->drawItem(p, viewport, 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())
-        {
-            break;
-        }
-
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
-        {
-            continue;
-        }
-
-//        if(seenKeys.contains(item->getKey()))
-//        {
-//            continue;
-//        }
-//        seenKeys << item->getKey();
-
-        item->drawLabel(p, viewport, blockedAreas, fm, gis);
-    }
-
-}
-
diff --git a/.hg/Trashcan/IGisProject_duaZSF.h.bak b/.hg/Trashcan/IGisProject_duaZSF.h.bak
deleted file mode 100644
index 1168042..0000000
--- a/.hg/Trashcan/IGisProject_duaZSF.h.bak
+++ /dev/null
@@ -1,212 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index 11f2d54..0000000
--- a/.hg/Trashcan/IGisProject_hRc9Iq.h.bak
+++ /dev/null
@@ -1,230 +0,0 @@
-/**********************************************************************************************
-    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
deleted file mode 100644
index 95668ec..0000000
--- a/.hg/Trashcan/IGisWidget_GlUnqs.ui.bak
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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
deleted file mode 100644
index dfc03ec..0000000
--- a/.hg/Trashcan/IGisWidget_f8_was.ui.bak
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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
deleted file mode 100644
index d3a7aba..0000000
--- a/.hg/Trashcan/IScrOptWpt_EtgN4L.ui.bak
+++ /dev/null
@@ -1,114 +0,0 @@
-<?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
deleted file mode 100644
index 96bf754..0000000
--- a/.hg/Trashcan/IScrOptWpt_j6Rx9x.ui.bak
+++ /dev/null
@@ -1,105 +0,0 @@
-<?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
deleted file mode 100644
index fdbe0fe..0000000
--- a/.hg/Trashcan/IWptIconDialog_7JMhQt.ui.bak
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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
deleted file mode 100644
index b24f170..0000000
--- a/.hg/Trashcan/IWptIconDialog_c__AmQ.ui.bak
+++ /dev/null
@@ -1,74 +0,0 @@
-<?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/.hg/Trashcan/changelog_CYEUr4.txt.bak b/.hg/Trashcan/changelog_CYEUr4.txt.bak
deleted file mode 100644
index 9ce9073..0000000
--- a/.hg/Trashcan/changelog_CYEUr4.txt.bak
+++ /dev/null
@@ -1,108 +0,0 @@
-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
-* Add device watcher for Linux
-* Add basic device support for newer Garmin units.
-
-V 0.11.0
-* Auto-switch projection for pole caps in track plot
-* Fix several issues with elements derived from existing ones still having the same key.
-* Add project diary (project details)
-* Add track filter to reset hidden track points to visible
-* Save only changed items to database (speed up)
-* Add photo album and viewer to waypoint details
-
-V 0.10.0
-* Fix crash when saving a DB project before the database tree has been opened
-* Add track filters to hide trackpoints
-* Add track filters to change elevation
-* Add track filters to change timestamp
-* Add DEM layer to colorize the slope
-* Fix issue with duplicate key when reversing a track
-* Add project selection for all track operations
-
-V 0.9.1
-* Complete function of 'Lost & Found' folder
-* Add copy function to all items including dialog to select copy action.
-* Workspace: move status column to column 0
-
-V 0.9.0
-* Fix sign of area calculation
-* Mark item with user focus in item unclutter screen
-* Add support for multiple databases 
-* Add converter for QLandkarte GT to QMapShack database
-
-V 0.8.2
-* Calculate area covered by area overlays
-* Change coordinate format for long/lat grid from dd mm.mm to dd.dddddd
-* Add edit widget for project details
-* Add drag-n-drop for multiple GIS items
-* Enhance delete of multiple items
-
-V 0.8.1
-* Handle "no data" values in DEM files
-* Garmin maps: read copyright information 
-* Save/Restore workspace on exit/start
-
-V 0.8.0
-* Add unit setup (metric, imperial, nautical)
-* Add data serialization for track, waypoint, route and area
-* Add binary *.qms format to store projects without any loss of data
-* Enhance item history to perform full undo and redo
-* Many little fixes and enhancements
-
-V 0.7.0
-* Add Google GIS search
-* Add support for TMS maps
-* Snap to line for track and area edit
-
-V 0.6.0
-* Reverse tracks
-* Add dialog to combine tracks
-* Add range select to tracks
-* Add function to hide/show track points
-* Add function to copy selected track points as new track
-
-V 0.5.0
-* Add support for WMTS maps
-* Edit/create tracks
-* Edit/create area overlays
-* Add contrast factor to hillshading
-
-V 0.4.0
-* Add position dialog to "add waypoint"
-* Beautify waypoint edit dialog
-* Add on-screen information and detail dialog for tracks
-* Add drag-n-drop to workspace list to move items (draw order & copy between projects)
-
-V 0.3.1
-* another favour for Debian release
-* Added "Add Waypoint" to mouse context menu
-
-V 0.3.0.bureaucratic
-* Add copyright notice to GpxExamples to satisfy bureaucrats @ debian
-
-V 0.3.0
-* A lot of little fixes to prevent crashes and glitches due to multithreading
-* Take special care of the +-180 degree problem
-* Add RGB support to raster maps
-* Add a lot of cursor stuff to select items and to display on-screen-options
-* Add timezone support
-* Add dialog to view/edit waypoint data
-* Add 'moving waypoint' and 'project waypoint' as functions to on-screen-options
\ No newline at end of file
diff --git a/.hg/Trashcan/changelog_z3flxg.txt.bak b/.hg/Trashcan/changelog_z3flxg.txt.bak
deleted file mode 100644
index b826186..0000000
--- a/.hg/Trashcan/changelog_z3flxg.txt.bak
+++ /dev/null
@@ -1,99 +0,0 @@
-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
-* Add device watcher for Linux
-* Add basic device support for newer Garmin units.
-
-V 0.11.0
-* Auto-switch projection for pole caps in track plot
-* Fix several issues with elements derived from existing ones still having the same key.
-* Add project diary (project details)
-* Add track filter to reset hidden track points to visible
-* Save only changed items to database (speed up)
-* Add photo album and viewer to waypoint details
-
-V 0.10.0
-* Fix crash when saving a DB project before the database tree has been opened
-* Add track filters to hide trackpoints
-* Add track filters to change elevation
-* Add track filters to change timestamp
-* Add DEM layer to colorize the slope
-* Fix issue with duplicate key when reversing a track
-* Add project selection for all track operations
-
-V 0.9.1
-* Complete function of 'Lost & Found' folder
-* Add copy function to all items including dialog to select copy action.
-* Workspace: move status column to column 0
-
-V 0.9.0
-* Fix sign of area calculation
-* Mark item with user focus in item unclutter screen
-* Add support for multiple databases 
-* Add converter for QLandkarte GT to QMapShack database
-
-V 0.8.2
-* Calculate area covered by area overlays
-* Change coordinate format for long/lat grid from dd mm.mm to dd.dddddd
-* Add edit widget for project details
-* Add drag-n-drop for multiple GIS items
-* Enhance delete of multiple items
-
-V 0.8.1
-* Handle "no data" values in DEM files
-* Garmin maps: read copyright information 
-* Save/Restore workspace on exit/start
-
-V 0.8.0
-* Add unit setup (metric, imperial, nautical)
-* Add data serialization for track, waypoint, route and area
-* Add binary *.qms format to store projects without any loss of data
-* Enhance item history to perform full undo and redo
-* Many little fixes and enhancements
-
-V 0.7.0
-* Add Google GIS search
-* Add support for TMS maps
-* Snap to line for track and area edit
-
-V 0.6.0
-* Reverse tracks
-* Add dialog to combine tracks
-* Add range select to tracks
-* Add function to hide/show track points
-* Add function to copy selected track points as new track
-
-V 0.5.0
-* Add support for WMTS maps
-* Edit/create tracks
-* Edit/create area overlays
-* Add contrast factor to hillshading
-
-V 0.4.0
-* Add position dialog to "add waypoint"
-* Beautify waypoint edit dialog
-* Add on-screen information and detail dialog for tracks
-* Add drag-n-drop to workspace list to move items (draw order & copy between projects)
-
-V 0.3.1
-* another favour for Debian release
-* Added "Add Waypoint" to mouse context menu
-
-V 0.3.0.bureaucratic
-* Add copyright notice to GpxExamples to satisfy bureaucrats @ debian
-
-V 0.3.0
-* A lot of little fixes to prevent crashes and glitches due to multithreading
-* Take special care of the +-180 degree problem
-* Add RGB support to raster maps
-* Add a lot of cursor stuff to select items and to display on-screen-options
-* Add timezone support
-* Add dialog to view/edit waypoint data
-* Add 'moving waypoint' and 'project waypoint' as functions to on-screen-options
\ No newline at end of file
diff --git a/.hg/Trashcan/resources_NOfdMH.qrc.bak b/.hg/Trashcan/resources_NOfdMH.qrc.bak
deleted file mode 100644
index 983073f..0000000
--- a/.hg/Trashcan/resources_NOfdMH.qrc.bak
+++ /dev/null
@@ -1,275 +0,0 @@
-<RCC>
-    <qresource prefix="/">
-        <file>icons/8x8/bullet_black.png</file>
-        <file>icons/8x8/bullet_blue.png</file>
-        <file>icons/8x8/bullet_brown.png</file>
-        <file>icons/8x8/bullet_cyan.png</file>
-        <file>icons/8x8/bullet_dark_blue.png</file>
-        <file>icons/8x8/bullet_dark_cyan.png</file>
-        <file>icons/8x8/bullet_dark_gray.png</file>
-        <file>icons/8x8/bullet_dark_green.png</file>
-        <file>icons/8x8/bullet_dark_magenta.png</file>
-        <file>icons/8x8/bullet_dark_red.png</file>
-        <file>icons/8x8/bullet_dark_yellow.png</file>
-        <file>icons/8x8/bullet_gray.png</file>
-        <file>icons/8x8/bullet_green.png</file>
-        <file>icons/8x8/bullet_magenta.png</file>
-        <file>icons/8x8/bullet_orange.png</file>
-        <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>
-        <file>icons/32x32/Add.png</file>
-        <file>icons/32x32/AddMapWorkspace.png</file>
-        <file>icons/32x32/Cancel.png</file>
-        <file>icons/32x32/Check.png</file>
-        <file>icons/32x32/DeleteMultiple.png</file>
-        <file>icons/32x32/DeleteOne.png</file>
-        <file>icons/32x32/Down.png</file>
-        <file>icons/32x32/FolderMap.png</file>
-        <file>icons/32x32/FolderDEM.png</file>
-        <file>icons/32x32/Font.png</file>
-        <file>icons/32x32/FromMap.png</file>
-        <file>icons/32x32/Grid.png</file>
-        <file>icons/32x32/GridSetup.png</file>
-        <file>icons/32x32/GridWizzard.png</file>
-        <file>icons/32x32/Help.png</file>
-        <file>icons/32x32/Info.png</file>
-        <file>icons/32x32/Map.png</file>
-        <file>icons/32x32/QMapShack.png</file>
-        <file>icons/32x32/MimeIMG.png</file>
-        <file>icons/32x32/MimeJNX.png</file>
-        <file>icons/32x32/MimeMAP.png</file>
-        <file>icons/32x32/MimeRMAP.png</file>
-        <file>icons/32x32/MimeVRT.png</file>
-        <file>icons/32x32/MimeDemVRT.png</file>
-        <file>icons/32x32/MouseWheel.png</file>
-        <file>icons/32x32/NightDay.png</file>
-        <file>icons/32x32/NoFix.png</file>
-        <file>icons/32x32/Off.png</file>
-        <file>icons/32x32/POIText.png</file>
-        <file>icons/32x32/Reset.png</file>
-        <file>icons/32x32/Right.png</file>
-        <file>icons/32x32/Scale.png</file>
-        <file>icons/32x32/SelectColor.png</file>
-        <file>icons/32x32/ToBottom.png</file>
-        <file>icons/32x32/ToTop.png</file>
-        <file>icons/32x32/ToolTip.png</file>
-        <file>icons/32x32/Up.png</file>
-        <file>icons/32x32/SetupMapWorkspace.png</file>
-        <file>icons/32x32/SaveGIS.png</file>
-        <file>icons/32x32/SaveAllGIS.png</file>
-        <file>icons/32x32/LoadGIS.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/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>
-        <file>icons/48x48/AddMapWorkspace.png</file>
-        <file>icons/48x48/Cancel.png</file>
-        <file>icons/48x48/Check.png</file>
-        <file>icons/48x48/DeleteMultiple.png</file>
-        <file>icons/48x48/DeleteOne.png</file>
-        <file>icons/48x48/Down.png</file>
-        <file>icons/48x48/FolderMap.png</file>
-        <file>icons/48x48/FolderDEM.png</file>
-        <file>icons/48x48/Font.png</file>
-        <file>icons/48x48/FromMap.png</file>
-        <file>icons/48x48/Grid.png</file>
-        <file>icons/48x48/GridSetup.png</file>
-        <file>icons/48x48/GridWizzard.png</file>
-        <file>icons/48x48/Help.png</file>
-        <file>icons/48x48/Info.png</file>
-        <file>icons/48x48/Map.png</file>
-        <file>icons/48x48/QMapShack.png</file>
-        <file>icons/48x48/MimeIMG.png</file>
-        <file>icons/48x48/MimeJNX.png</file>
-        <file>icons/48x48/MimeMAP.png</file>
-        <file>icons/48x48/MimeRMAP.png</file>
-        <file>icons/48x48/MimeVRT.png</file>
-        <file>icons/48x48/MimeDemVRT.png</file>
-        <file>icons/48x48/MouseWheel.png</file>
-        <file>icons/48x48/NightDay.png</file>
-        <file>icons/48x48/NoFix.png</file>
-        <file>icons/48x48/Off.png</file>
-        <file>icons/48x48/POIText.png</file>
-        <file>icons/48x48/Reset.png</file>
-        <file>icons/48x48/Right.png</file>
-        <file>icons/48x48/Scale.png</file>
-        <file>icons/48x48/SelectColor.png</file>
-        <file>icons/48x48/ToBottom.png</file>
-        <file>icons/48x48/ToTop.png</file>
-        <file>icons/48x48/ToolTip.png</file>
-        <file>icons/48x48/Up.png</file>
-        <file>icons/48x48/SetupMapWorkspace.png</file>
-        <file>icons/48x48/SaveGIS.png</file>
-        <file>icons/48x48/SaveAllGIS.png</file>
-        <file>icons/48x48/LoadGIS.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/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>
-        <file>icons/cache/32x32/DistIcon.png</file>
-        <file>icons/cache/32x32/dnf.png</file>
-        <file>icons/cache/32x32/down_icon.png</file>
-        <file>icons/cache/32x32/earth.png</file>
-        <file>icons/cache/32x32/event.png</file>
-        <file>icons/cache/32x32/found.png</file>
-        <file>icons/cache/32x32/ftf.png</file>
-        <file>icons/cache/32x32/greenpin.png</file>
-        <file>icons/cache/32x32/halfstar.png</file>
-        <file>icons/cache/32x32/letterbox.png</file>
-        <file>icons/cache/32x32/log.png</file>
-        <file>icons/cache/32x32/maxicon.png</file>
-        <file>icons/cache/32x32/mega.png</file>
-        <file>icons/cache/32x32/minicon.png</file>
-        <file>icons/cache/32x32/multi.png</file>
-        <file>icons/cache/32x32/needs_maintenance.png</file>
-        <file>icons/cache/32x32/OCMLogo.png</file>
-        <file>icons/cache/32x32/OCMLogoSmall.png</file>
-        <file>icons/cache/32x32/other.png</file>
-        <file>icons/cache/32x32/parking.png</file>
-        <file>icons/cache/32x32/pushpin.png</file>
-        <file>icons/cache/32x32/restore.png</file>
-        <file>icons/cache/32x32/SearchIcon.png</file>
-        <file>icons/cache/32x32/star_empty.png</file>
-        <file>icons/cache/32x32/star.png</file>
-        <file>icons/cache/32x32/traditional.png</file>
-        <file>icons/cache/32x32/trailhead.png</file>
-        <file>icons/cache/32x32/treasure.png</file>
-        <file>icons/cache/32x32/unknown.png</file>
-        <file>icons/cache/32x32/up_icon.png</file>
-        <file>icons/cache/32x32/virtual.png</file>
-        <file>icons/cache/32x32/waypoint-flag-red.png</file>
-        <file>icons/cache/32x32/webcam.png</file>
-        <file>icons/cache/32x32/wherigo.png</file>
-        <file>icons/cache/32x32/write_note.png</file>
-        <file>icons/waypoints/32x32/Default.png</file>
-        <file>icons/waypoints/32x32/PinRed.png</file>
-        <file>icons/waypoints/32x32/PinGreen.png</file>
-        <file>icons/waypoints/32x32/PinBlue.png</file>
-        <file>icons/waypoints/32x32/FlagRed.png</file>
-        <file>icons/waypoints/32x32/FlagGreen.png</file>
-        <file>icons/waypoints/32x32/FlagBlue.png</file>
-        <file>icons/waypoints/32x32/BoxRed.png</file>
-        <file>icons/waypoints/32x32/BoxGreen.png</file>
-        <file>icons/waypoints/32x32/BoxBlue.png</file>
-        <file>icons/waypoints/32x32/DiamondRed.png</file>
-        <file>icons/waypoints/32x32/DiamondGreen.png</file>
-        <file>icons/waypoints/32x32/DiamondBlue.png</file>
-        <file>icons/waypoints/32x32/Residence.png</file>
-        <file>cursors/cursorArrow.png</file>
-        <file>cursors/cursorMove.png</file>
-        <file>cursors/cursorMoveMap.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>
-    </qresource>
-</RCC>
diff --git a/.hg/Trashcan/resources_VTtTG0.qrc.bak b/.hg/Trashcan/resources_VTtTG0.qrc.bak
deleted file mode 100644
index 13636e9..0000000
--- a/.hg/Trashcan/resources_VTtTG0.qrc.bak
+++ /dev/null
@@ -1,232 +0,0 @@
-<RCC>
-    <qresource prefix="/">
-        <file>icons/8x8/bullet_black.png</file>
-        <file>icons/8x8/bullet_blue.png</file>
-        <file>icons/8x8/bullet_brown.png</file>
-        <file>icons/8x8/bullet_cyan.png</file>
-        <file>icons/8x8/bullet_dark_blue.png</file>
-        <file>icons/8x8/bullet_dark_cyan.png</file>
-        <file>icons/8x8/bullet_dark_gray.png</file>
-        <file>icons/8x8/bullet_dark_green.png</file>
-        <file>icons/8x8/bullet_dark_magenta.png</file>
-        <file>icons/8x8/bullet_dark_red.png</file>
-        <file>icons/8x8/bullet_dark_yellow.png</file>
-        <file>icons/8x8/bullet_gray.png</file>
-        <file>icons/8x8/bullet_green.png</file>
-        <file>icons/8x8/bullet_magenta.png</file>
-        <file>icons/8x8/bullet_orange.png</file>
-        <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>
-        <file>icons/32x32/AddMapWorkspace.png</file>
-        <file>icons/32x32/Cancel.png</file>
-        <file>icons/32x32/Check.png</file>
-        <file>icons/32x32/DeleteMultiple.png</file>
-        <file>icons/32x32/DeleteOne.png</file>
-        <file>icons/32x32/Down.png</file>
-        <file>icons/32x32/FolderMap.png</file>
-        <file>icons/32x32/FolderDEM.png</file>
-        <file>icons/32x32/Font.png</file>
-        <file>icons/32x32/FromMap.png</file>
-        <file>icons/32x32/Grid.png</file>
-        <file>icons/32x32/GridSetup.png</file>
-        <file>icons/32x32/GridWizzard.png</file>
-        <file>icons/32x32/Help.png</file>
-        <file>icons/32x32/Info.png</file>
-        <file>icons/32x32/Map.png</file>
-        <file>icons/32x32/QMapShack.png</file>
-        <file>icons/32x32/MimeIMG.png</file>
-        <file>icons/32x32/MimeJNX.png</file>
-        <file>icons/32x32/MimeMAP.png</file>
-        <file>icons/32x32/MimeRMAP.png</file>
-        <file>icons/32x32/MimeVRT.png</file>
-        <file>icons/32x32/MimeDemVRT.png</file>
-        <file>icons/32x32/MouseWheel.png</file>
-        <file>icons/32x32/NightDay.png</file>
-        <file>icons/32x32/NoFix.png</file>
-        <file>icons/32x32/Off.png</file>
-        <file>icons/32x32/POIText.png</file>
-        <file>icons/32x32/Reset.png</file>
-        <file>icons/32x32/Right.png</file>
-        <file>icons/32x32/Scale.png</file>
-        <file>icons/32x32/SelectColor.png</file>
-        <file>icons/32x32/ToBottom.png</file>
-        <file>icons/32x32/ToTop.png</file>
-        <file>icons/32x32/ToolTip.png</file>
-        <file>icons/32x32/Up.png</file>
-        <file>icons/32x32/SetupMapWorkspace.png</file>
-        <file>icons/32x32/SaveGIS.png</file>
-        <file>icons/32x32/SaveAllGIS.png</file>
-        <file>icons/32x32/LoadGIS.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/48x48/2DFix.png</file>
-        <file>icons/48x48/3DFix.png</file>
-        <file>icons/48x48/Add.png</file>
-        <file>icons/48x48/AddMapWorkspace.png</file>
-        <file>icons/48x48/Cancel.png</file>
-        <file>icons/48x48/Check.png</file>
-        <file>icons/48x48/DeleteMultiple.png</file>
-        <file>icons/48x48/DeleteOne.png</file>
-        <file>icons/48x48/Down.png</file>
-        <file>icons/48x48/FolderMap.png</file>
-        <file>icons/48x48/FolderDEM.png</file>
-        <file>icons/48x48/Font.png</file>
-        <file>icons/48x48/FromMap.png</file>
-        <file>icons/48x48/Grid.png</file>
-        <file>icons/48x48/GridSetup.png</file>
-        <file>icons/48x48/GridWizzard.png</file>
-        <file>icons/48x48/Help.png</file>
-        <file>icons/48x48/Info.png</file>
-        <file>icons/48x48/Map.png</file>
-        <file>icons/48x48/QMapShack.png</file>
-        <file>icons/48x48/MimeIMG.png</file>
-        <file>icons/48x48/MimeJNX.png</file>
-        <file>icons/48x48/MimeMAP.png</file>
-        <file>icons/48x48/MimeRMAP.png</file>
-        <file>icons/48x48/MimeVRT.png</file>
-        <file>icons/48x48/MimeDemVRT.png</file>
-        <file>icons/48x48/MouseWheel.png</file>
-        <file>icons/48x48/NightDay.png</file>
-        <file>icons/48x48/NoFix.png</file>
-        <file>icons/48x48/Off.png</file>
-        <file>icons/48x48/POIText.png</file>
-        <file>icons/48x48/Reset.png</file>
-        <file>icons/48x48/Right.png</file>
-        <file>icons/48x48/Scale.png</file>
-        <file>icons/48x48/SelectColor.png</file>
-        <file>icons/48x48/ToBottom.png</file>
-        <file>icons/48x48/ToTop.png</file>
-        <file>icons/48x48/ToolTip.png</file>
-        <file>icons/48x48/Up.png</file>
-        <file>icons/48x48/SetupMapWorkspace.png</file>
-        <file>icons/48x48/SaveGIS.png</file>
-        <file>icons/48x48/SaveAllGIS.png</file>
-        <file>icons/48x48/LoadGIS.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/cache/32x32/bluepin.png</file>
-        <file>icons/cache/32x32/cito.png</file>
-        <file>icons/cache/32x32/corrected.png</file>
-        <file>icons/cache/32x32/DistIcon.png</file>
-        <file>icons/cache/32x32/dnf.png</file>
-        <file>icons/cache/32x32/down_icon.png</file>
-        <file>icons/cache/32x32/earth.png</file>
-        <file>icons/cache/32x32/event.png</file>
-        <file>icons/cache/32x32/found.png</file>
-        <file>icons/cache/32x32/ftf.png</file>
-        <file>icons/cache/32x32/greenpin.png</file>
-        <file>icons/cache/32x32/halfstar.png</file>
-        <file>icons/cache/32x32/letterbox.png</file>
-        <file>icons/cache/32x32/log.png</file>
-        <file>icons/cache/32x32/maxicon.png</file>
-        <file>icons/cache/32x32/mega.png</file>
-        <file>icons/cache/32x32/minicon.png</file>
-        <file>icons/cache/32x32/multi.png</file>
-        <file>icons/cache/32x32/needs_maintenance.png</file>
-        <file>icons/cache/32x32/OCMLogo.png</file>
-        <file>icons/cache/32x32/OCMLogoSmall.png</file>
-        <file>icons/cache/32x32/other.png</file>
-        <file>icons/cache/32x32/parking.png</file>
-        <file>icons/cache/32x32/pushpin.png</file>
-        <file>icons/cache/32x32/restore.png</file>
-        <file>icons/cache/32x32/SearchIcon.png</file>
-        <file>icons/cache/32x32/star_empty.png</file>
-        <file>icons/cache/32x32/star.png</file>
-        <file>icons/cache/32x32/traditional.png</file>
-        <file>icons/cache/32x32/trailhead.png</file>
-        <file>icons/cache/32x32/treasure.png</file>
-        <file>icons/cache/32x32/unknown.png</file>
-        <file>icons/cache/32x32/up_icon.png</file>
-        <file>icons/cache/32x32/virtual.png</file>
-        <file>icons/cache/32x32/waypoint-flag-red.png</file>
-        <file>icons/cache/32x32/webcam.png</file>
-        <file>icons/cache/32x32/wherigo.png</file>
-        <file>icons/cache/32x32/write_note.png</file>
-        <file>icons/waypoints/32x32/Default.png</file>
-        <file>icons/waypoints/32x32/PinRed.png</file>
-        <file>icons/waypoints/32x32/PinGreen.png</file>
-        <file>icons/waypoints/32x32/PinBlue.png</file>
-        <file>icons/waypoints/32x32/FlagRed.png</file>
-        <file>icons/waypoints/32x32/FlagGreen.png</file>
-        <file>icons/waypoints/32x32/FlagBlue.png</file>
-        <file>icons/waypoints/32x32/BoxRed.png</file>
-        <file>icons/waypoints/32x32/BoxGreen.png</file>
-        <file>icons/waypoints/32x32/BoxBlue.png</file>
-        <file>icons/waypoints/32x32/DiamondRed.png</file>
-        <file>icons/waypoints/32x32/DiamondGreen.png</file>
-        <file>icons/waypoints/32x32/DiamondBlue.png</file>
-        <file>icons/waypoints/32x32/Residence.png</file>
-        <file>cursors/cursorArrow.png</file>
-        <file>cursors/cursorMove.png</file>
-        <file>cursors/cursorMoveMap.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>
-    </qresource>
-</RCC>
diff --git a/.hg/bookmarks b/.hg/bookmarks
deleted file mode 100644
index e69de29..0000000
diff --git a/.hg/branch b/.hg/branch
deleted file mode 100644
index 4ad96d5..0000000
--- a/.hg/branch
+++ /dev/null
@@ -1 +0,0 @@
-default
diff --git a/.hg/cache/branch2-base b/.hg/cache/branch2-base
deleted file mode 100644
index 58729ea..0000000
--- a/.hg/cache/branch2-base
+++ /dev/null
@@ -1,5 +0,0 @@
-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
deleted file mode 100644
index 7b687fa..0000000
--- a/.hg/cache/branch2-served
+++ /dev/null
@@ -1,5 +0,0 @@
-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
deleted file mode 100644
index 98a58c3..0000000
Binary files a/.hg/cache/rbc-names-v1 and /dev/null differ
diff --git a/.hg/cache/rbc-revs-v1 b/.hg/cache/rbc-revs-v1
deleted file mode 100644
index 61d519d..0000000
Binary files a/.hg/cache/rbc-revs-v1 and /dev/null differ
diff --git a/.hg/cur-message.txt b/.hg/cur-message.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/.hg/dirstate b/.hg/dirstate
deleted file mode 100644
index 812d128..0000000
Binary files a/.hg/dirstate and /dev/null differ
diff --git a/.hg/hgrc b/.hg/hgrc
deleted file mode 100644
index 95e2160..0000000
--- a/.hg/hgrc
+++ /dev/null
@@ -1,6 +0,0 @@
-[paths]
-default = https://kiozen@bitbucket.org/maproom/qmapshack
-
-
-[ui]
-merge = kdiff3
diff --git a/.hg/last-message.txt b/.hg/last-message.txt
deleted file mode 100644
index 252d2ac..0000000
--- a/.hg/last-message.txt
+++ /dev/null
@@ -1 +0,0 @@
-Added tag V 1.0.0 for changeset 6fb4d49d01a6
\ No newline at end of file
diff --git a/.hg/requires b/.hg/requires
deleted file mode 100644
index f634f66..0000000
--- a/.hg/requires
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644
index 4a55457..0000000
--- a/.hg/shelves/2014-08-10_14-17-09_parent_rev_212
+++ /dev/null
@@ -1,107 +0,0 @@
-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
deleted file mode 100644
index e69de29..0000000
diff --git a/.hg/store/00changelog.d b/.hg/store/00changelog.d
deleted file mode 100644
index c063362..0000000
Binary files a/.hg/store/00changelog.d and /dev/null differ
diff --git a/.hg/store/00changelog.i b/.hg/store/00changelog.i
deleted file mode 100644
index ea93e47..0000000
Binary files a/.hg/store/00changelog.i and /dev/null differ
diff --git a/.hg/store/00manifest.d b/.hg/store/00manifest.d
deleted file mode 100644
index 6787ab0..0000000
Binary files a/.hg/store/00manifest.d and /dev/null differ
diff --git a/.hg/store/00manifest.i b/.hg/store/00manifest.i
deleted file mode 100644
index cfd3bda..0000000
Binary files a/.hg/store/00manifest.i and /dev/null 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
deleted file mode 100644
index bcb9f21..0000000
Binary files a/.hg/store/data/3rdparty/_c_get_opt/_c_get_opt.cpp.i and /dev/null 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
deleted file mode 100644
index 68330f8..0000000
Binary files a/.hg/store/data/3rdparty/_c_get_opt/_c_get_opt.h.i and /dev/null 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
deleted file mode 100644
index 2373e1b..0000000
Binary files a/.hg/store/data/3rdparty/_c_get_opt/_c_make_lists.txt.i and /dev/null 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
deleted file mode 100644
index fad685c..0000000
Binary files a/.hg/store/data/3rdparty/_c_get_opt/class_get_opt.html.i and /dev/null 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
deleted file mode 100644
index 0466d04..0000000
Binary files a/.hg/store/data/3rdparty/_c_get_opt/getopt.pro.i and /dev/null 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
deleted file mode 100644
index aad6d9c..0000000
Binary files a/.hg/store/data/3rdparty/_c_get_opt/main.cpp.i and /dev/null 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
deleted file mode 100644
index 3e073f5..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/_c_main_window.cpp.i and /dev/null 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
deleted file mode 100644
index 6f50f7b..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/_c_main_window.h.i and /dev/null 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
deleted file mode 100644
index 787b6a0..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/_c_make_lists.txt.i and /dev/null 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
deleted file mode 100644
index 6b816f7..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/_c_qlgt_db.cpp.i and /dev/null 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
deleted file mode 100644
index d9f07f9..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/_c_qlgt_db.h.i and /dev/null 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
deleted file mode 100644
index f45b70b..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/_c_qms_db.cpp.i and /dev/null 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
deleted file mode 100644
index 1d7a944..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/_c_qms_db.h.i and /dev/null 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
deleted file mode 100644
index 5a0196a..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/_i_main_window.ui.i and /dev/null 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
deleted file mode 100644
index 215dc69..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/converter.cpp.i and /dev/null 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
deleted file mode 100644
index 14e6f16..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/main.cpp.i and /dev/null 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
deleted file mode 100644
index f28a95b..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlb.cpp.i and /dev/null 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
deleted file mode 100644
index 4efee01..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlb.h.i and /dev/null 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
deleted file mode 100644
index fcbca91..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.cpp.i and /dev/null 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
deleted file mode 100644
index f968b06..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_diary.h.i and /dev/null 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
deleted file mode 100644
index db4a54f..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_route.cpp.i and /dev/null 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
deleted file mode 100644
index 839aab0..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_route.h.i and /dev/null 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
deleted file mode 100644
index b7ca089..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_track.cpp.i and /dev/null 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
deleted file mode 100644
index 12f8a2a..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_track.h.i and /dev/null 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
deleted file mode 100644
index 45b6666..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.cpp.i and /dev/null 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
deleted file mode 100644
index 0b9d261..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_c_qlgt_wpt.h.i and /dev/null 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
deleted file mode 100644
index 7de9697..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_item.cpp.i and /dev/null 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
deleted file mode 100644
index 267d6f0..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_item.h.i and /dev/null 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
deleted file mode 100644
index 5fa5915..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_qlgt_overlay.cpp.i and /dev/null 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
deleted file mode 100644
index 8825813..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/qlgt/_i_qlgt_overlay.h.i and /dev/null 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
deleted file mode 100644
index dafd895..0000000
Binary files a/.hg/store/data/3rdparty/_d_b_converter/resources.qrc.i and /dev/null differ
diff --git a/.hg/store/data/_c_make_lists.txt.i b/.hg/store/data/_c_make_lists.txt.i
deleted file mode 100644
index c225ad5..0000000
Binary files a/.hg/store/data/_c_make_lists.txt.i and /dev/null differ
diff --git a/.hg/store/data/_c_pack_config.cmake.i b/.hg/store/data/_c_pack_config.cmake.i
deleted file mode 100644
index adeace2..0000000
Binary files a/.hg/store/data/_c_pack_config.cmake.i and /dev/null differ
diff --git a/.hg/store/data/_configure_checks.cmake.i b/.hg/store/data/_configure_checks.cmake.i
deleted file mode 100644
index 52e2288..0000000
Binary files a/.hg/store/data/_configure_checks.cmake.i and /dev/null differ
diff --git a/.hg/store/data/_doxyfile.i b/.hg/store/data/_doxyfile.i
deleted file mode 100644
index efb7567..0000000
Binary files a/.hg/store/data/_doxyfile.i and /dev/null 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
deleted file mode 100644
index f423e9d..0000000
Binary files a/.hg/store/data/_gpx_examples/_c_o_p_y_r_i_g_h_t.i and /dev/null differ
diff --git a/.hg/store/data/_gpx_examples/basecamp.gpx.i b/.hg/store/data/_gpx_examples/basecamp.gpx.i
deleted file mode 100644
index 6cbae4b..0000000
Binary files a/.hg/store/data/_gpx_examples/basecamp.gpx.i and /dev/null differ
diff --git a/.hg/store/data/_gpx_examples/qlandkarte.gpx.i b/.hg/store/data/_gpx_examples/qlandkarte.gpx.i
deleted file mode 100644
index e1105ac..0000000
Binary files a/.hg/store/data/_gpx_examples/qlandkarte.gpx.i and /dev/null 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
deleted file mode 100644
index b2dd24e..0000000
Binary files a/.hg/store/data/_l_i_c_e_n_s_e.i and /dev/null 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
deleted file mode 100644
index fa49cef..0000000
Binary files a/.hg/store/data/_r_e_a_d_m_e.md.i and /dev/null differ
diff --git a/.hg/store/data/call___uncrustify.cfg.i b/.hg/store/data/call___uncrustify.cfg.i
deleted file mode 100644
index 4f2e2e3..0000000
Binary files a/.hg/store/data/call___uncrustify.cfg.i and /dev/null differ
diff --git a/.hg/store/data/call___uncrustify.sh.i b/.hg/store/data/call___uncrustify.sh.i
deleted file mode 100644
index b3a129c..0000000
Binary files a/.hg/store/data/call___uncrustify.sh.i and /dev/null differ
diff --git a/.hg/store/data/changelog.txt.i b/.hg/store/data/changelog.txt.i
deleted file mode 100644
index 04f8185..0000000
Binary files a/.hg/store/data/changelog.txt.i and /dev/null differ
diff --git a/.hg/store/data/cmake/_c_make_lists.txt.i b/.hg/store/data/cmake/_c_make_lists.txt.i
deleted file mode 100644
index 750bcca..0000000
Binary files a/.hg/store/data/cmake/_c_make_lists.txt.i and /dev/null 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
deleted file mode 100644
index 64b3a96..0000000
Binary files a/.hg/store/data/cmake/_modules/_c_make_lists.txt.i and /dev/null 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
deleted file mode 100644
index 45ce5c0..0000000
Binary files 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 and /dev/null 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
deleted file mode 100644
index 9253298..0000000
Binary files a/.hg/store/data/cmake/_modules/_define_c_make_defaults.cmake.i and /dev/null 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
deleted file mode 100644
index f374e44..0000000
Binary files a/.hg/store/data/cmake/_modules/_define_compiler_flags.cmake.i and /dev/null 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
deleted file mode 100644
index 69a9c89..0000000
Binary files a/.hg/store/data/cmake/_modules/_define_installation_paths.cmake.i and /dev/null 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
deleted file mode 100644
index ee64018..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_d_m_t_x.cmake.i and /dev/null 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
deleted file mode 100644
index c3ef56b..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_e_x_i_f.cmake.i and /dev/null 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
deleted file mode 100644
index 7f2ad0b..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_g_d_a_l.cmake.i and /dev/null 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
deleted file mode 100644
index dd497d4..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_g_p_s_d.cmake.i and /dev/null 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
deleted file mode 100644
index c8a913b..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_j_p_e_g.cmake.i and /dev/null 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
deleted file mode 100644
index 5f7ee5e..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_p_r_o_j.cmake.i and /dev/null 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
deleted file mode 100644
index 983f941..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_qext_serial_port.cmake.i and /dev/null 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
deleted file mode 100644
index 1243e8f..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_qt_soap.cmake.i and /dev/null 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
deleted file mode 100644
index 578a3db..0000000
Binary files a/.hg/store/data/cmake/_modules/_find_xerces_c.cmake.i and /dev/null 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
deleted file mode 100644
index 52cc04f..0000000
Binary files a/.hg/store/data/cmake/_modules/_macro_copy_file.cmake.i and /dev/null 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
deleted file mode 100644
index e59be5c..0000000
Binary files a/.hg/store/data/cmake/_modules/_macro_ensure_out_of_source_build.cmake.i and /dev/null differ
diff --git a/.hg/store/data/cmake__uninstall.cmake.in.i b/.hg/store/data/cmake__uninstall.cmake.in.i
deleted file mode 100644
index 157ced9..0000000
Binary files a/.hg/store/data/cmake__uninstall.cmake.in.i and /dev/null differ
diff --git a/.hg/store/data/config.h.cmake.i b/.hg/store/data/config.h.cmake.i
deleted file mode 100644
index 2cdb2f3..0000000
Binary files a/.hg/store/data/config.h.cmake.i and /dev/null differ
diff --git a/.hg/store/data/features.txt.i b/.hg/store/data/features.txt.i
deleted file mode 100644
index 37c1356..0000000
Binary files a/.hg/store/data/features.txt.i and /dev/null differ
diff --git a/.hg/store/data/maproom.1.i b/.hg/store/data/maproom.1.i
deleted file mode 100644
index d57fb6d..0000000
Binary files a/.hg/store/data/maproom.1.i and /dev/null differ
diff --git a/.hg/store/data/maproom.desktop.i b/.hg/store/data/maproom.desktop.i
deleted file mode 100644
index 81d8846..0000000
Binary files a/.hg/store/data/maproom.desktop.i and /dev/null differ
diff --git a/.hg/store/data/mkfile.i b/.hg/store/data/mkfile.i
deleted file mode 100644
index 73cae7b..0000000
Binary files a/.hg/store/data/mkfile.i and /dev/null differ
diff --git a/.hg/store/data/nsi/3rdparty.txt.i b/.hg/store/data/nsi/3rdparty.txt.i
deleted file mode 100644
index f73d690..0000000
Binary files a/.hg/store/data/nsi/3rdparty.txt.i and /dev/null differ
diff --git a/.hg/store/data/nsi/_help.ico.i b/.hg/store/data/nsi/_help.ico.i
deleted file mode 100644
index 5aeac8f..0000000
Binary files a/.hg/store/data/nsi/_help.ico.i and /dev/null 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
deleted file mode 100644
index 8bf2d32..0000000
Binary files a/.hg/store/data/nsi/_m_u_i___h_e_a_d_e_r_i_m_a_g_e.bmp.i and /dev/null 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
deleted file mode 100644
index c73bf00..0000000
Binary files 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 and /dev/null differ
diff --git a/.hg/store/data/nsi/_q_map_shack.ico.i b/.hg/store/data/nsi/_q_map_shack.ico.i
deleted file mode 100644
index 9c2330a..0000000
Binary files a/.hg/store/data/nsi/_q_map_shack.ico.i and /dev/null 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
deleted file mode 100644
index 1fdff6d..0000000
Binary files a/.hg/store/data/nsi/_q_map_shack___installer.nsi.i and /dev/null 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
deleted file mode 100644
index f92645e..0000000
Binary files a/.hg/store/data/nsi/_q_map_shack___installer32.nsi.i and /dev/null differ
diff --git a/.hg/store/data/nsi/copyfiles.bat.i b/.hg/store/data/nsi/copyfiles.bat.i
deleted file mode 100644
index c859273..0000000
Binary files a/.hg/store/data/nsi/copyfiles.bat.i and /dev/null differ
diff --git a/.hg/store/data/nsi/copyfiles32.bat.i b/.hg/store/data/nsi/copyfiles32.bat.i
deleted file mode 100644
index cb2b404..0000000
Binary files a/.hg/store/data/nsi/copyfiles32.bat.i and /dev/null differ
diff --git a/.hg/store/data/nsi/gdalicon.ico.i b/.hg/store/data/nsi/gdalicon.ico.i
deleted file mode 100644
index 40e0f22..0000000
Binary files a/.hg/store/data/nsi/gdalicon.ico.i and /dev/null differ
diff --git a/.hg/store/data/nsi/kfm__home.ico.i b/.hg/store/data/nsi/kfm__home.ico.i
deleted file mode 100644
index dc06abf..0000000
Binary files a/.hg/store/data/nsi/kfm__home.ico.i and /dev/null differ
diff --git a/.hg/store/data/nsi/konsole.ico.i b/.hg/store/data/nsi/konsole.ico.i
deleted file mode 100644
index 573fa8c..0000000
Binary files a/.hg/store/data/nsi/konsole.ico.i and /dev/null differ
diff --git a/.hg/store/data/qmapshack.1.i b/.hg/store/data/qmapshack.1.i
deleted file mode 100644
index f719909..0000000
Binary files a/.hg/store/data/qmapshack.1.i and /dev/null differ
diff --git a/.hg/store/data/qmapshack.desktop.i b/.hg/store/data/qmapshack.desktop.i
deleted file mode 100644
index c24bb2e..0000000
Binary files a/.hg/store/data/qmapshack.desktop.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_about.cpp.i b/.hg/store/data/src/_c_about.cpp.i
deleted file mode 100644
index 7182cc7..0000000
Binary files a/.hg/store/data/src/_c_about.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_about.h.i b/.hg/store/data/src/_c_about.h.i
deleted file mode 100644
index 43602a2..0000000
Binary files a/.hg/store/data/src/_c_about.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_app_opts.h.i b/.hg/store/data/src/_c_app_opts.h.i
deleted file mode 100644
index b2f7542..0000000
Binary files a/.hg/store/data/src/_c_app_opts.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_canvas.cpp.i b/.hg/store/data/src/_c_canvas.cpp.i
deleted file mode 100644
index 588b714..0000000
Binary files a/.hg/store/data/src/_c_canvas.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_canvas.h.i b/.hg/store/data/src/_c_canvas.h.i
deleted file mode 100644
index c7fdf02..0000000
Binary files a/.hg/store/data/src/_c_canvas.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_file_ext.h.i b/.hg/store/data/src/_c_file_ext.h.i
deleted file mode 100644
index 1e93c8d..0000000
Binary files a/.hg/store/data/src/_c_file_ext.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_main_window.cpp.i b/.hg/store/data/src/_c_main_window.cpp.i
deleted file mode 100644
index a8ea5dd..0000000
Binary files a/.hg/store/data/src/_c_main_window.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_main_window.h.i b/.hg/store/data/src/_c_main_window.h.i
deleted file mode 100644
index 7f949ad..0000000
Binary files a/.hg/store/data/src/_c_main_window.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_make_lists.txt.i b/.hg/store/data/src/_c_make_lists.txt.i
deleted file mode 100644
index 84a5513..0000000
Binary files a/.hg/store/data/src/_c_make_lists.txt.i and /dev/null 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
deleted file mode 100644
index 56a1593..0000000
Binary files a/.hg/store/data/src/_c_map_d_b.cpp.i and /dev/null 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
deleted file mode 100644
index b4e79a0..0000000
Binary files a/.hg/store/data/src/_c_map_d_b.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_c_settings.h.i b/.hg/store/data/src/_c_settings.h.i
deleted file mode 100644
index 7a974f0..0000000
Binary files a/.hg/store/data/src/_c_settings.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_geo_math.cpp.i b/.hg/store/data/src/_geo_math.cpp.i
deleted file mode 100644
index d51b3c6..0000000
Binary files a/.hg/store/data/src/_geo_math.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/_geo_math.h.i b/.hg/store/data/src/_geo_math.h.i
deleted file mode 100644
index b5b9552..0000000
Binary files a/.hg/store/data/src/_geo_math.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_i_about.ui.i b/.hg/store/data/src/_i_about.ui.i
deleted file mode 100644
index 4070802..0000000
Binary files a/.hg/store/data/src/_i_about.ui.i and /dev/null differ
diff --git a/.hg/store/data/src/_i_d_b.cpp.i b/.hg/store/data/src/_i_d_b.cpp.i
deleted file mode 100644
index 5f78b96..0000000
Binary files a/.hg/store/data/src/_i_d_b.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/_i_d_b.h.i b/.hg/store/data/src/_i_d_b.h.i
deleted file mode 100644
index d60e172..0000000
Binary files a/.hg/store/data/src/_i_d_b.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_i_draw_context.cpp.i b/.hg/store/data/src/_i_draw_context.cpp.i
deleted file mode 100644
index a48e8f1..0000000
Binary files a/.hg/store/data/src/_i_draw_context.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/_i_draw_context.h.i b/.hg/store/data/src/_i_draw_context.h.i
deleted file mode 100644
index a6f5bd1..0000000
Binary files a/.hg/store/data/src/_i_draw_context.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_i_draw_object.cpp.i b/.hg/store/data/src/_i_draw_object.cpp.i
deleted file mode 100644
index d0a79c0..0000000
Binary files a/.hg/store/data/src/_i_draw_object.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/_i_draw_object.h.i b/.hg/store/data/src/_i_draw_object.h.i
deleted file mode 100644
index 7323d25..0000000
Binary files a/.hg/store/data/src/_i_draw_object.h.i and /dev/null differ
diff --git a/.hg/store/data/src/_i_main_window.ui.i b/.hg/store/data/src/_i_main_window.ui.i
deleted file mode 100644
index e3df59a..0000000
Binary files a/.hg/store/data/src/_i_main_window.ui.i and /dev/null differ
diff --git a/.hg/store/data/src/_platform.h.i b/.hg/store/data/src/_platform.h.i
deleted file mode 100644
index d207483..0000000
Binary files a/.hg/store/data/src/_platform.h.i and /dev/null 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
deleted file mode 100644
index 0a31899..0000000
Binary files a/.hg/store/data/src/animation/_c_o_p_y_r_i_g_h_t.i and /dev/null 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
deleted file mode 100644
index 58f4308..0000000
Binary files a/.hg/store/data/src/animation/_r_e_a_d_m_e.i and /dev/null 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
deleted file mode 100644
index 391c000..0000000
Binary files a/.hg/store/data/src/animation/_w_t_f_p_l-2.i and /dev/null differ
diff --git a/.hg/store/data/src/animation/loader.gif.i b/.hg/store/data/src/animation/loader.gif.i
deleted file mode 100644
index 6f31db7..0000000
Binary files a/.hg/store/data/src/animation/loader.gif.i and /dev/null differ
diff --git a/.hg/store/data/src/animation/loader2.gif.i b/.hg/store/data/src/animation/loader2.gif.i
deleted file mode 100644
index 87a5677..0000000
Binary files a/.hg/store/data/src/animation/loader2.gif.i and /dev/null differ
diff --git a/.hg/store/data/src/canvas/_c_canvas.cpp.i b/.hg/store/data/src/canvas/_c_canvas.cpp.i
deleted file mode 100644
index 2ac6509..0000000
Binary files a/.hg/store/data/src/canvas/_c_canvas.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/canvas/_c_canvas.h.i b/.hg/store/data/src/canvas/_c_canvas.h.i
deleted file mode 100644
index 9916b12..0000000
Binary files a/.hg/store/data/src/canvas/_c_canvas.h.i and /dev/null 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
deleted file mode 100644
index 631877c..0000000
Binary files a/.hg/store/data/src/canvas/_c_canvas_setup.cpp.i and /dev/null 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
deleted file mode 100644
index 17f9afb..0000000
Binary files a/.hg/store/data/src/canvas/_c_canvas_setup.h.i and /dev/null 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
deleted file mode 100644
index 9fb418f..0000000
Binary files a/.hg/store/data/src/canvas/_i_canvas_setup.ui.i and /dev/null 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
deleted file mode 100644
index 17452c6..0000000
Binary files a/.hg/store/data/src/canvas/_i_draw_context.cpp.i and /dev/null 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
deleted file mode 100644
index 6974842..0000000
Binary files a/.hg/store/data/src/canvas/_i_draw_context.h.i and /dev/null 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
deleted file mode 100644
index 8783c7c..0000000
Binary files a/.hg/store/data/src/canvas/_i_draw_object.cpp.i and /dev/null 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
deleted file mode 100644
index c606d91..0000000
Binary files a/.hg/store/data/src/canvas/_i_draw_object.h.i and /dev/null 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
deleted file mode 100644
index 0229610..0000000
Binary files a/.hg/store/data/src/cursors/_c_o_p_y_r_i_g_h_t.i and /dev/null differ
diff --git a/.hg/store/data/src/cursors/cursor_add.png.i b/.hg/store/data/src/cursors/cursor_add.png.i
deleted file mode 100644
index 7817f22..0000000
Binary files a/.hg/store/data/src/cursors/cursor_add.png.i and /dev/null differ
diff --git a/.hg/store/data/src/cursors/cursor_arrow.png.i b/.hg/store/data/src/cursors/cursor_arrow.png.i
deleted file mode 100644
index f36ab72..0000000
Binary files a/.hg/store/data/src/cursors/cursor_arrow.png.i and /dev/null differ
diff --git a/.hg/store/data/src/cursors/cursor_move.png.i b/.hg/store/data/src/cursors/cursor_move.png.i
deleted file mode 100644
index cd60d12..0000000
Binary files a/.hg/store/data/src/cursors/cursor_move.png.i and /dev/null 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
deleted file mode 100644
index 5853e59..0000000
Binary files a/.hg/store/data/src/cursors/cursor_move_area.png.i and /dev/null 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
deleted file mode 100644
index 95585e7..0000000
Binary files a/.hg/store/data/src/cursors/cursor_move_line.png.i and /dev/null 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
deleted file mode 100644
index eb114fe..0000000
Binary files a/.hg/store/data/src/cursors/cursor_move_map.png.i and /dev/null 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
deleted file mode 100644
index ddedb7f..0000000
Binary files a/.hg/store/data/src/cursors/cursor_move_wpt.png.i and /dev/null 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
deleted file mode 100644
index 72f5056..0000000
Binary files a/.hg/store/data/src/cursors/cursor_select_range.png.i and /dev/null differ
diff --git a/.hg/store/data/src/cursors/wpt_highlight.png.i b/.hg/store/data/src/cursors/wpt_highlight.png.i
deleted file mode 100644
index d06a53c..0000000
Binary files a/.hg/store/data/src/cursors/wpt_highlight.png.i and /dev/null differ
diff --git a/.hg/store/data/src/cursors/wpt_highlight.svg.i b/.hg/store/data/src/cursors/wpt_highlight.svg.i
deleted file mode 100644
index df950f4..0000000
Binary files a/.hg/store/data/src/cursors/wpt_highlight.svg.i and /dev/null differ
diff --git a/.hg/store/data/src/dem/_c_dem.cpp.i b/.hg/store/data/src/dem/_c_dem.cpp.i
deleted file mode 100644
index 50a391a..0000000
Binary files a/.hg/store/data/src/dem/_c_dem.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/dem/_c_dem.h.i b/.hg/store/data/src/dem/_c_dem.h.i
deleted file mode 100644
index fe9569f..0000000
Binary files a/.hg/store/data/src/dem/_c_dem.h.i and /dev/null 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
deleted file mode 100644
index f0966b7..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_draw.cpp.i and /dev/null 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
deleted file mode 100644
index 5425692..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_draw.h.i and /dev/null 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
deleted file mode 100644
index 6f23a75..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_item.cpp.i and /dev/null 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
deleted file mode 100644
index c267641..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_item.h.i and /dev/null 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
deleted file mode 100644
index bfa96d5..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_list.cpp.i and /dev/null 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
deleted file mode 100644
index a6419bd..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_list.h.i and /dev/null 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
deleted file mode 100644
index 4a7e170..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_path_setup.cpp.i and /dev/null 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
deleted file mode 100644
index ceee914..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_path_setup.h.i and /dev/null 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
deleted file mode 100644
index 0cb52b0..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_prop_setup.cpp.i and /dev/null 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
deleted file mode 100644
index 96df144..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_prop_setup.h.i and /dev/null 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
deleted file mode 100644
index 3b38f06..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_v_r_t.cpp.i and /dev/null 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
deleted file mode 100644
index c715a25..0000000
Binary files a/.hg/store/data/src/dem/_c_dem_v_r_t.h.i and /dev/null differ
diff --git a/.hg/store/data/src/dem/_i_dem.cpp.i b/.hg/store/data/src/dem/_i_dem.cpp.i
deleted file mode 100644
index 078a3a2..0000000
Binary files a/.hg/store/data/src/dem/_i_dem.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/dem/_i_dem.h.i b/.hg/store/data/src/dem/_i_dem.h.i
deleted file mode 100644
index 10212c0..0000000
Binary files a/.hg/store/data/src/dem/_i_dem.h.i and /dev/null 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
deleted file mode 100644
index 857ff93..0000000
Binary files a/.hg/store/data/src/dem/_i_dem_list.ui.i and /dev/null 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
deleted file mode 100644
index 750c4e0..0000000
Binary files a/.hg/store/data/src/dem/_i_dem_path_setup.ui.i and /dev/null 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
deleted file mode 100644
index fe6b56c..0000000
Binary files a/.hg/store/data/src/dem/_i_dem_prop.cpp.i and /dev/null 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
deleted file mode 100644
index bd7b31e..0000000
Binary files a/.hg/store/data/src/dem/_i_dem_prop.h.i and /dev/null 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
deleted file mode 100644
index eb1b992..0000000
Binary files a/.hg/store/data/src/dem/_i_dem_prop_setup.ui.i and /dev/null 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
deleted file mode 100644
index 6e75966..0000000
Binary files a/.hg/store/data/src/device/_c_device_garmin.cpp.i and /dev/null 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
deleted file mode 100644
index d2a163b..0000000
Binary files a/.hg/store/data/src/device/_c_device_garmin.h.i and /dev/null 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
deleted file mode 100644
index f785b2e..0000000
Binary files a/.hg/store/data/src/device/_c_device_two_nav.cpp.i and /dev/null 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
deleted file mode 100644
index 38a873f..0000000
Binary files a/.hg/store/data/src/device/_c_device_two_nav.h.i and /dev/null 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
deleted file mode 100644
index 007ef9e..0000000
Binary files a/.hg/store/data/src/device/_c_device_watcher_linux.cpp.i and /dev/null 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
deleted file mode 100644
index f780c7e..0000000
Binary files a/.hg/store/data/src/device/_c_device_watcher_linux.h.i and /dev/null 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
deleted file mode 100644
index c84211f..0000000
Binary files a/.hg/store/data/src/device/_c_device_watcher_windows.cpp.i and /dev/null 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
deleted file mode 100644
index 524182b..0000000
Binary files a/.hg/store/data/src/device/_c_device_watcher_windows.h.i and /dev/null differ
diff --git a/.hg/store/data/src/device/_i_device.cpp.i b/.hg/store/data/src/device/_i_device.cpp.i
deleted file mode 100644
index 91aa34c..0000000
Binary files a/.hg/store/data/src/device/_i_device.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/device/_i_device.h.i b/.hg/store/data/src/device/_i_device.h.i
deleted file mode 100644
index bb49fbb..0000000
Binary files a/.hg/store/data/src/device/_i_device.h.i and /dev/null 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
deleted file mode 100644
index b1f1c88..0000000
Binary files a/.hg/store/data/src/device/_i_device_watcher.cpp.i and /dev/null 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
deleted file mode 100644
index fe52601..0000000
Binary files a/.hg/store/data/src/device/_i_device_watcher.h.i and /dev/null 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
deleted file mode 100644
index b576a02..0000000
Binary files a/.hg/store/data/src/gis-search/_c_gis_search_widget.cpp.i and /dev/null 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
deleted file mode 100644
index 83dbf68..0000000
Binary files a/.hg/store/data/src/gis-search/_c_gis_search_widget.h.i and /dev/null 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
deleted file mode 100644
index ac6b35f..0000000
Binary files a/.hg/store/data/src/gis-search/_c_search_google.cpp.i and /dev/null 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
deleted file mode 100644
index d55ae36..0000000
Binary files a/.hg/store/data/src/gis-search/_c_search_google.h.i and /dev/null 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
deleted file mode 100644
index 7acc551..0000000
Binary files a/.hg/store/data/src/gis-search/_i_gis_search.cpp.i and /dev/null 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
deleted file mode 100644
index 41d1510..0000000
Binary files a/.hg/store/data/src/gis-search/_i_gis_search.h.i and /dev/null 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
deleted file mode 100644
index 5232268..0000000
Binary files a/.hg/store/data/src/gis-search/_i_gis_search_widget.ui.i and /dev/null 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
deleted file mode 100644
index 5215a43..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_draw.cpp.i and /dev/null 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
deleted file mode 100644
index 19d9fab..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_draw.h.i and /dev/null 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
deleted file mode 100644
index 7e36d14..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_item_rte.cpp.i and /dev/null 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
deleted file mode 100644
index cfc2e13..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_item_rte.h.i and /dev/null 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
deleted file mode 100644
index 95a1930..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_item_trk.cpp.i and /dev/null 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
deleted file mode 100644
index 3fb5788..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_item_trk.h.i and /dev/null 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
deleted file mode 100644
index a0ed06b..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_item_wpt.cpp.i and /dev/null 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
deleted file mode 100644
index 7d64559..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_item_wpt.h.i and /dev/null 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
deleted file mode 100644
index 734b993..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_list_d_b.cpp.i and /dev/null 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
deleted file mode 100644
index c3e8685..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_list_d_b.h.i and /dev/null 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
deleted file mode 100644
index ae09b1e..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_list_wks.cpp.i and /dev/null 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
deleted file mode 100644
index 087e0f4..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_list_wks.h.i and /dev/null 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
deleted file mode 100644
index 62c2963..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_project.cpp.i and /dev/null 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
deleted file mode 100644
index 7bfa18f..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_project.h.i and /dev/null 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
deleted file mode 100644
index c90717e..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_serialization.cpp.i and /dev/null 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
deleted file mode 100644
index 3e70f76..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_serialization.h.i and /dev/null 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
deleted file mode 100644
index 9f0f1e9..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_widget.cpp.i and /dev/null 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
deleted file mode 100644
index 6a7b102..0000000
Binary files a/.hg/store/data/src/gis/_c_gis_widget.h.i and /dev/null 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
deleted file mode 100644
index ec50197..0000000
Binary files a/.hg/store/data/src/gis/_i_gis_item.cpp.i and /dev/null 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
deleted file mode 100644
index 97ae607..0000000
Binary files a/.hg/store/data/src/gis/_i_gis_item.h.i and /dev/null 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
deleted file mode 100644
index 5a927b3..0000000
Binary files a/.hg/store/data/src/gis/_i_gis_line.cpp.i and /dev/null 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
deleted file mode 100644
index 931bb80..0000000
Binary files a/.hg/store/data/src/gis/_i_gis_line.h.i and /dev/null 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
deleted file mode 100644
index fb6d252..0000000
Binary files a/.hg/store/data/src/gis/_i_gis_project.cpp.i and /dev/null 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
deleted file mode 100644
index 0c80c51..0000000
Binary files a/.hg/store/data/src/gis/_i_gis_project.h.i and /dev/null 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
deleted file mode 100644
index ab9a2b3..0000000
Binary files a/.hg/store/data/src/gis/_i_gis_widget.ui.i and /dev/null differ
diff --git a/.hg/store/data/src/gis/_wpt_icons.cpp.i b/.hg/store/data/src/gis/_wpt_icons.cpp.i
deleted file mode 100644
index 9c21c7f..0000000
Binary files a/.hg/store/data/src/gis/_wpt_icons.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/gis/_wpt_icons.h.i b/.hg/store/data/src/gis/_wpt_icons.h.i
deleted file mode 100644
index b3b17a7..0000000
Binary files a/.hg/store/data/src/gis/_wpt_icons.h.i and /dev/null 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
deleted file mode 100644
index 97352e2..0000000
Binary files a/.hg/store/data/src/gis/bin/_c_bin_project.cpp.i and /dev/null 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
deleted file mode 100644
index f756316..0000000
Binary files a/.hg/store/data/src/gis/bin/_c_bin_project.h.i and /dev/null 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
deleted file mode 100644
index 93f2273..0000000
Binary files a/.hg/store/data/src/gis/bin/_c_gis_serialization.cpp.i and /dev/null 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
deleted file mode 100644
index 36673d6..0000000
Binary files a/.hg/store/data/src/gis/bin/_c_gis_serialization.h.i and /dev/null differ
diff --git a/.hg/store/data/src/gis/bin/serialization.cpp.i b/.hg/store/data/src/gis/bin/serialization.cpp.i
deleted file mode 100644
index 1552bf4..0000000
Binary files a/.hg/store/data/src/gis/bin/serialization.cpp.i and /dev/null 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
deleted file mode 100644
index 577afa9..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_database.cpp.i and /dev/null 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
deleted file mode 100644
index 4551469..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_database.h.i and /dev/null 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
deleted file mode 100644
index 259f722..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_group.cpp.i and /dev/null 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
deleted file mode 100644
index 1344600..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_group.h.i and /dev/null 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
deleted file mode 100644
index 174729e..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_lost_found.cpp.i and /dev/null 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
deleted file mode 100644
index d2204a8..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_lost_found.h.i and /dev/null 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
deleted file mode 100644
index 32912ac..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_other.cpp.i and /dev/null 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
deleted file mode 100644
index 154998f..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_other.h.i and /dev/null 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
deleted file mode 100644
index 8e3e920..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_project.cpp.i and /dev/null 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
deleted file mode 100644
index 6740d75..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_folder_project.h.i and /dev/null 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
deleted file mode 100644
index 3ba3d8c..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_item.cpp.i and /dev/null 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
deleted file mode 100644
index d4d8602..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_item.h.i and /dev/null 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
deleted file mode 100644
index df641ba..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_project.cpp.i and /dev/null 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
deleted file mode 100644
index 8942635..0000000
Binary files a/.hg/store/data/src/gis/db/_c_d_b_project.h.i and /dev/null 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
deleted file mode 100644
index 80f8ccf..0000000
Binary files a/.hg/store/data/src/gis/db/_c_lost_found_project.cpp.i and /dev/null 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
deleted file mode 100644
index fc52dde..0000000
Binary files a/.hg/store/data/src/gis/db/_c_lost_found_project.h.i and /dev/null 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
deleted file mode 100644
index 936ef55..0000000
Binary files a/.hg/store/data/src/gis/db/_c_setup_d_b.cpp.i and /dev/null 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
deleted file mode 100644
index 3101c77..0000000
Binary files a/.hg/store/data/src/gis/db/_c_setup_d_b.h.i and /dev/null 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
deleted file mode 100644
index 0ca53ee..0000000
Binary files a/.hg/store/data/src/gis/db/_c_setup_database.cpp.i and /dev/null 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
deleted file mode 100644
index 74e5a6e..0000000
Binary files a/.hg/store/data/src/gis/db/_c_setup_database.h.i and /dev/null 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
deleted file mode 100644
index 2f87895..0000000
Binary files a/.hg/store/data/src/gis/db/_c_setup_folder.cpp.i and /dev/null 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
deleted file mode 100644
index 3f7f244..0000000
Binary files a/.hg/store/data/src/gis/db/_c_setup_folder.h.i and /dev/null 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
deleted file mode 100644
index 63c9474..0000000
Binary files a/.hg/store/data/src/gis/db/_c_setup_workspace.cpp.i and /dev/null 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
deleted file mode 100644
index 82e1743..0000000
Binary files a/.hg/store/data/src/gis/db/_c_setup_workspace.h.i and /dev/null 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
deleted file mode 100644
index 355a183..0000000
Binary files a/.hg/store/data/src/gis/db/_i_d_b.cpp.i and /dev/null 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
deleted file mode 100644
index 7ad34a5..0000000
Binary files a/.hg/store/data/src/gis/db/_i_d_b.h.i and /dev/null 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
deleted file mode 100644
index e0d0882..0000000
Binary files a/.hg/store/data/src/gis/db/_i_d_b_folder.cpp.i and /dev/null 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
deleted file mode 100644
index a9ebe22..0000000
Binary files a/.hg/store/data/src/gis/db/_i_d_b_folder.h.i and /dev/null 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
deleted file mode 100644
index bc069c5..0000000
Binary files a/.hg/store/data/src/gis/db/_i_setup_d_b.ui.i and /dev/null 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
deleted file mode 100644
index ec16445..0000000
Binary files a/.hg/store/data/src/gis/db/_i_setup_database.ui.i and /dev/null 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
deleted file mode 100644
index ad03a3f..0000000
Binary files a/.hg/store/data/src/gis/db/_i_setup_folder.ui.i and /dev/null 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
deleted file mode 100644
index f5baf18..0000000
Binary files a/.hg/store/data/src/gis/db/_i_setup_workspace.ui.i and /dev/null differ
diff --git a/.hg/store/data/src/gis/db/macros.h.i b/.hg/store/data/src/gis/db/macros.h.i
deleted file mode 100644
index 0ece6a4..0000000
Binary files a/.hg/store/data/src/gis/db/macros.h.i and /dev/null 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
deleted file mode 100644
index fce63e7..0000000
Binary files a/.hg/store/data/src/gis/gpx/_c_gis_project.cpp.i and /dev/null 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
deleted file mode 100644
index 338629c..0000000
Binary files a/.hg/store/data/src/gis/gpx/_c_gis_project.h.i and /dev/null 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
deleted file mode 100644
index 25e465a..0000000
Binary files a/.hg/store/data/src/gis/gpx/_c_gpx_project.cpp.i and /dev/null 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
deleted file mode 100644
index bf22911..0000000
Binary files a/.hg/store/data/src/gis/gpx/_c_gpx_project.h.i and /dev/null differ
diff --git a/.hg/store/data/src/gis/gpx/serialization.cpp.i b/.hg/store/data/src/gis/gpx/serialization.cpp.i
deleted file mode 100644
index 4aabb68..0000000
Binary files a/.hg/store/data/src/gis/gpx/serialization.cpp.i and /dev/null 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
deleted file mode 100644
index a82d12e..0000000
Binary files a/.hg/store/data/src/gis/ovl/_c_details_ovl_area.cpp.i and /dev/null 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
deleted file mode 100644
index 220c42e..0000000
Binary files a/.hg/store/data/src/gis/ovl/_c_details_ovl_area.h.i and /dev/null 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
deleted file mode 100644
index 730be19..0000000
Binary files a/.hg/store/data/src/gis/ovl/_c_gis_item_ovl_area.cpp.i and /dev/null 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
deleted file mode 100644
index 1ed8519..0000000
Binary files a/.hg/store/data/src/gis/ovl/_c_gis_item_ovl_area.h.i and /dev/null 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
deleted file mode 100644
index 8d76a20..0000000
Binary files a/.hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.cpp.i and /dev/null 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
deleted file mode 100644
index ccfb859..0000000
Binary files a/.hg/store/data/src/gis/ovl/_c_scr_opt_ovl_area.h.i and /dev/null 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
deleted file mode 100644
index 9cf38ff..0000000
Binary files a/.hg/store/data/src/gis/ovl/_i_details_ovl_area.ui.i and /dev/null 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
deleted file mode 100644
index c050908..0000000
Binary files a/.hg/store/data/src/gis/ovl/_i_scr_opt_ovl_area.ui.i and /dev/null 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
deleted file mode 100644
index 8e198ca..0000000
Binary files a/.hg/store/data/src/gis/prj/_c_details_prj.cpp.i and /dev/null 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
deleted file mode 100644
index 1b4243b..0000000
Binary files a/.hg/store/data/src/gis/prj/_c_details_prj.h.i and /dev/null 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
deleted file mode 100644
index e9a92c8..0000000
Binary files a/.hg/store/data/src/gis/prj/_i_details_prj.ui.i and /dev/null 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
deleted file mode 100644
index f8b0460..0000000
Binary files a/.hg/store/data/src/gis/prj/_i_gis_project.cpp.i and /dev/null 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
deleted file mode 100644
index cfe277c..0000000
Binary files a/.hg/store/data/src/gis/prj/_i_gis_project.h.i and /dev/null 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
deleted file mode 100644
index 49d05c5..0000000
Binary files a/.hg/store/data/src/gis/qms/_c_qms_project.cpp.i and /dev/null 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
deleted file mode 100644
index 183b4ff..0000000
Binary files a/.hg/store/data/src/gis/qms/_c_qms_project.h.i and /dev/null differ
diff --git a/.hg/store/data/src/gis/qms/serialization.cpp.i b/.hg/store/data/src/gis/qms/serialization.cpp.i
deleted file mode 100644
index 261d671..0000000
Binary files a/.hg/store/data/src/gis/qms/serialization.cpp.i and /dev/null 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
deleted file mode 100644
index 0797535..0000000
Binary files a/.hg/store/data/src/gis/rte/_c_gis_item_rte.cpp.i and /dev/null 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
deleted file mode 100644
index bd23953..0000000
Binary files a/.hg/store/data/src/gis/rte/_c_gis_item_rte.h.i and /dev/null 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
deleted file mode 100644
index 0d1d16d..0000000
Binary files a/.hg/store/data/src/gis/rte/_c_scr_opt_rte.cpp.i and /dev/null 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
deleted file mode 100644
index 770dbdd..0000000
Binary files a/.hg/store/data/src/gis/rte/_c_scr_opt_rte.h.i and /dev/null 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
deleted file mode 100644
index a23b644..0000000
Binary files a/.hg/store/data/src/gis/rte/_i_scr_opt_rte.ui.i and /dev/null 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
deleted file mode 100644
index 30aed4f..0000000
Binary files a/.hg/store/data/src/gis/search/_c_search_google.cpp.i and /dev/null 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
deleted file mode 100644
index 4fa2d97..0000000
Binary files a/.hg/store/data/src/gis/search/_c_search_google.h.i and /dev/null 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
deleted file mode 100644
index 5acc3c4..0000000
Binary files a/.hg/store/data/src/gis/tnv/_c_two_nav_project.cpp.i and /dev/null 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
deleted file mode 100644
index 4f79d36..0000000
Binary files a/.hg/store/data/src/gis/tnv/_c_two_nav_project.h.i and /dev/null differ
diff --git a/.hg/store/data/src/gis/tnv/serialization.cpp.i b/.hg/store/data/src/gis/tnv/serialization.cpp.i
deleted file mode 100644
index ef1677b..0000000
Binary files a/.hg/store/data/src/gis/tnv/serialization.cpp.i and /dev/null 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
deleted file mode 100644
index 62bb11f..0000000
Binary files a/.hg/store/data/src/gis/trk/_c_combine_trk.cpp.i and /dev/null 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
deleted file mode 100644
index f28943e..0000000
Binary files a/.hg/store/data/src/gis/trk/_c_combine_trk.h.i and /dev/null 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
deleted file mode 100644
index caae94b..0000000
Binary files a/.hg/store/data/src/gis/trk/_c_details_trk.cpp.i and /dev/null 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
deleted file mode 100644
index 46b1744..0000000
Binary files a/.hg/store/data/src/gis/trk/_c_details_trk.h.i and /dev/null 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
deleted file mode 100644
index 578d040..0000000
Binary files a/.hg/store/data/src/gis/trk/_c_gis_item_trk.cpp.i and /dev/null 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
deleted file mode 100644
index 92764a5..0000000
Binary files a/.hg/store/data/src/gis/trk/_c_gis_item_trk.h.i and /dev/null 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
deleted file mode 100644
index 3e64ed8..0000000
Binary files a/.hg/store/data/src/gis/trk/_c_scr_opt_trk.cpp.i and /dev/null 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
deleted file mode 100644
index e74093d..0000000
Binary files a/.hg/store/data/src/gis/trk/_c_scr_opt_trk.h.i and /dev/null 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
deleted file mode 100644
index 208c0ce..0000000
Binary files a/.hg/store/data/src/gis/trk/_i_combine_trk.ui.i and /dev/null 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
deleted file mode 100644
index 6ed1977..0000000
Binary files a/.hg/store/data/src/gis/trk/_i_details_trk.ui.i and /dev/null 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
deleted file mode 100644
index 5701e5b..0000000
Binary files a/.hg/store/data/src/gis/trk/_i_scr_opt_trk.ui.i and /dev/null 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
deleted file mode 100644
index cf482af..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_delete.cpp.i and /dev/null 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
deleted file mode 100644
index fc0c18c..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_delete.h.i and /dev/null 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
deleted file mode 100644
index e0e4dfb..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_douglas_peuker.cpp.i and /dev/null 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
deleted file mode 100644
index fa1f27f..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_douglas_peuker.h.i and /dev/null 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
deleted file mode 100644
index 3856a3c..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_median.cpp.i and /dev/null 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
deleted file mode 100644
index b06841d..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_median.h.i and /dev/null 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
deleted file mode 100644
index e68a064..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_new_date.cpp.i and /dev/null 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
deleted file mode 100644
index df77f6b..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_new_date.h.i and /dev/null 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
deleted file mode 100644
index 86e6b0b..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_obscure_date.cpp.i and /dev/null 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
deleted file mode 100644
index 28cace1..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_obscure_date.h.i and /dev/null 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
deleted file mode 100644
index 74ccb22..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_offset_elevation.cpp.i and /dev/null 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
deleted file mode 100644
index 94e7e2f..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_offset_elevation.h.i and /dev/null 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
deleted file mode 100644
index 8ddcd0e..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_replace_elevation.cpp.i and /dev/null 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
deleted file mode 100644
index 43f2c53..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_replace_elevation.h.i and /dev/null 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
deleted file mode 100644
index 4aac38a..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_reset.cpp.i and /dev/null 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
deleted file mode 100644
index c885c94..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_reset.h.i and /dev/null 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
deleted file mode 100644
index d9dfa50..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_speed.cpp.i and /dev/null 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
deleted file mode 100644
index 5a0580a..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_c_filter_speed.h.i and /dev/null 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
deleted file mode 100644
index 8e45317..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_delete.ui.i and /dev/null 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
deleted file mode 100644
index 060c693..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_douglas_peuker.ui.i and /dev/null 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
deleted file mode 100644
index e83a0ff..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_median.ui.i and /dev/null 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
deleted file mode 100644
index e0097d1..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_new_date.ui.i and /dev/null 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
deleted file mode 100644
index 870e5aa..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_obscure_date.ui.i and /dev/null 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
deleted file mode 100644
index c7925c3..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_offset_elevation.ui.i and /dev/null 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
deleted file mode 100644
index e57eca1..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_replace_elevation.ui.i and /dev/null 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
deleted file mode 100644
index 7c01121..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_reset.ui.i and /dev/null 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
deleted file mode 100644
index e7f055b..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/_i_filter_speed.ui.i and /dev/null 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
deleted file mode 100644
index a3fae8a..0000000
Binary files a/.hg/store/data/src/gis/trk/filter/filter.cpp.i and /dev/null 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
deleted file mode 100644
index 2d1e4ca..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_details_geo_cache.cpp.i and /dev/null 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
deleted file mode 100644
index e31ddb7..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_details_geo_cache.h.i and /dev/null 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
deleted file mode 100644
index 3fdadee..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_details_wpt.cpp.i and /dev/null 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
deleted file mode 100644
index d8c2ee8..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_details_wpt.h.i and /dev/null 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
deleted file mode 100644
index 8b54015..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_gis_item_wpt.cpp.i and /dev/null 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
deleted file mode 100644
index 3660783..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_gis_item_wpt.h.i and /dev/null 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
deleted file mode 100644
index 4700969..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_proj_wpt.cpp.i and /dev/null 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
deleted file mode 100644
index fa95c41..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_proj_wpt.h.i and /dev/null 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
deleted file mode 100644
index 532a7a9..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_scr_opt_wpt.cpp.i and /dev/null 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
deleted file mode 100644
index 391ce74..0000000
Binary files a/.hg/store/data/src/gis/wpt/_c_scr_opt_wpt.h.i and /dev/null 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
deleted file mode 100644
index 9fb79b4..0000000
Binary files a/.hg/store/data/src/gis/wpt/_i_details_geo_cache.ui.i and /dev/null 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
deleted file mode 100644
index 72d11dd..0000000
Binary files a/.hg/store/data/src/gis/wpt/_i_details_wpt.ui.i and /dev/null 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
deleted file mode 100644
index a4ee0ab..0000000
Binary files a/.hg/store/data/src/gis/wpt/_i_proj_wpt.ui.i and /dev/null 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
deleted file mode 100644
index 5396999..0000000
Binary files a/.hg/store/data/src/gis/wpt/_i_scr_opt_wpt.ui.i and /dev/null differ
diff --git a/.hg/store/data/src/grid/_c_grid.cpp.i b/.hg/store/data/src/grid/_c_grid.cpp.i
deleted file mode 100644
index 4c76a36..0000000
Binary files a/.hg/store/data/src/grid/_c_grid.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/grid/_c_grid.h.i b/.hg/store/data/src/grid/_c_grid.h.i
deleted file mode 100644
index 63546e3..0000000
Binary files a/.hg/store/data/src/grid/_c_grid.h.i and /dev/null 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
deleted file mode 100644
index 422a6f0..0000000
Binary files a/.hg/store/data/src/grid/_c_grid_setup.cpp.i and /dev/null 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
deleted file mode 100644
index d344e09..0000000
Binary files a/.hg/store/data/src/grid/_c_grid_setup.h.i and /dev/null 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
deleted file mode 100644
index b9b00a3..0000000
Binary files a/.hg/store/data/src/grid/_c_proj_wizard.cpp.i and /dev/null 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
deleted file mode 100644
index 96ae2c1..0000000
Binary files a/.hg/store/data/src/grid/_c_proj_wizard.h.i and /dev/null 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
deleted file mode 100644
index 6c842e4..0000000
Binary files a/.hg/store/data/src/grid/_i_grid_setup.ui.i and /dev/null 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
deleted file mode 100644
index e514dd0..0000000
Binary files a/.hg/store/data/src/grid/_i_proj_wizard.ui.i and /dev/null differ
diff --git a/.hg/store/data/src/grid/mitab.cpp.i b/.hg/store/data/src/grid/mitab.cpp.i
deleted file mode 100644
index 214695f..0000000
Binary files a/.hg/store/data/src/grid/mitab.cpp.i and /dev/null differ
diff --git a/.hg/store/data/src/grid/mitab.h.i b/.hg/store/data/src/grid/mitab.h.i
deleted file mode 100644
index 5485439..0000000
Binary files a/.hg/store/data/src/grid/mitab.h.i and /dev/null 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
deleted file mode 100644
index b0ad8df..0000000
Binary files a/.hg/store/data/src/helpers/_c_app_opts.h.i and /dev/null 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
deleted file mode 100644
index 336cdf0..0000000
Binary files a/.hg/store/data/src/helpers/_c_elevation_dialog.cpp.i and /dev/null 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
deleted file mode 100644
index 5c36b79..0000000
Binary files a/.hg/store/data/src/helpers/_c_elevation_dialog.h.i and /dev/null 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
deleted file mode 100644
index 5ee9f6c..0000000
Binary files a/.hg/store/data/src/helpers/_c_file_ext.h.i and /dev/null 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
deleted file mode 100644
index a4a67f5..0000000
Binary files a/.hg/store/data/src/helpers/_c_history_list_widget.cpp.i and /dev/null 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
deleted file mode 100644
index 9c07bb3..0000000
Binary files a/.hg/store/data/src/helpers/_c_history_list_widget.h.i and /dev/null 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
deleted file mode 100644
index af26527..0000000
Binary files a/.hg/store/data/src/helpers/_c_input_dialog.cpp.i and /dev/null 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
deleted file mode 100644
index a71de18..0000000
Binary files a/.hg/store/data/src/helpers/_c_input_dialog.h.i and /dev/null 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
deleted file mode 100644
index 124aa8e..0000000
Binary files a/.hg/store/data/src/helpers/_c_links_dialog.cpp.i and /dev/null 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
deleted file mode 100644
index bdd51c0..0000000
Binary files a/.hg/store/data/src/helpers/_c_links_dialog.h.i and /dev/null 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
deleted file mode 100644
index dc4c58a..0000000
Binary files a/.hg/store/data/src/helpers/_c_photo_album.cpp.i and /dev/null 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
deleted file mode 100644
index 607123a..0000000
Binary files a/.hg/store/data/src/helpers/_c_photo_album.h.i and /dev/null 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
deleted file mode 100644
index 0b69e5e..0000000
Binary files a/.hg/store/data/src/helpers/_c_photo_viewer.cpp.i and /dev/null 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
deleted file mode 100644
index 8a6134f..0000000
Binary files a/.hg/store/data/src/helpers/_c_photo_viewer.h.i and /dev/null 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
deleted file mode 100644
index e36204a..0000000
Binary files a/.hg/store/data/src/helpers/_c_position_dialog.cpp.i and /dev/null 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
deleted file mode 100644
index d433080..0000000
Binary files a/.hg/store/data/src/helpers/_c_position_dialog.h.i and /dev/null 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
deleted file mode 100644
index df32100..0000000
Binary files a/.hg/store/data/src/helpers/_c_select_copy_action.cpp.i and /dev/null 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
deleted file mode 100644
index 6921fe4..0000000
Binary files a/.hg/store/data/src/helpers/_c_select_copy_action.h.i and /dev/null 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
deleted file mode 100644
index 6d11b07..0000000
Binary files a/.hg/store/data/src/helpers/_c_select_project_dialog.cpp.i and /dev/null 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
deleted file mode 100644
index ddda53c..0000000
Binary files a/.hg/store/data/src/helpers/_c_select_project_dialog.h.i and /dev/null differ
diff --git a/.hg/store/data/src/helpers/_c_settings.h.i b/.hg/store/data/src/helpers/_c_settings.h.i
deleted file mode 100644
index 4d687c4..0000000
Binary files a/.hg/store/data/src/helpers/_c_settings.h.i and /dev/null 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
deleted file mode 100644
index 44221b3..0000000
Binary files a/.hg/store/data/src/helpers/_c_text_edit_widget.cpp.i and /dev/null 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
deleted file mode 100644
index 7ca8649..0000000
Binary files a/.hg/store/data/src/helpers/_c_text_edit_widget.h.i and /dev/null 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
deleted file mode 100644
index 56bef87..0000000
Binary files a/.hg/store/data/src/helpers/_c_wpt_icon_dialog.cpp.i and /dev/null 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
deleted file mode 100644
index 4ad1e2c..0000000
Binary files a/.hg/store/data/src/helpers/_c_wpt_icon_dialog.h.i and /dev/null 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
deleted file mode 100644
index 1bd9593..0000000
Binary files a/.hg/store/data/src/helpers/_i_elevation_dialog.ui.i and /dev/null 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
deleted file mode 100644
index 0efb69f..0000000
Binary files a/.hg/store/data/src/helpers/_i_input_dialog.ui.i and /dev/null 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
deleted file mode 100644
index 73cf421..0000000
Binary files a/.hg/store/data/src/helpers/_i_links_dialog.ui.i and /dev/null 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
deleted file mode 100644
index 7f8e4fa..0000000
Binary files a/.hg/store/data/src/helpers/_i_photo_album.ui.i and /dev/null 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
deleted file mode 100644
index 5ba4fbe..0000000
Binary files a/.hg/store/data/src/helpers/_i_position_dialog.ui.i and /dev/null 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
deleted file mode 100644
index 60fcc91..0000000
Binary files a/.hg/store/data/src/helpers/_i_select_copy_action.ui.i and /dev/null 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
deleted file mode 100644
index 6567efa..0000000
Binary files a/.hg/store/data/src/helpers/_i_select_project_dialog.ui.i and /dev/null 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
deleted file mode 100644
index d57f46c..0000000
Binary files a/.hg/store/data/src/helpers/_i_text_edit_widget.ui.i and /dev/null 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
deleted file mode 100644
index a19bd5b..0000000
Binary files a/.hg/store/data/src/helpers/_i_wpt_icon_dialog.ui.i and /dev/null differ
diff --git a/.hg/store/data/src/helpers/_platform.h.i b/.hg/store/data/src/helpers/_platform.h.i
deleted file mode 100644
index 7e82c82..0000000
Binary files a/.hg/store/data/src/helpers/_platform.h.i and /dev/null 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
deleted file mode 100644
index faf0daa..0000000
Binary files a/.hg/store/data/src/icons/16x16/2_d_fix.png.i and /dev/null 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
deleted file mode 100644
index 0afad5f..0000000
Binary files a/.hg/store/data/src/icons/16x16/3_d_fix.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_add.png.i b/.hg/store/data/src/icons/16x16/_add.png.i
deleted file mode 100644
index aca851f..0000000
Binary files a/.hg/store/data/src/icons/16x16/_add.png.i and /dev/null 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
deleted file mode 100644
index fdabe8c..0000000
Binary files a/.hg/store/data/src/icons/16x16/_add_map_workspace.png.i and /dev/null 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
deleted file mode 100644
index 993499e..0000000
Binary files a/.hg/store/data/src/icons/16x16/_add_wpt.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_cancel.png.i b/.hg/store/data/src/icons/16x16/_cancel.png.i
deleted file mode 100644
index 105ed6b..0000000
Binary files a/.hg/store/data/src/icons/16x16/_cancel.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_check.png.i b/.hg/store/data/src/icons/16x16/_check.png.i
deleted file mode 100644
index fd7200d..0000000
Binary files a/.hg/store/data/src/icons/16x16/_check.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_close.png.i b/.hg/store/data/src/icons/16x16/_close.png.i
deleted file mode 100644
index 36742ff..0000000
Binary files a/.hg/store/data/src/icons/16x16/_close.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_copy.png.i b/.hg/store/data/src/icons/16x16/_copy.png.i
deleted file mode 100644
index 7dcc274..0000000
Binary files a/.hg/store/data/src/icons/16x16/_copy.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_cut.png.i b/.hg/store/data/src/icons/16x16/_cut.png.i
deleted file mode 100644
index ee8f9e8..0000000
Binary files a/.hg/store/data/src/icons/16x16/_cut.png.i and /dev/null 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
deleted file mode 100644
index c9aba6a..0000000
Binary files a/.hg/store/data/src/icons/16x16/_delete_multiple.png.i and /dev/null 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
deleted file mode 100644
index 3f0a66b..0000000
Binary files a/.hg/store/data/src/icons/16x16/_delete_one.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_down.png.i b/.hg/store/data/src/icons/16x16/_down.png.i
deleted file mode 100644
index d2f2e5f..0000000
Binary files a/.hg/store/data/src/icons/16x16/_down.png.i and /dev/null 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
deleted file mode 100644
index 2963231..0000000
Binary files a/.hg/store/data/src/icons/16x16/_edit_details.png.i and /dev/null 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
deleted file mode 100644
index 284cc6f..0000000
Binary files a/.hg/store/data/src/icons/16x16/_edit_text.png.i and /dev/null 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
deleted file mode 100644
index 9aa798f..0000000
Binary files a/.hg/store/data/src/icons/16x16/_folder_d_e_m.png.i and /dev/null 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
deleted file mode 100644
index 3758113..0000000
Binary files a/.hg/store/data/src/icons/16x16/_folder_map.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_font.png.i b/.hg/store/data/src/icons/16x16/_font.png.i
deleted file mode 100644
index 87874de..0000000
Binary files a/.hg/store/data/src/icons/16x16/_font.png.i and /dev/null 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
deleted file mode 100644
index 7396c57..0000000
Binary files a/.hg/store/data/src/icons/16x16/_from_map.png.i and /dev/null 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
deleted file mode 100644
index 89d0fc5..0000000
Binary files a/.hg/store/data/src/icons/16x16/_gis_project.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_grid.png.i b/.hg/store/data/src/icons/16x16/_grid.png.i
deleted file mode 100644
index 8b44bed..0000000
Binary files a/.hg/store/data/src/icons/16x16/_grid.png.i and /dev/null 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
deleted file mode 100644
index 7ba5b88..0000000
Binary files a/.hg/store/data/src/icons/16x16/_grid_setup.png.i and /dev/null 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
deleted file mode 100644
index 1133ea9..0000000
Binary files a/.hg/store/data/src/icons/16x16/_grid_wizzard.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_help.png.i b/.hg/store/data/src/icons/16x16/_help.png.i
deleted file mode 100644
index 89f526e..0000000
Binary files a/.hg/store/data/src/icons/16x16/_help.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_info.png.i b/.hg/store/data/src/icons/16x16/_info.png.i
deleted file mode 100644
index 19a4f98..0000000
Binary files a/.hg/store/data/src/icons/16x16/_info.png.i and /dev/null 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
deleted file mode 100644
index 021c878..0000000
Binary files a/.hg/store/data/src/icons/16x16/_line_move.png.i and /dev/null 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
deleted file mode 100644
index 43d7213..0000000
Binary files a/.hg/store/data/src/icons/16x16/_load_g_i_s.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_lock.png.i b/.hg/store/data/src/icons/16x16/_lock.png.i
deleted file mode 100644
index d14e051..0000000
Binary files a/.hg/store/data/src/icons/16x16/_lock.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_map.png.i b/.hg/store/data/src/icons/16x16/_map.png.i
deleted file mode 100644
index 6bb434d..0000000
Binary files a/.hg/store/data/src/icons/16x16/_map.png.i and /dev/null 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
deleted file mode 100644
index 3f42222..0000000
Binary files a/.hg/store/data/src/icons/16x16/_map_room.png.i and /dev/null 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
deleted file mode 100644
index d27e267..0000000
Binary files a/.hg/store/data/src/icons/16x16/_mime_dem_v_r_t.png.i and /dev/null 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
deleted file mode 100644
index d5d9f51..0000000
Binary files a/.hg/store/data/src/icons/16x16/_mime_i_m_g.png.i and /dev/null 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
deleted file mode 100644
index 5745985..0000000
Binary files a/.hg/store/data/src/icons/16x16/_mime_j_n_x.png.i and /dev/null 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
deleted file mode 100644
index b9fcc82..0000000
Binary files a/.hg/store/data/src/icons/16x16/_mime_m_a_p.png.i and /dev/null 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
deleted file mode 100644
index fbfa471..0000000
Binary files a/.hg/store/data/src/icons/16x16/_mime_r_m_a_p.png.i and /dev/null 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
deleted file mode 100644
index cce1e5e..0000000
Binary files a/.hg/store/data/src/icons/16x16/_mime_v_r_t.png.i and /dev/null 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
deleted file mode 100644
index 30c012d..0000000
Binary files a/.hg/store/data/src/icons/16x16/_mime_w_m_t_s.png.i and /dev/null 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
deleted file mode 100644
index e7f8d83..0000000
Binary files a/.hg/store/data/src/icons/16x16/_mouse_wheel.png.i and /dev/null 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
deleted file mode 100644
index eb1d8b6..0000000
Binary files a/.hg/store/data/src/icons/16x16/_night_day.png.i and /dev/null 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
deleted file mode 100644
index 37bedcf..0000000
Binary files a/.hg/store/data/src/icons/16x16/_no_fix.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_off.png.i b/.hg/store/data/src/icons/16x16/_off.png.i
deleted file mode 100644
index 4861e40..0000000
Binary files a/.hg/store/data/src/icons/16x16/_off.png.i and /dev/null 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
deleted file mode 100644
index 16e11af..0000000
Binary files a/.hg/store/data/src/icons/16x16/_p_o_i_text.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_paste.png.i b/.hg/store/data/src/icons/16x16/_paste.png.i
deleted file mode 100644
index 853ece6..0000000
Binary files a/.hg/store/data/src/icons/16x16/_paste.png.i and /dev/null 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
deleted file mode 100644
index e8bd21f..0000000
Binary files a/.hg/store/data/src/icons/16x16/_point_move.png.i and /dev/null 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
deleted file mode 100644
index 6c0a28c..0000000
Binary files a/.hg/store/data/src/icons/16x16/_q_map_shack.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_redo.png.i b/.hg/store/data/src/icons/16x16/_redo.png.i
deleted file mode 100644
index cb72d79..0000000
Binary files a/.hg/store/data/src/icons/16x16/_redo.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_reset.png.i b/.hg/store/data/src/icons/16x16/_reset.png.i
deleted file mode 100644
index 53e865d..0000000
Binary files a/.hg/store/data/src/icons/16x16/_reset.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_right.png.i b/.hg/store/data/src/icons/16x16/_right.png.i
deleted file mode 100644
index b36daa7..0000000
Binary files a/.hg/store/data/src/icons/16x16/_right.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_route.png.i b/.hg/store/data/src/icons/16x16/_route.png.i
deleted file mode 100644
index fef8778..0000000
Binary files a/.hg/store/data/src/icons/16x16/_route.png.i and /dev/null 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
deleted file mode 100644
index 45ab6da..0000000
Binary files a/.hg/store/data/src/icons/16x16/_save_all_g_i_s.png.i and /dev/null 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
deleted file mode 100644
index e208ff4..0000000
Binary files a/.hg/store/data/src/icons/16x16/_save_g_i_s.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_scale.png.i b/.hg/store/data/src/icons/16x16/_scale.png.i
deleted file mode 100644
index 18cb10f..0000000
Binary files a/.hg/store/data/src/icons/16x16/_scale.png.i and /dev/null 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
deleted file mode 100644
index 83b2593..0000000
Binary files a/.hg/store/data/src/icons/16x16/_select_color.png.i and /dev/null 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
deleted file mode 100644
index 048efeb..0000000
Binary files a/.hg/store/data/src/icons/16x16/_select_range.png.i and /dev/null 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
deleted file mode 100644
index e368c31..0000000
Binary files a/.hg/store/data/src/icons/16x16/_setup_map_workspace.png.i and /dev/null differ
diff --git a/.hg/store/data/src/icons/16x16/_tainted.png.i b/.hg/store/data/src/icons/16x16/_tainted.png.i
deleted file mode 100644
index 1688be6..0000000
Binary files a/.hg/store/data/src/icons/16x16/_tainted.png.i and /dev/null 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
deleted file mode 100644
index c41b788..0000000
Binary files a/.hg/store/data/src/icons/16x16/_text_bold.png.i and /dev/null 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
deleted file mode 100644
index 2514b26..0000000
Binary files a/.hg/store/data/src/icons/16x16/_text_center.png.i and /dev/null 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
deleted file mode 100644
index 9e43f9e..0000000
Binary files a/.hg/store/data/src/icons/16x16/_text_italic.png.i and /dev/null 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
deleted file mode 100644
index 1f2e7b8..0000000
Binary files a/.hg/store/data/src/icons/16x16/_text_justified.png.i and /dev/null 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
deleted file mode 100644
index 3803d16..0000000
Binary files a/.hg/store/data/src/icons/16x16/_text_left.png.i and /dev/null 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
deleted file mode 100644
index 6efe68e..0000000
Binary files a/.hg/store/data/src/icons/16x16/_text_right.png.i and /dev/null