[shotwell] map: marker display follows page
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [shotwell] map: marker display follows page
- Date: Sat, 23 Feb 2019 19:03:04 +0000 (UTC)
commit 9817d86f41e394bdbfe3830af0365e4a540aaadd
Author: Andreas Brauchli <a brauchli elementarea net>
Date: Sat Aug 20 12:28:22 2016 +0200
map: marker display follows page
Instead of following the current selection, the map now follows the page.
Thus, all marker pins now remain on the map when the selection changes.
Introduce a new highlighted state (different from the selected state.)
The highlighted visible state takes priority over the selected state.
A marker group is shown as selected when it contains a selected marker.
When clicking on a marker group, all grouped photos (and only those) will
be selected in the library window.
.../scalable/actions/gps-marker-highlighted.svg | 414 +++++++++++++++++
.../actions/gps-markers-many-highlighted.svg | 510 +++++++++++++++++++++
src/MapWidget.vala | 185 +++++---
src/Properties.vala | 7 +-
src/Resources.vala | 2 +
5 files changed, 1047 insertions(+), 71 deletions(-)
---
diff --git a/data/icons/hicolor/scalable/actions/gps-marker-highlighted.svg
b/data/icons/hicolor/scalable/actions/gps-marker-highlighted.svg
new file mode 100644
index 00000000..1df387a2
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/gps-marker-highlighted.svg
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="28.742239"
+ height="38.981468"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="gps-marker-highlighted.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3887">
+ <stop
+ id="stop3889"
+ offset="0"
+ style="stop-color:#ff573f;stop-opacity:1;" />
+ <stop
+ id="stop3891"
+ offset="1"
+ style="stop-color:#b71111;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3857">
+ <stop
+ style="stop-color:#87b5f5;stop-opacity:1;"
+ offset="0"
+ id="stop3859" />
+ <stop
+ style="stop-color:#87b5f5;stop-opacity:0;"
+ offset="1"
+ id="stop3861" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3849">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3851" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3853" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3827">
+ <stop
+ id="stop3829"
+ offset="0"
+ style="stop-color:#50a9ff;stop-opacity:1;" />
+ <stop
+ id="stop3831"
+ offset="1"
+ style="stop-color:#0034a9;stop-opacity:0.92490119;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3821">
+ <stop
+ id="stop3823"
+ offset="0"
+ style="stop-color:#60aaf1;stop-opacity:1;" />
+ <stop
+ id="stop3825"
+ offset="1"
+ style="stop-color:#124cd1;stop-opacity:0.92490119;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#535353;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ style="stop-color:#23b3ff;stop-opacity:1;"
+ offset="0"
+ id="stop3767" />
+ <stop
+ style="stop-color:#124cd1;stop-opacity:0.92490119;"
+ offset="1"
+ id="stop3769" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3771"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,324.43662,388.73998)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3843"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3845"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,394.43662,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3849"
+ id="linearGradient3855"
+ x1="461.5"
+ y1="477.36218"
+ x2="462.5"
+ y2="434.36218"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3857"
+ id="linearGradient3863"
+ x1="444.95898"
+ y1="433.89029"
+ x2="444.95898"
+ y2="454.77341"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3849"
+ id="linearGradient3871"
+ x1="382.17749"
+ y1="377.47879"
+ x2="382.17749"
+ y2="414.47479"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3883"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3887"
+ id="linearGradient3885"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,270.34295,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3925"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3927"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,324.43662,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3941"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3943"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,324.43662,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3945"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3887"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,270.34295,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787-3"
+ id="radialGradient3909"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ id="linearGradient3787-3">
+ <stop
+ style="stop-color:#535353;stop-opacity:1;"
+ offset="0"
+ id="stop3789-9" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3791-3" />
+ </linearGradient>
+ <filter
+ inkscape:collect="always"
+ id="filter3803-2"
+ x="-0.096096098"
+ width="1.1921922"
+ y="-0.2882883"
+ height="1.5765766"
+ color-interpolation-filters="sRGB">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.66066066"
+ id="feGaussianBlur3805-5" />
+ </filter>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765-3"
+ id="linearGradient3911"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,324.43662,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <linearGradient
+ id="linearGradient3765-3">
+ <stop
+ style="stop-color:#23ff38;stop-opacity:1"
+ offset="0"
+ id="stop3767-3" />
+ <stop
+ style="stop-color:#124cd1;stop-opacity:0.92490119;"
+ offset="1"
+ id="stop3769-4" />
+ </linearGradient>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="1.6563125"
+ inkscape:cy="25.125718"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:snap-global="false"
+ fit-margin-left="1"
+ units="px"
+ fit-margin-top="1"
+ fit-margin-right="1"
+ fit-margin-bottom="1"
+ inkscape:window-width="1440"
+ inkscape:window-height="836"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2987"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ originx="-306.5341px"
+ originy="-506.68832px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-306.5341,-506.6911)">
+ <g
+ transform="translate(-76.094785,7.3864159e-4)"
+ id="g3042">
+ <g
+ transform="translate(22,75.224057)"
+ id="g3895">
+ <path
+ sodipodi:type="arc"
+
style="opacity:0.58662612;fill:url(#radialGradient3909);fill-opacity:1;stroke:none;filter:url(#filter3803-2)"
+ id="path3785"
+ sodipodi:cx="374.25"
+ sodipodi:cy="464.11218"
+ sodipodi:rx="8.25"
+ sodipodi:ry="2.75"
+ d="m 382.5,464.11218 a 8.25,2.75 0 0 1 -8.25,2.75 8.25,2.75 0 0 1 -8.25,-2.75 8.25,2.75 0 0 1
8.25,-2.75 8.25,2.75 0 0 1 8.25,2.75 z"
+ transform="matrix(1.3594635,0,0,1,-133.77921,1)" />
+ <path
+
style="fill:url(#linearGradient3911);fill-opacity:1;stroke:#0b832d;stroke-width:1;stroke-miterlimit:4;stroke-opacity:0.96862745;stroke-dasharray:none"
+ d="m 375,432.9663 c -5.14414,0 -9.3143,4.17016 -9.3143,9.31432 0,1.76829 0.91939,4.12348
1.34724,4.82763 0.42786,0.70414 7.79657,17.16494 7.79657,17.16494 0,0 7.58026,-16.29039 8.03775,-17.01109
0.45749,-0.7207 1.44704,-3.14782 1.44704,-4.98148 0,-5.14416 -4.17016,-9.31432 -9.3143,-9.31432 z"
+ id="path2985"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sszczss" />
+ <path
+ sodipodi:nodetypes="sszczss"
+ inkscape:connector-curvature="0"
+ id="path3775"
+ d="m 375,434.00353 c -4.50028,0 -8.14847,3.69949 -8.14847,8.26307 0,1.56873 0.80432,3.6581
1.17861,4.28277 0.3743,0.62468 6.82071,15.22767 6.82071,15.22767 0,0 6.63148,-14.45182 7.03171,-15.09118
0.40022,-0.63936 1.26591,-2.79256 1.26591,-4.41926 0,-4.56358 -3.64819,-8.26307 -8.14847,-8.26307 z"
+
style="fill:none;stroke:#69a3f2;stroke-width:1.03512061;stroke-miterlimit:4;stroke-opacity:0.96862745;stroke-dasharray:none"
/>
+ <path
+ transform="matrix(0.23144871,0,0,0.23144871,286.76018,350.69905)"
+ d="m 400,396.11218 a 18.75,18.75 0 0 1 -18.75,18.75 18.75,18.75 0 0 1 -18.75,-18.75 18.75,18.75 0
0 1 18.75,-18.75 18.75,18.75 0 0 1 18.75,18.75 z"
+ sodipodi:ry="18.75"
+ sodipodi:rx="18.75"
+ sodipodi:cy="396.11218"
+ sodipodi:cx="381.25"
+ id="path3783"
+
style="fill:#ffffff;fill-opacity:1;stroke:#5e9cf1;stroke-width:4.32061148;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.96862745;stroke-dasharray:none;stroke-dashoffset:0.7"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#ffffff;fill-opacity:1;stroke:#0b832d;stroke-width:6.2157526;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.96862745;stroke-dasharray:none;stroke-dashoffset:0.7"
+ id="path3779"
+ sodipodi:cx="381.25"
+ sodipodi:cy="396.11218"
+ sodipodi:rx="18.75"
+ sodipodi:ry="18.75"
+ d="m 400,396.11218 a 18.75,18.75 0 0 1 -18.75,18.75 18.75,18.75 0 0 1 -18.75,-18.75 18.75,18.75 0
0 1 18.75,-18.75 18.75,18.75 0 0 1 18.75,18.75 z"
+ transform="matrix(0.17705667,0,0,0.17705667,307.49715,372.2444)" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/gps-markers-many-highlighted.svg
b/data/icons/hicolor/scalable/actions/gps-markers-many-highlighted.svg
new file mode 100644
index 00000000..99a0b32c
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/gps-markers-many-highlighted.svg
@@ -0,0 +1,510 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="28.74"
+ height="38.98"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="gps-markers-many-highlighted.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4829">
+ <stop
+ id="stop4831"
+ offset="0"
+ style="stop-color:#23ff38;stop-opacity:1" />
+ <stop
+ id="stop4833"
+ offset="1"
+ style="stop-color:#124cd1;stop-opacity:0.92490119;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4823">
+ <stop
+ id="stop4825"
+ offset="0"
+ style="stop-color:#23ff38;stop-opacity:1" />
+ <stop
+ id="stop4827"
+ offset="1"
+ style="stop-color:#124cd1;stop-opacity:0.92490119;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4817">
+ <stop
+ id="stop4819"
+ offset="0"
+ style="stop-color:#23ff38;stop-opacity:1" />
+ <stop
+ id="stop4821"
+ offset="1"
+ style="stop-color:#124cd1;stop-opacity:0.92490119;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3887">
+ <stop
+ id="stop3889"
+ offset="0"
+ style="stop-color:#ff573f;stop-opacity:1;" />
+ <stop
+ id="stop3891"
+ offset="1"
+ style="stop-color:#b71111;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3857">
+ <stop
+ style="stop-color:#87b5f5;stop-opacity:1;"
+ offset="0"
+ id="stop3859" />
+ <stop
+ style="stop-color:#87b5f5;stop-opacity:0;"
+ offset="1"
+ id="stop3861" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3849">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3851" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3853" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3827">
+ <stop
+ id="stop3829"
+ offset="0"
+ style="stop-color:#50a9ff;stop-opacity:1;" />
+ <stop
+ id="stop3831"
+ offset="1"
+ style="stop-color:#0034a9;stop-opacity:0.92490119;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3821">
+ <stop
+ id="stop3823"
+ offset="0"
+ style="stop-color:#60aaf1;stop-opacity:1;" />
+ <stop
+ id="stop3825"
+ offset="1"
+ style="stop-color:#124cd1;stop-opacity:0.92490119;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#535353;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ style="stop-color:#23b3ff;stop-opacity:1;"
+ offset="0"
+ id="stop3767" />
+ <stop
+ style="stop-color:#124cd1;stop-opacity:0.92490119;"
+ offset="1"
+ id="stop3769" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3771"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,324.43662,388.73998)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter3803"
+ x="-0.096096098"
+ width="1.1921922"
+ y="-0.2882883"
+ height="1.5765766"
+ color-interpolation-filters="sRGB">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.66066066"
+ id="feGaussianBlur3805" />
+ </filter>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3843"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3845"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,394.43662,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3849"
+ id="linearGradient3855"
+ x1="461.5"
+ y1="477.36218"
+ x2="462.5"
+ y2="434.36218"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3857"
+ id="linearGradient3863"
+ x1="444.95898"
+ y1="433.89029"
+ x2="444.95898"
+ y2="454.77341"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3849"
+ id="linearGradient3871"
+ x1="382.17749"
+ y1="377.47879"
+ x2="382.17749"
+ y2="414.47479"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3883"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3887"
+ id="linearGradient3885"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,270.34295,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3925"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3927"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,324.43662,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3941"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3943"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,324.43662,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3945"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4817"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,270.34295,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3506"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4829"
+ id="linearGradient3508"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,270.34295,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3522"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.33333333,0,309.40812)"
+ cx="374.25"
+ cy="464.11218"
+ fx="374.25"
+ fy="464.11218"
+ r="8.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4823"
+ id="linearGradient3524"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.13306152,0,0,0.13306152,270.34295,388.73998)"
+ x1="381.42856"
+ y1="335.09586"
+ x2="381.42856"
+ y2="567.15851" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.313708"
+ inkscape:cx="-17.408784"
+ inkscape:cy="24.266563"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:snap-global="false"
+ fit-margin-left="1"
+ units="px"
+ fit-margin-top="1"
+ fit-margin-right="1"
+ fit-margin-bottom="1"
+ inkscape:window-width="1440"
+ inkscape:window-height="836"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2987"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ originx="-306.53522px"
+ originy="-506.68905px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <cc:license
+ rdf:resource="" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-306.53522,-506.69183)">
+ <g
+ id="g3035"
+ transform="translate(0,75.224057)">
+ <ellipse
+ ry="2.75"
+ rx="8.25"
+ cy="464.11218"
+ cx="374.25"
+
style="opacity:0.58662612;fill:url(#radialGradient3945);fill-opacity:1;stroke:#none;filter:url(#filter3803)"
+ id="path3873"
+ transform="matrix(1.3594635,0,0,1,-187.87288,1)" />
+ <path
+
style="fill:url(#linearGradient3947);fill-opacity:1;stroke:#0b832d;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.96862745"
+ d="m 320.90633,432.9663 c -5.14414,0 -9.3143,4.17016 -9.3143,9.31432 0,1.76829 0.91939,4.12348
1.34724,4.82763 0.42786,0.70414 7.79657,17.16494 7.79657,17.16494 0,0 7.58026,-16.29039 8.03775,-17.01109
0.45749,-0.7207 1.44704,-3.14782 1.44704,-4.98148 0,-5.14416 -4.17016,-9.31432 -9.3143,-9.31432 z"
+ id="path3875"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sszczss" />
+ <path
+ sodipodi:nodetypes="sszczss"
+ inkscape:connector-curvature="0"
+ id="path3877"
+ d="m 320.90633,434.00353 c -4.50028,0 -8.14847,3.69949 -8.14847,8.26307 0,1.56873 0.80432,3.6581
1.17861,4.28277 0.3743,0.62468 6.82071,15.22767 6.82071,15.22767 0,0 6.63148,-14.45182 7.03171,-15.09118
0.40022,-0.63936 1.26591,-2.79256 1.26591,-4.41926 0,-4.56358 -3.64819,-8.26307 -8.14847,-8.26307 z"
+
style="fill:none;stroke:#5e9cf1;stroke-width:1.03512061;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <circle
+ r="18.75"
+ cy="396.11218"
+ cx="381.25"
+ transform="matrix(0.23144871,0,0,0.23144871,232.66651,350.69905)"
+ id="path3879"
+
style="fill:#ffffff;fill-opacity:1;stroke:#5e9cf1;stroke-width:4.32061148;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.69999999;stroke-opacity:1"
/>
+ <circle
+ r="18.75"
+ cy="396.11218"
+ cx="381.25"
+
style="fill:#ffffff;fill-opacity:1;stroke:#0b832d;stroke-width:6.2157526;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.69999999;stroke-opacity:0.96862745"
+ id="path3881"
+ transform="matrix(0.17705667,0,0,0.17705667,253.40348,372.2444)" />
+ </g>
+ <g
+ transform="matrix(0.62943981,0,0,0.62943981,124.11992,251.22885)"
+ id="g3494">
+ <ellipse
+ transform="matrix(1.3594635,0,0,1,-187.87288,1)"
+ id="ellipse3496"
+
style="opacity:0.58662612;fill:url(#radialGradient3506);fill-opacity:1;stroke:#none;filter:url(#filter3803)"
+ cx="374.25"
+ cy="464.11218"
+ rx="8.25"
+ ry="2.75" />
+ <path
+ sodipodi:nodetypes="sszczss"
+ inkscape:connector-curvature="0"
+ id="path3498"
+ d="m 320.90633,432.9663 c -5.14414,0 -9.3143,4.17016 -9.3143,9.31432 0,1.76829 0.91939,4.12348
1.34724,4.82763 0.42786,0.70414 7.79657,17.16494 7.79657,17.16494 0,0 7.58026,-16.29039 8.03775,-17.01109
0.45749,-0.7207 1.44704,-3.14782 1.44704,-4.98148 0,-5.14416 -4.17016,-9.31432 -9.3143,-9.31432 z"
+
style="fill:url(#linearGradient3508);fill-opacity:1;stroke:#0b832d;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.96862745"
/>
+ <path
+
style="fill:none;stroke:#5e9cf1;stroke-width:1.03512061;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 320.90633,434.00353 c -4.50028,0 -8.14847,3.69949 -8.14847,8.26307 0,1.56873 0.80432,3.6581
1.17861,4.28277 0.3743,0.62468 6.82071,15.22767 6.82071,15.22767 0,0 6.63148,-14.45182 7.03171,-15.09118
0.40022,-0.63936 1.26591,-2.79256 1.26591,-4.41926 0,-4.56358 -3.64819,-8.26307 -8.14847,-8.26307 z"
+ id="path3500"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sszczss" />
+ <circle
+
style="fill:#ffffff;fill-opacity:1;stroke:#5e9cf1;stroke-width:4.32061148;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.69999999;stroke-opacity:1"
+ id="circle3502"
+ transform="matrix(0.23144871,0,0,0.23144871,232.66651,350.69905)"
+ cx="381.25"
+ cy="396.11218"
+ r="18.75" />
+ <circle
+ transform="matrix(0.17705667,0,0,0.17705667,253.40348,372.2444)"
+ id="circle3504"
+
style="fill:#ffffff;fill-opacity:1;stroke:#0b832d;stroke-width:6.2157526;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.69999999;stroke-opacity:0.96862745"
+ cx="381.25"
+ cy="396.11218"
+ r="18.75" />
+ </g>
+ <g
+ id="g3510"
+ transform="matrix(0.62943981,0,0,0.62943981,113.99492,248.22885)">
+ <ellipse
+ ry="2.75"
+ rx="8.25"
+ cy="464.11218"
+ cx="374.25"
+
style="opacity:0.58662612;fill:url(#radialGradient3522);fill-opacity:1;stroke:#none;filter:url(#filter3803)"
+ id="ellipse3512"
+ transform="matrix(1.3594635,0,0,1,-187.87288,1)" />
+ <path
+
style="fill:url(#linearGradient3524);fill-opacity:1;stroke:#0b832d;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.96862745"
+ d="m 320.90633,432.9663 c -5.14414,0 -9.3143,4.17016 -9.3143,9.31432 0,1.76829 0.91939,4.12348
1.34724,4.82763 0.42786,0.70414 7.79657,17.16494 7.79657,17.16494 0,0 7.58026,-16.29039 8.03775,-17.01109
0.45749,-0.7207 1.44704,-3.14782 1.44704,-4.98148 0,-5.14416 -4.17016,-9.31432 -9.3143,-9.31432 z"
+ id="path3514"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sszczss" />
+ <path
+ sodipodi:nodetypes="sszczss"
+ inkscape:connector-curvature="0"
+ id="path3516"
+ d="m 320.90633,434.00353 c -4.50028,0 -8.14847,3.69949 -8.14847,8.26307 0,1.56873 0.80432,3.6581
1.17861,4.28277 0.3743,0.62468 6.82071,15.22767 6.82071,15.22767 0,0 6.63148,-14.45182 7.03171,-15.09118
0.40022,-0.63936 1.26591,-2.79256 1.26591,-4.41926 0,-4.56358 -3.64819,-8.26307 -8.14847,-8.26307 z"
+
style="fill:none;stroke:#5e9cf1;stroke-width:1.03512061;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <circle
+ r="18.75"
+ cy="396.11218"
+ cx="381.25"
+ transform="matrix(0.23144871,0,0,0.23144871,232.66651,350.69905)"
+ id="circle3518"
+
style="fill:#ffffff;fill-opacity:1;stroke:#5e9cf1;stroke-width:4.32061148;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.69999999;stroke-opacity:1"
/>
+ <circle
+ r="18.75"
+ cy="396.11218"
+ cx="381.25"
+
style="fill:#ffffff;fill-opacity:1;stroke:#0b832d;stroke-width:6.2157526;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.69999999;stroke-opacity:0.96862745"
+ id="circle3520"
+ transform="matrix(0.17705667,0,0,0.17705667,253.40348,372.2444)" />
+ </g>
+ </g>
+</svg>
diff --git a/src/MapWidget.vala b/src/MapWidget.vala
index 3c314eb0..2785ac43 100644
--- a/src/MapWidget.vala
+++ b/src/MapWidget.vala
@@ -4,16 +4,43 @@
* See the COPYING file in this distribution.
*/
+private class MarkerImageSet {
+ public float marker_image_width;
+ public float marker_image_height;
+ public Clutter.Image? marker_image;
+ public Clutter.Image? marker_selected_image;
+ public Clutter.Image? marker_highlighted_image;
+}
+
private abstract class PositionMarker : Object {
+ protected bool _highlighted = false;
protected bool _selected = false;
+ protected MarkerImageSet image_set;
+
+ protected PositionMarker(Champlain.Marker champlain_marker, MarkerImageSet image_set) {
+ this.champlain_marker = champlain_marker;
+ this.image_set = image_set;
+ champlain_marker.selectable = true;
+ champlain_marker.set_content(image_set.marker_image);
+ float w = image_set.marker_image_width;
+ float h = image_set.marker_image_height;
+ champlain_marker.set_size(w, h);
+ champlain_marker.set_translation(-w * MapWidget.MARKER_IMAGE_HORIZONTAL_PIN_RATIO,
+ -h * MapWidget.MARKER_IMAGE_VERTICAL_PIN_RATIO, 0);
+ }
public Champlain.Marker champlain_marker { get; protected set; }
public bool highlighted {
- get { return champlain_marker.get_selected(); }
+ get {
+ return _highlighted;
+ }
set {
- if (value || !_selected)
- champlain_marker.set_selected(value);
+ if (_highlighted == value)
+ return;
+ _highlighted = value;
+ var base_image = _selected ? image_set.marker_selected_image : image_set.marker_image;
+ champlain_marker.set_content(value ? image_set.marker_highlighted_image : base_image);
}
}
public bool selected {
@@ -21,44 +48,47 @@ private abstract class PositionMarker : Object {
return _selected;
}
set {
+ if (_selected == value)
+ return;
_selected = value;
+ if (!_highlighted) {
+ var base_image = value ? image_set.marker_selected_image : image_set.marker_image;
+ champlain_marker.set_content(base_image);
+ }
champlain_marker.set_selected(value);
}
}
}
private class DataViewPositionMarker : PositionMarker {
- private Gee.LinkedList<weak DataViewPositionMarker> _data_view_position_markers = new
Gee.LinkedList<weak DataViewPositionMarker>();
+ private Gee.LinkedList<weak DataViewPositionMarker> _data_view_position_markers =
+ new Gee.LinkedList<weak DataViewPositionMarker>();
- // Geo lookup
- // public string location_country { get; set; }
- // public string location_city { get; set; }
public weak DataView view { get; protected set; }
- public DataViewPositionMarker(DataView view, Champlain.Marker champlain_marker) {
+ public DataViewPositionMarker(DataView view, Champlain.Marker champlain_marker,
+ MarkerImageSet image_set) {
+ base(champlain_marker, image_set);
this.view = view;
- champlain_marker.selectable = true;
+
this._data_view_position_markers.add(this);
- this.champlain_marker = champlain_marker;
}
public void bind_mouse_events(MapWidget map_widget) {
champlain_marker.button_release_event.connect ((event) => {
- if (event.button > 1 || _selected)
+ if (event.button > 1)
return true;
- champlain_marker.selected = true;
+ selected = true;
map_widget.select_data_views(_data_view_position_markers);
return true;
});
champlain_marker.enter_event.connect ((event) => {
- if (!_selected)
- champlain_marker.selected = true;
+ highlighted = true;
map_widget.highlight_data_views(_data_view_position_markers);
return true;
});
champlain_marker.leave_event.connect ((event) => {
- if (!_selected)
- champlain_marker.selected = false;
+ highlighted = false;
map_widget.unhighlight_data_views(_data_view_position_markers);
return true;
});
@@ -73,21 +103,22 @@ private class MarkerGroup : PositionMarker {
public void bind_mouse_events(MapWidget map_widget) {
champlain_marker.button_release_event.connect ((event) => {
- if (event.button > 1 || _selected)
+ if (event.button > 1)
return true;
- champlain_marker.selected = true;
+ selected = true;
+ foreach (var m in _data_view_position_markers) {
+ m.selected = true;
+ }
map_widget.select_data_views(_data_view_position_markers.read_only_view);
return true;
});
champlain_marker.enter_event.connect ((event) => {
- if (!_selected)
- champlain_marker.selected = true;
+ highlighted = true;
map_widget.highlight_data_views(_data_view_position_markers.read_only_view);
return true;
});
champlain_marker.leave_event.connect ((event) => {
- if (!_selected)
- champlain_marker.selected = false;
+ highlighted = false;
map_widget.unhighlight_data_views(_data_view_position_markers.read_only_view);
return true;
});
@@ -97,9 +128,8 @@ private class MarkerGroup : PositionMarker {
owned get { return _position_markers.read_only_view; }
}
- public MarkerGroup(Champlain.Marker champlain_marker) {
- champlain_marker.selectable = true;
- this.champlain_marker = champlain_marker;
+ public MarkerGroup(Champlain.Marker champlain_marker, MarkerImageSet image_set) {
+ base(champlain_marker, image_set);
}
public void add_position_marker(PositionMarker marker) {
@@ -160,6 +190,14 @@ private class MarkerGroupRaster : Object {
}
}
+ public void clear_selection() {
+ lock (position_markers) {
+ foreach (PositionMarker m in position_markers) {
+ m.selected = false;
+ }
+ }
+ }
+
public unowned PositionMarker? find_position_marker(DataView data_view) {
if (!data_view_map.has_key(data_view))
return null;
@@ -203,6 +241,8 @@ private class MarkerGroupRaster : Object {
};
marker_group = map_widget.create_marker_group(rasterized_gps_coords);
marker_group.add_position_marker(cell);
+ if (cell.selected) // group becomes selected if any contained marker is
+ marker_group.selected = true;
if (cell is DataViewPositionMarker)
data_view_map.set(((DataViewPositionMarker) cell).view, marker_group);
yg.set(y, marker_group);
@@ -271,16 +311,10 @@ private class MapWidget : Gtk.Bin {
public const float MARKER_IMAGE_HORIZONTAL_PIN_RATIO = 0.5f;
public const float MARKER_IMAGE_VERTICAL_PIN_RATIO = 0.825f;
- public float marker_image_width { get; private set; }
- public float marker_image_height { get; private set; }
- public float marker_group_image_width { get; private set; }
- public float marker_group_image_height { get; private set; }
public float map_edit_lock_image_width { get; private set; }
public float map_edit_lock_image_height { get; private set; }
- public Clutter.Image? marker_image { get; private set; }
- public Clutter.Image? marker_selected_image { get; private set; }
- public Clutter.Image? marker_group_image { get; private set; }
- public Clutter.Image? marker_group_selected_image { get; private set; }
+ public MarkerImageSet marker_image_set { get; private set; }
+ public MarkerImageSet marker_group_image_set { get; private set; }
public const Clutter.Color marker_point_color = { 10, 10, 255, 192 };
public signal void zoom_changed();
@@ -319,9 +353,39 @@ private class MapWidget : Gtk.Bin {
}
public void set_page(Page page) {
+ bool page_changed = false;
if (this.page != page) {
this.page = page;
+ page_changed = true;
+ clear();
+ }
+ ViewCollection view_collection = page.get_view();
+ if (view_collection == null)
+ return;
+
+ if (page_changed) {
data_view_marker_cache.clear();
+ foreach (DataObject view in view_collection.get_all()) {
+ if (view is DataView)
+ add_data_view((DataView) view);
+ }
+ show_position_markers();
+ }
+ // In any case, the selection did change..
+ var selected = view_collection.get_selected();
+ if (selected != null) {
+ marker_group_raster.clear_selection();
+ foreach (DataView v in view_collection.get_selected()) {
+
+ var position_marker = marker_group_raster.find_position_marker(v);
+ if (position_marker != null)
+ position_marker.selected = true;
+ if (position_marker is MarkerGroup) {
+ DataViewPositionMarker? m = data_view_marker_cache.get(v);
+ if (m != null)
+ m.selected = true;
+ }
+ }
}
}
@@ -538,18 +602,26 @@ private class MapWidget : Gtk.Bin {
// Load icons
float w, h;
- marker_image = Resources.get_icon_as_clutter_image(
+ marker_image_set = new MarkerImageSet();
+ marker_group_image_set = new MarkerImageSet();
+ marker_image_set.marker_image = Resources.get_icon_as_clutter_image(
Resources.ICON_GPS_MARKER, out w, out h);
- marker_image_width = w;
- marker_image_height = h;
- marker_selected_image = Resources.get_icon_as_clutter_image(
+ marker_image_set.marker_image_width = w;
+ marker_image_set.marker_image_height = h;
+ marker_image_set.marker_selected_image = Resources.get_icon_as_clutter_image(
Resources.ICON_GPS_MARKER_SELECTED, out w, out h);
- marker_group_image = Resources.get_icon_as_clutter_image(
+ marker_image_set.marker_highlighted_image = Resources.get_icon_as_clutter_image(
+ Resources.ICON_GPS_MARKER_HIGHLIGHTED, out w, out h);
+
+ marker_group_image_set.marker_image = Resources.get_icon_as_clutter_image(
Resources.ICON_GPS_GROUP_MARKER, out w, out h);
- marker_group_image_width = w;
- marker_group_image_height = h;
- marker_group_selected_image = Resources.get_icon_as_clutter_image(
+ marker_group_image_set.marker_image_width = w;
+ marker_group_image_set.marker_image_height = h;
+ marker_group_image_set.marker_selected_image = Resources.get_icon_as_clutter_image(
Resources.ICON_GPS_GROUP_MARKER_SELECTED, out w, out h);
+ marker_group_image_set.marker_highlighted_image = Resources.get_icon_as_clutter_image(
+ Resources.ICON_GPS_GROUP_MARKER_HIGHLIGHTED, out w, out h);
+
map_edit_locked_image = Resources.get_icon_as_clutter_image(
Resources.ICON_MAP_EDIT_LOCKED, out w, out h);
map_edit_unlocked_image = Resources.get_icon_as_clutter_image(
@@ -565,26 +637,11 @@ private class MapWidget : Gtk.Bin {
}
}
- private Champlain.Marker create_champlain_marker(GpsCoords gps_coords, Clutter.Image? marker_image,
- Clutter.Image? marker_selected_image,
- float marker_image_width, float marker_image_height) {
+ private Champlain.Marker create_champlain_marker(GpsCoords gps_coords) {
assert(gps_coords.has_gps > 0);
+
Champlain.Marker champlain_marker;
- if (marker_image == null) {
- // Fall back to the generic champlain marker
- champlain_marker = new Champlain.Point.full(12, marker_point_color);
- } else {
- champlain_marker = new Champlain.Marker();
- champlain_marker.set_content(marker_image);
- champlain_marker.set_size(marker_image_width, marker_image_height);
- champlain_marker.set_translation(-marker_image_width * MARKER_IMAGE_HORIZONTAL_PIN_RATIO,
- -marker_image_height * MARKER_IMAGE_VERTICAL_PIN_RATIO, 0);
- champlain_marker.notify.connect((o, p) => {
- Champlain.Marker? m = o as Champlain.Marker;
- if (p.name == "selected")
- m.set_content(m.selected ? marker_selected_image : marker_image);
- });
- }
+ champlain_marker = new Champlain.Marker();
champlain_marker.set_pivot_point(0.5f, 0.5f); // set center of marker
champlain_marker.set_location(gps_coords.latitude, gps_coords.longitude);
return champlain_marker;
@@ -597,18 +654,16 @@ private class MapWidget : Gtk.Bin {
DataSource data_source = view.get_source();
Positionable p = (Positionable) data_source;
GpsCoords gps_coords = p.get_gps_coords();
- Champlain.Marker champlain_marker = create_champlain_marker(gps_coords, marker_image,
- marker_selected_image, marker_image_width, marker_image_height);
- position_marker = new DataViewPositionMarker(view, champlain_marker);
+ Champlain.Marker champlain_marker = create_champlain_marker(gps_coords);
+ position_marker = new DataViewPositionMarker(view, champlain_marker, marker_image_set);
position_marker.bind_mouse_events(this);
data_view_marker_cache.set(view, position_marker);
return (owned) position_marker;
}
internal MarkerGroup create_marker_group(GpsCoords gps_coords) {
- Champlain.Marker champlain_marker = create_champlain_marker(gps_coords, marker_group_image,
- marker_group_selected_image, marker_group_image_width, marker_group_image_height);
- var g = new MarkerGroup(champlain_marker);
+ Champlain.Marker champlain_marker = create_champlain_marker(gps_coords);
+ var g = new MarkerGroup(champlain_marker, marker_group_image_set);
g.bind_mouse_events(this);
return (owned) g;
}
diff --git a/src/Properties.vala b/src/Properties.vala
index 09ccd46c..7c2083d9 100644
--- a/src/Properties.vala
+++ b/src/Properties.vala
@@ -197,7 +197,6 @@ private class BasicProperties : Properties {
clip_duration = 0.0;
raw_developer = "";
raw_assoc = "";
- map_widget.clear();
}
protected override void get_single_properties(DataView view) {
@@ -268,8 +267,6 @@ private class BasicProperties : Properties {
}
end_time = start_time;
}
- map_widget.add_data_view(view);
-
}
protected override void get_multiple_properties(Gee.Iterable<DataView>? iter) {
@@ -334,14 +331,12 @@ private class BasicProperties : Properties {
video_count++;
}
- map_widget.add_data_view(view);
}
}
protected override void get_properties(Page current_page) {
base.get_properties(current_page);
- map_widget.set_page(current_page);
if (end_time == 0)
end_time = start_time;
if (start_time == 0)
@@ -468,7 +463,7 @@ private class BasicProperties : Properties {
}
}
- map_widget.show_position_markers();
+ map_widget.set_page(page);
}
}
diff --git a/src/Resources.vala b/src/Resources.vala
index 5f324b2a..0bc5bd8b 100644
--- a/src/Resources.vala
+++ b/src/Resources.vala
@@ -83,8 +83,10 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
public const int ICON_FILTER_UNRATED_OR_BETTER_FIXED_SIZE = 16;
public const int ICON_ZOOM_SCALE = 16;
public const string ICON_GPS_MARKER = "gps-marker.svg";
+ public const string ICON_GPS_MARKER_HIGHLIGHTED = "gps-marker-highlighted.svg";
public const string ICON_GPS_MARKER_SELECTED = "gps-marker-selected.svg";
public const string ICON_GPS_GROUP_MARKER = "gps-markers-many.svg";
+ public const string ICON_GPS_GROUP_MARKER_HIGHLIGHTED = "gps-markers-many-highlighted.svg";
public const string ICON_GPS_GROUP_MARKER_SELECTED = "gps-markers-many-selected.svg";
public const string ICON_MAP_EDIT_LOCKED = "map-edit-locked.svg";
public const string ICON_MAP_EDIT_UNLOCKED = "map-edit-unlocked.svg";
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]