Merge lp:~parnold-x/switchboard-plug-pantheon-shell/hotcorner-widget into lp:~elementary-apps/switchboard-plug-pantheon-shell/trunk

Proposed by Djax
Status: Rejected
Rejected by: Danielle Foré
Proposed branch: lp:~parnold-x/switchboard-plug-pantheon-shell/hotcorner-widget
Merge into: lp:~elementary-apps/switchboard-plug-pantheon-shell/trunk
Diff against target: 2461 lines (+2293/-71)
14 files modified
CMakeLists.txt (+1/-1)
data/0.svg (+69/-0)
data/1.svg (+133/-0)
data/2.svg (+250/-0)
data/3.svg (+309/-0)
data/4.svg (+152/-0)
data/5.svg (+117/-0)
data/6.svg (+131/-0)
data/7.svg (+131/-0)
data/button.svg (+250/-0)
data/display.svg (+220/-0)
src/CMakeLists.txt (+1/-0)
src/Hotcorners.vala (+526/-0)
src/desktop-plug.vala (+3/-70)
To merge this branch: bzr merge lp:~parnold-x/switchboard-plug-pantheon-shell/hotcorner-widget
Reviewer Review Type Date Requested Status
Fabio Zaramella (community) Needs Information
elementary UX Pending
elementary Apps team Pending
Review via email: mp+234567@code.launchpad.net

Description of the change

Add Integrated hotcorner widget.
Mockup by Reda Lazri

See https://dl.dropboxusercontent.com/u/28321853/screencast1410381832.webm

To post a comment you must log in.
252. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

253. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

254. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

255. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

256. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

257. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

258. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

Revision history for this message
Fabio Zaramella (fabiozaramella) wrote :

To me it doesn't look immediate for the user, also those big green buttons and the whole screen image looks blurry.

review: Needs Information
Revision history for this message
Djax (parnold-x) wrote :

No blurr here but I can upload higher resolutions for the images in the next days...
A argument for your first point would be good.
I thought it is obv. for everybody what to do. In the category "hot corners" with drawn hot corners to hover over the hot corner but maybe I am assuming too much.
Np to add a label or something with instructions though.

259. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

260. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

261. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

262. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

263. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

264. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

265. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

266. By ffabio-96-x

Remove Small and Extra Large dock icon size options

267. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

268. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

269. By Djax

Use radio buttons for hide modes and better describe them (lp:1290340)

270. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

271. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

272. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

273. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

274. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

275. By Viko Adi Rahmawan

org.gnome.desktop.background picture-uri only support uri, so we give them uri

276. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

277. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

278. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

279. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

280. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

281. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

282. By artem-anufrij

Correct the index of hide_mode_ids which caused the dock settings to be jumbled (lp:1393303)

283. By Artem Anufrij

Equal hide_mode_ids value instead index

284. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

285. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

286. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

287. By Corentin Noël

Preparing for Switchboard search feature.

288. By Corentin Noël

Search the right query.

289. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

290. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

291. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

292. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

293. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

294. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

295. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

296. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

297. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

298. By Corentin Noël

Use libplank for controlling dock, gain support for new Gtk+ theme.

299. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

300. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

301. By Akshay Shekher

removed theme selection combo box (lp:1404611)

302. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

303. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

304. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

305. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

306. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

307. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

308. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

309. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

310. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

311. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

312. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

313. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

314. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

315. By Marvin Beckers

set wallpaper now via accountsservice to make it available for pantheon-greeter

316. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

317. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

318. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

319. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

320. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

321. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

322. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

323. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

324. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

325. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

326. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

327. By Erasmo Marín

Cache wallpapers for faster plug load time

Add a new wallpaper widget with selection improvements

328. By Cody Garver

Bump valac dependency to 0.26

329. By Rico Tzschichholz

debian: Do not hard-depend on a specific valac series

330. By Rico Tzschichholz

Bump gtk+ requirement to >= 3.14

331. By Cody Garver

Release 0.2.0

332. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

333. By Rico Tzschichholz

Adapt to plank's "Monitor" settings change.

334. By Cody Garver

Release 0.2.0.1

335. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

336. By Launchpad Translations on behalf of elementary-apps

Launchpad automatic translations update.

337. By Cody Garver

Initial support for new Plank window-dodge Hide Mode

338. By Cody Garver

Updated translation template

339. By Djax

add integrated hotcorner widget

Unmerged revisions

339. By Djax

add integrated hotcorner widget

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2015-04-07 01:24:23 +0000
+++ CMakeLists.txt 2015-04-17 22:11:56 +0000
@@ -49,7 +49,7 @@
49add_custom_target (dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)49add_custom_target (dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
5050
51# Files51# Files
52file (GLOB resources "${CMAKE_CURRENT_SOURCE_DIR}/data/*.png")52file (GLOB resources "${CMAKE_CURRENT_SOURCE_DIR}/data/*.svg")
5353
54install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/data/pantheon-plug-shell.desktop" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications")54install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/data/pantheon-plug-shell.desktop" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications")
5555
5656
=== added file 'data/0.svg'
--- data/0.svg 1970-01-01 00:00:00 +0000
+++ data/0.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,69 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="16"
14 height="16"
15 id="svg3010"
16 version="1.1"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="New document 1">
19 <defs
20 id="defs3012" />
21 <sodipodi:namedview
22 id="base"
23 pagecolor="#ffffff"
24 bordercolor="#666666"
25 borderopacity="1.0"
26 inkscape:pageopacity="0.0"
27 inkscape:pageshadow="2"
28 inkscape:zoom="31.678384"
29 inkscape:cx="6.5116781"
30 inkscape:cy="9.2795011"
31 inkscape:document-units="px"
32 inkscape:current-layer="layer1"
33 showgrid="false"
34 inkscape:window-width="1600"
35 inkscape:window-height="845"
36 inkscape:window-x="0"
37 inkscape:window-y="30"
38 inkscape:window-maximized="1" />
39 <metadata
40 id="metadata3015">
41 <rdf:RDF>
42 <cc:Work
43 rdf:about="">
44 <dc:format>image/svg+xml</dc:format>
45 <dc:type
46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
47 <dc:title></dc:title>
48 </cc:Work>
49 </rdf:RDF>
50 </metadata>
51 <g
52 inkscape:label="Layer 1"
53 inkscape:groupmode="layer"
54 id="layer1"
55 transform="translate(0,-1036.3622)">
56 <image
57 y="1036.3442"
58 x="-0.013481841"
59 id="image3080"
60 xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAHVJREFU
61OI3Fk9EJwCAMBc/iNI7jSu4TnMZx0n61pZKgpULvS0h4mIuGUgpfiF4h53ydVZVa67sAgJTSDtBa
62C17PNrriiP8DIjyFeVg9InJLPIVZWLVT7JoRVNVc1cwaI2A+kn5mETED/l/jGokWntjpAO/39Rw3
63rytGcIv6FAAAAABJRU5ErkJggg==
64"
65 height="16"
66 width="16"
67 style="fill:#000000" />
68 </g>
69</svg>
070
=== added file 'data/1.svg'
--- data/1.svg 1970-01-01 00:00:00 +0000
+++ data/1.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,133 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="16"
14 height="16"
15 id="svg6179"
16 version="1.1"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="1.svg">
19 <defs
20 id="defs6181">
21 <linearGradient
22 inkscape:collect="always"
23 xlink:href="#linearGradient5803-6-2"
24 id="linearGradient3324"
25 gradientUnits="userSpaceOnUse"
26 gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
27 x1="167.98311"
28 y1="13.398731"
29 x2="167.98311"
30 y2="54.780239" />
31 <linearGradient
32 id="linearGradient5803-6-2">
33 <stop
34 id="stop5805-7-1"
35 style="stop-color:#ffffff;stop-opacity:1;"
36 offset="0" />
37 <stop
38 id="stop5807-8-5"
39 style="stop-color:#e6f4f8;stop-opacity:1;"
40 offset="1" />
41 </linearGradient>
42 </defs>
43 <sodipodi:namedview
44 id="base"
45 pagecolor="#ffffff"
46 bordercolor="#666666"
47 borderopacity="1.0"
48 inkscape:pageopacity="0.0"
49 inkscape:pageshadow="2"
50 inkscape:zoom="11.313708"
51 inkscape:cx="-11.336265"
52 inkscape:cy="5.0980221"
53 inkscape:document-units="px"
54 inkscape:current-layer="layer1"
55 showgrid="true"
56 inkscape:showpageshadow="false"
57 inkscape:snap-page="true"
58 inkscape:window-width="1600"
59 inkscape:window-height="845"
60 inkscape:window-x="0"
61 inkscape:window-y="30"
62 inkscape:window-maximized="1"
63 inkscape:snap-bbox="true"
64 inkscape:bbox-nodes="true">
65 <inkscape:grid
66 type="xygrid"
67 id="grid6187"
68 empspacing="5"
69 visible="true"
70 enabled="true"
71 snapvisiblegridlinesonly="true" />
72 </sodipodi:namedview>
73 <metadata
74 id="metadata6184">
75 <rdf:RDF>
76 <cc:Work
77 rdf:about="">
78 <dc:format>image/svg+xml</dc:format>
79 <dc:type
80 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
81 <dc:title />
82 </cc:Work>
83 </rdf:RDF>
84 </metadata>
85 <g
86 inkscape:label="Layer 1"
87 inkscape:groupmode="layer"
88 id="layer1"
89 transform="translate(0,-1036.3622)">
90 <g
91 id="g2998">
92 <rect
93 y="1036.3622"
94 x="0"
95 height="16"
96 width="16"
97 id="rect7100"
98 style="opacity:0;color:#000000;fill:#313e37;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
99 <rect
100 ry="1"
101 rx="1"
102 y="1036.3622"
103 x="0"
104 height="11"
105 width="16"
106 id="rect7087"
107 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
108 <rect
109 ry="1"
110 rx="1"
111 y="1048.3622"
112 x="0"
113 height="3"
114 width="5"
115 id="rect7089"
116 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
117 <rect
118 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
119 id="rect7091"
120 width="5"
121 height="3"
122 x="6"
123 y="1048.3622"
124 rx="1"
125 ry="1" />
126 <path
127 inkscape:connector-curvature="0"
128 id="rect7095"
129 d="m 13,1048.3622 0,1 -1,0 0,1 1,0 0,1 1,0 0,-1 1,0 0,-1 -1,0 0,-1 -1,0 z"
130 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
131 </g>
132 </g>
133</svg>
0134
=== added file 'data/2.svg'
--- data/2.svg 1970-01-01 00:00:00 +0000
+++ data/2.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,250 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12 version="1.0"
13 width="16"
14 height="16"
15 id="svg2747"
16 sodipodi:version="0.32"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="2.svg"
19 inkscape:output_extension="org.inkscape.output.svg.inkscape">
20 <metadata
21 id="metadata9">
22 <rdf:RDF>
23 <cc:Work
24 rdf:about="">
25 <dc:format>image/svg+xml</dc:format>
26 <dc:type
27 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
28 <dc:title />
29 </cc:Work>
30 </rdf:RDF>
31 </metadata>
32 <sodipodi:namedview
33 inkscape:window-height="845"
34 inkscape:window-width="1600"
35 inkscape:pageshadow="2"
36 inkscape:pageopacity="0"
37 guidetolerance="10.0"
38 gridtolerance="10.0"
39 objecttolerance="10.0"
40 borderopacity="1.0"
41 bordercolor="#666666"
42 pagecolor="#dedede"
43 id="base"
44 showgrid="false"
45 showguides="false"
46 inkscape:guide-bbox="true"
47 showborder="true"
48 inkscape:zoom="10.822662"
49 inkscape:cx="18.390206"
50 inkscape:cy="20.04631"
51 inkscape:window-x="0"
52 inkscape:window-y="30"
53 inkscape:current-layer="svg2747"
54 fit-margin-top="0"
55 fit-margin-left="0"
56 fit-margin-right="0"
57 fit-margin-bottom="0"
58 inkscape:window-maximized="1">
59 <sodipodi:guide
60 orientation="1,0"
61 position="286.91968,115.79117"
62 id="guide2386" />
63 <sodipodi:guide
64 orientation="0,1"
65 position="299.19277,123.05221"
66 id="guide2388" />
67 <inkscape:grid
68 type="xygrid"
69 id="grid2387"
70 visible="true"
71 enabled="true"
72 empspacing="5"
73 snapvisiblegridlinesonly="true" />
74 </sodipodi:namedview>
75 <defs
76 id="defs2749">
77 <linearGradient
78 id="linearGradient3587-6-5-1-5">
79 <stop
80 offset="0"
81 style="stop-color:#000000;stop-opacity:1"
82 id="stop3589-9-2-8-5" />
83 <stop
84 offset="1"
85 style="stop-color:#646464;stop-opacity:1"
86 id="stop3591-7-4-3-0" />
87 </linearGradient>
88 </defs>
89 <text
90 id="text4087-2-6-5"
91 y="238.8988"
92 x="337.90759"
93 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
94 xml:space="preserve"><tspan
95 y="238.8988"
96 x="337.90759"
97 id="tspan4089-7-2-9"
98 sodipodi:role="line" /></text>
99 <text
100 xml:space="preserve"
101 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
102 x="-1677.7749"
103 y="1062.9437"
104 id="text4087-2-6-5-59"><tspan
105 sodipodi:role="line"
106 id="tspan4089-7-2-9-4"
107 x="-1677.7749"
108 y="1062.9437" /></text>
109 <flowRoot
110 xml:space="preserve"
111 id="flowRoot38698"
112 style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
113 transform="translate(-81.87659,-690.30726)"><flowRegion
114 id="flowRegion38700"><rect
115 id="rect38702"
116 width="40"
117 height="23"
118 x="531"
119 y="299" /></flowRegion><flowPara
120 id="flowPara38704" /></flowRoot> <path
121 style="color:#bebebe;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
122 d="M 7.9999999,0 10.849999,2.8500001 8.45,5.2500002 7.9999999,5.7000003 10.3,8.0000003 10.749999,7.5500004 13.15,5.1500002 16,8.0000003 16,0 8,0 z M 0,8.0000003 0,16 l 8,0 -2.8999999,-2.899999 1.95,-1.9 L 7.9999999,10.3 5.7499999,8.0000003 4.8,8.9500004 2.9,10.9 0,8.0000003 z"
123 id="path6691"
124 inkscape:connector-curvature="0" />
125 <text
126 id="text4087-2-6-5-1"
127 y="7.7151051"
128 x="-750.84784"
129 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
130 xml:space="preserve"><tspan
131 y="7.7151051"
132 x="-750.84784"
133 id="tspan4089-7-2-9-7"
134 sodipodi:role="line" /></text>
135 <text
136 id="text4087-2-6-5-7"
137 y="-449.28488"
138 x="141.77814"
139 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
140 xml:space="preserve"><tspan
141 y="-449.28488"
142 x="141.77814"
143 id="tspan4089-7-2-9-1"
144 sodipodi:role="line" /></text>
145 <text
146 id="text4087-2-6-5-5"
147 y="-494.31586"
148 x="168.26166"
149 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
150 xml:space="preserve"><tspan
151 y="-494.31586"
152 x="168.26166"
153 id="tspan4089-7-2-9-6"
154 sodipodi:role="line" /></text>
155 <text
156 id="text4087-2-6-5-3"
157 y="-502.28488"
158 x="-1480.2218"
159 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
160 xml:space="preserve"><tspan
161 y="-502.28488"
162 x="-1480.2218"
163 id="tspan4089-7-2-9-18"
164 sodipodi:role="line" /></text>
165 <text
166 id="text4087-2-6-5-4"
167 y="-804.28491"
168 x="134.086"
169 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
170 xml:space="preserve"><tspan
171 y="-804.28491"
172 x="134.086"
173 id="tspan4089-7-2-9-9"
174 sodipodi:role="line" /></text>
175 <text
176 id="text4087-2-6-5-7-1"
177 y="-111.61586"
178 x="1776.6676"
179 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
180 xml:space="preserve"><tspan
181 y="-111.61586"
182 x="1776.6676"
183 id="tspan4089-7-2-9-1-8"
184 sodipodi:role="line" /></text>
185 <text
186 id="text4087-2-6-5-5-5"
187 y="-156.64684"
188 x="1803.151"
189 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
190 xml:space="preserve"><tspan
191 y="-156.64684"
192 x="1803.151"
193 id="tspan4089-7-2-9-6-9"
194 sodipodi:role="line" /></text>
195 <text
196 id="text4087-2-6-5-75"
197 y="-164.61586"
198 x="154.66754"
199 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
200 xml:space="preserve"><tspan
201 y="-164.61586"
202 x="154.66754"
203 id="tspan4089-7-2-9-3"
204 sodipodi:role="line" /></text>
205 <text
206 id="text4087-2-6-5-4-8"
207 y="-466.61584"
208 x="1768.9755"
209 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
210 xml:space="preserve"><tspan
211 y="-466.61584"
212 x="1768.9755"
213 id="tspan4089-7-2-9-9-8"
214 sodipodi:role="line" /></text>
215 <text
216 id="text4087-2-6-5-45"
217 y="-217.77017"
218 x="-881.88147"
219 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
220 xml:space="preserve"><tspan
221 y="-217.77017"
222 x="-881.88147"
223 id="tspan4089-7-2-9-75"
224 sodipodi:role="line" /></text>
225 <text
226 xml:space="preserve"
227 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
228 x="-2897.564"
229 y="606.27478"
230 id="text4087-2-6-5-59-0"><tspan
231 sodipodi:role="line"
232 id="tspan4089-7-2-9-4-4"
233 x="-2897.564"
234 y="606.27478" /></text>
235 <g
236 transform="translate(-338.00604,-450.49095)"
237 inkscape:label="Layer#2"
238 id="layer4">
239 <text
240 xml:space="preserve"
241 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
242 x="-664.2738"
243 y="1159.4154"
244 id="text4087-2-6-5-0"><tspan
245 sodipodi:role="line"
246 id="tspan4089-7-2-9-13"
247 x="-664.2738"
248 y="1159.4154" /></text>
249 </g>
250</svg>
0251
=== added file 'data/3.svg'
--- data/3.svg 1970-01-01 00:00:00 +0000
+++ data/3.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,309 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 version="1.2"
14 width="16"
15 height="16"
16 id="svg2747"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="3.svg">
19 <sodipodi:namedview
20 pagecolor="#ffffff"
21 bordercolor="#666666"
22 borderopacity="1"
23 objecttolerance="10"
24 gridtolerance="10"
25 guidetolerance="10"
26 inkscape:pageopacity="0"
27 inkscape:pageshadow="2"
28 inkscape:window-width="1600"
29 inkscape:window-height="845"
30 id="namedview62"
31 showgrid="false"
32 inkscape:zoom="14.75"
33 inkscape:cx="2.6271183"
34 inkscape:cy="5.2881356"
35 inkscape:window-x="0"
36 inkscape:window-y="30"
37 inkscape:window-maximized="1"
38 inkscape:current-layer="svg2747" />
39 <metadata
40 id="metadata9">
41 <rdf:RDF>
42 <cc:Work
43 rdf:about="">
44 <dc:format>image/svg+xml</dc:format>
45 <dc:type
46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
47 <dc:title />
48 </cc:Work>
49 </rdf:RDF>
50 </metadata>
51 <defs
52 id="defs2749">
53 <linearGradient
54 id="linearGradient3788">
55 <stop
56 id="stop3790"
57 style="stop-color:#ffffff;stop-opacity:1"
58 offset="0" />
59 <stop
60 id="stop3792"
61 style="stop-color:#ffffff;stop-opacity:0"
62 offset="1" />
63 </linearGradient>
64 <linearGradient
65 id="linearGradient3587-6-5-1-5">
66 <stop
67 id="stop3589-9-2-8-5"
68 style="stop-color:#000000;stop-opacity:1"
69 offset="0" />
70 <stop
71 id="stop3591-7-4-3-0"
72 style="stop-color:#646464;stop-opacity:1"
73 offset="1" />
74 </linearGradient>
75 <linearGradient
76 x1="19.490692"
77 y1="-4.321744"
78 x2="22.886868"
79 y2="-0.92556846"
80 id="linearGradient6693"
81 xlink:href="#linearGradient3587-6-5-1-5"
82 gradientUnits="userSpaceOnUse"
83 gradientTransform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,8.878258,-7.4350298)" />
84 <linearGradient
85 x1="22.863201"
86 y1="-0.94923496"
87 x2="26.23391"
88 y2="2.4214737"
89 id="linearGradient6695"
90 xlink:href="#linearGradient3587-6-5-1-5"
91 gradientUnits="userSpaceOnUse"
92 gradientTransform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,8.878258,-7.4350298)" />
93 <linearGradient
94 x1="8.1313992"
95 y1="19.049677"
96 x2="8.1313992"
97 y2="15.935893"
98 id="linearGradient3794"
99 xlink:href="#linearGradient3788"
100 gradientUnits="userSpaceOnUse"
101 gradientTransform="matrix(1.1333334,0,0,0.99999997,-0.06666673,-2.9999999)" />
102 <linearGradient
103 id="linearGradient3732-77">
104 <stop
105 id="stop3734-3"
106 style="stop-color:#000000;stop-opacity:1"
107 offset="0" />
108 <stop
109 id="stop3736-71"
110 style="stop-color:#000000;stop-opacity:0"
111 offset="1" />
112 </linearGradient>
113 <linearGradient
114 x1="8.1313992"
115 y1="19.049677"
116 x2="8.1313992"
117 y2="15.935893"
118 id="linearGradient5038"
119 xlink:href="#linearGradient3732-77"
120 gradientUnits="userSpaceOnUse"
121 gradientTransform="matrix(0.8666667,0,0,0.73333335,2.0666666,-16.066667)" />
122 <linearGradient
123 x1="25.570522"
124 y1="3.289499"
125 x2="22.077217"
126 y2="-0.20380709"
127 id="linearGradient6695-0"
128 xlink:href="#linearGradient3587-6-5-1-5-5"
129 gradientUnits="userSpaceOnUse"
130 gradientTransform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,22.87868,28.43503)" />
131 <linearGradient
132 id="linearGradient3587-6-5-1-5-5">
133 <stop
134 id="stop3589-9-2-8-5-6"
135 style="stop-color:#000000;stop-opacity:1"
136 offset="0" />
137 <stop
138 id="stop3591-7-4-3-0-7"
139 style="stop-color:#646464;stop-opacity:1"
140 offset="1" />
141 </linearGradient>
142 <linearGradient
143 x1="25.91716"
144 y1="-4.1850104"
145 x2="22.35718"
146 y2="-7.7449903"
147 id="linearGradient6693-5"
148 xlink:href="#linearGradient3587-6-5-1-5-5"
149 gradientUnits="userSpaceOnUse"
150 gradientTransform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,32.87868,18.43503)" />
151 <linearGradient
152 id="linearGradient3254">
153 <stop
154 id="stop3256"
155 style="stop-color:#000000;stop-opacity:1"
156 offset="0" />
157 <stop
158 id="stop3258"
159 style="stop-color:#646464;stop-opacity:1"
160 offset="1" />
161 </linearGradient>
162 </defs>
163 <text
164 x="337.90759"
165 y="238.8988"
166 id="text4087-2-6-5"
167 xml:space="preserve"
168 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
169 x="337.90759"
170 y="238.8988"
171 id="tspan4089-7-2-9" /></text>
172 <text
173 x="-1677.7749"
174 y="1062.9437"
175 id="text4087-2-6-5-59"
176 xml:space="preserve"
177 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
178 x="-1677.7749"
179 y="1062.9437"
180 id="tspan4089-7-2-9-4" /></text>
181 <flowRoot
182 transform="translate(-81.87659,-690.30726)"
183 id="flowRoot38698"
184 xml:space="preserve"
185 style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"><flowRegion
186 id="flowRegion38700"><rect
187 width="40"
188 height="23"
189 x="531"
190 y="299"
191 id="rect38702" /></flowRegion><flowPara
192 id="flowPara38704" /></flowRoot> <text
193 x="-750.84784"
194 y="7.7151051"
195 id="text4087-2-6-5-1"
196 xml:space="preserve"
197 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
198 x="-750.84784"
199 y="7.7151051"
200 id="tspan4089-7-2-9-7" /></text>
201 <text
202 x="141.77814"
203 y="-449.28488"
204 id="text4087-2-6-5-7"
205 xml:space="preserve"
206 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
207 x="141.77814"
208 y="-449.28488"
209 id="tspan4089-7-2-9-1" /></text>
210 <text
211 x="168.26166"
212 y="-494.31586"
213 id="text4087-2-6-5-5"
214 xml:space="preserve"
215 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
216 x="168.26166"
217 y="-494.31586"
218 id="tspan4089-7-2-9-6" /></text>
219 <text
220 x="-1480.2218"
221 y="-502.28488"
222 id="text4087-2-6-5-3"
223 xml:space="preserve"
224 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
225 x="-1480.2218"
226 y="-502.28488"
227 id="tspan4089-7-2-9-18" /></text>
228 <text
229 x="134.086"
230 y="-804.28491"
231 id="text4087-2-6-5-4"
232 xml:space="preserve"
233 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
234 x="134.086"
235 y="-804.28491"
236 id="tspan4089-7-2-9-9" /></text>
237 <text
238 x="1776.6676"
239 y="-111.61586"
240 id="text4087-2-6-5-7-1"
241 xml:space="preserve"
242 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
243 x="1776.6676"
244 y="-111.61586"
245 id="tspan4089-7-2-9-1-8" /></text>
246 <text
247 x="1803.151"
248 y="-156.64684"
249 id="text4087-2-6-5-5-5"
250 xml:space="preserve"
251 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
252 x="1803.151"
253 y="-156.64684"
254 id="tspan4089-7-2-9-6-9" /></text>
255 <text
256 x="154.66754"
257 y="-164.61586"
258 id="text4087-2-6-5-75"
259 xml:space="preserve"
260 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
261 x="154.66754"
262 y="-164.61586"
263 id="tspan4089-7-2-9-3" /></text>
264 <text
265 x="1768.9755"
266 y="-466.61584"
267 id="text4087-2-6-5-4-8"
268 xml:space="preserve"
269 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
270 x="1768.9755"
271 y="-466.61584"
272 id="tspan4089-7-2-9-9-8" /></text>
273 <text
274 x="-881.88147"
275 y="-217.77017"
276 id="text4087-2-6-5-45"
277 xml:space="preserve"
278 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
279 x="-881.88147"
280 y="-217.77017"
281 id="tspan4089-7-2-9-75" /></text>
282 <text
283 x="-2897.564"
284 y="606.27478"
285 id="text4087-2-6-5-59-0"
286 xml:space="preserve"
287 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
288 x="-2897.564"
289 y="606.27478"
290 id="tspan4089-7-2-9-4-4" /></text>
291 <g
292 transform="translate(-338.00604,-450.49095)"
293 id="layer4">
294 <text
295 x="-664.2738"
296 y="1159.4154"
297 id="text4087-2-6-5-0"
298 xml:space="preserve"
299 style="font-size:14px;font-style:normal;font-weight:normal;opacity:0.8;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><tspan
300 x="-664.2738"
301 y="1159.4154"
302 id="tspan4089-7-2-9-13" /></text>
303 </g>
304 <path
305 style="color:#bebebe;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
306 d="m 8.0000002,0 0,8 L 16,8 13.15,5.15 15.55,2.7500001 16,2.3000001 13.7,0 13.25,0.45 10.85,2.8500001 8.0000002,0 z m 0,8 L 0,8 2.9000001,10.9 0.95000002,12.8 0,13.7 2.25,16 l 0.9500001,-0.95 1.9,-1.95 2.9000001,2.9 0,-8 z"
307 id="path6691-1"
308 inkscape:connector-curvature="0" />
309</svg>
0310
=== added file 'data/4.svg'
--- data/4.svg 1970-01-01 00:00:00 +0000
+++ data/4.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,152 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="16"
14 height="16"
15 id="svg6179"
16 version="1.1"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="4.svg">
19 <defs
20 id="defs6181">
21 <linearGradient
22 inkscape:collect="always"
23 xlink:href="#linearGradient5803-6-2"
24 id="linearGradient3324"
25 gradientUnits="userSpaceOnUse"
26 gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
27 x1="167.98311"
28 y1="13.398731"
29 x2="167.98311"
30 y2="54.780239" />
31 <linearGradient
32 id="linearGradient5803-6-2">
33 <stop
34 id="stop5805-7-1"
35 style="stop-color:#ffffff;stop-opacity:1;"
36 offset="0" />
37 <stop
38 id="stop5807-8-5"
39 style="stop-color:#e6f4f8;stop-opacity:1;"
40 offset="1" />
41 </linearGradient>
42 </defs>
43 <sodipodi:namedview
44 id="base"
45 pagecolor="#ffffff"
46 bordercolor="#666666"
47 borderopacity="1.0"
48 inkscape:pageopacity="0.0"
49 inkscape:pageshadow="2"
50 inkscape:zoom="15.999999"
51 inkscape:cx="19.708473"
52 inkscape:cy="2.3269378"
53 inkscape:document-units="px"
54 inkscape:current-layer="layer1"
55 showgrid="true"
56 inkscape:showpageshadow="false"
57 inkscape:snap-page="true"
58 inkscape:window-width="1600"
59 inkscape:window-height="845"
60 inkscape:window-x="0"
61 inkscape:window-y="30"
62 inkscape:window-maximized="1"
63 inkscape:snap-bbox="true"
64 inkscape:bbox-nodes="true">
65 <inkscape:grid
66 type="xygrid"
67 id="grid6187"
68 empspacing="5"
69 visible="true"
70 enabled="true"
71 snapvisiblegridlinesonly="true" />
72 </sodipodi:namedview>
73 <metadata
74 id="metadata6184">
75 <rdf:RDF>
76 <cc:Work
77 rdf:about="">
78 <dc:format>image/svg+xml</dc:format>
79 <dc:type
80 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
81 <dc:title />
82 </cc:Work>
83 </rdf:RDF>
84 </metadata>
85 <g
86 inkscape:label="Layer 1"
87 inkscape:groupmode="layer"
88 id="layer1"
89 transform="translate(0,-1036.3622)">
90 <g
91 id="g3017">
92 <rect
93 y="1036.3622"
94 x="1.7e-05"
95 height="16"
96 width="16"
97 id="rect7077"
98 style="opacity:0;color:#000000;fill:#ffffff;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
99 <rect
100 ry="1"
101 rx="1"
102 y="1042.3622"
103 x="4.0000172"
104 height="3"
105 width="3"
106 id="rect7032"
107 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
108 <path
109 sodipodi:nodetypes="scccssssssss"
110 inkscape:connector-curvature="0"
111 id="rect7064"
112 d="m 2.000017,1040.3622 3.5000091,0 2.4999916,-2.5303 2.4999913,2.5303 3.499991,0 c 0.554009,0 1.000017,0.446 1.000017,1 l 0,9 c 0,0.554 -0.446008,1 -1.000017,1 l -11.999983,0 c -0.5540096,0 -1.0000174,-0.446 -1.0000174,-1 l 0,-9 c 0,-0.554 0.4460078,-1 1.0000174,-1 z"
113 style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
114 <rect
115 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
116 id="rect7069"
117 width="3"
118 height="3"
119 x="9.0000172"
120 y="1042.3622"
121 rx="1"
122 ry="1" />
123 <rect
124 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
125 id="rect7073"
126 width="3"
127 height="3"
128 x="4.0000172"
129 y="1046.3622"
130 rx="1"
131 ry="1" />
132 <rect
133 ry="1"
134 rx="1"
135 y="1046.3622"
136 x="9.0000172"
137 height="3"
138 width="3"
139 id="rect7075"
140 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
141 <rect
142 style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
143 id="rect7073-5"
144 width="3"
145 height="3"
146 x="4"
147 y="1042.3622"
148 rx="1"
149 ry="1" />
150 </g>
151 </g>
152</svg>
0153
=== added file 'data/5.svg'
--- data/5.svg 1970-01-01 00:00:00 +0000
+++ data/5.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,117 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="16"
14 height="16"
15 id="svg6179"
16 version="1.1"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="5.svg">
19 <defs
20 id="defs6181">
21 <linearGradient
22 inkscape:collect="always"
23 xlink:href="#linearGradient5803-6-2"
24 id="linearGradient3324"
25 gradientUnits="userSpaceOnUse"
26 gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
27 x1="167.98311"
28 y1="13.398731"
29 x2="167.98311"
30 y2="54.780239" />
31 <linearGradient
32 id="linearGradient5803-6-2">
33 <stop
34 id="stop5805-7-1"
35 style="stop-color:#ffffff;stop-opacity:1;"
36 offset="0" />
37 <stop
38 id="stop5807-8-5"
39 style="stop-color:#e6f4f8;stop-opacity:1;"
40 offset="1" />
41 </linearGradient>
42 <linearGradient
43 inkscape:collect="always"
44 xlink:href="#linearGradient3680-6-6-6-3-7-1-9"
45 id="linearGradient3029"
46 gradientUnits="userSpaceOnUse"
47 gradientTransform="matrix(2.6375431,0,0,2.6375431,1.3780184,2.797842)"
48 x1="20"
49 y1="26.000008"
50 x2="20"
51 y2="13.000008" />
52 <linearGradient
53 id="linearGradient3680-6-6-6-3-7-1-9">
54 <stop
55 id="stop3682-4-6-1-3-7-7-1"
56 style="stop-color:#dcdcdc;stop-opacity:1"
57 offset="0" />
58 <stop
59 id="stop3684-8-5-8-0-2-6-7"
60 style="stop-color:#ffffff;stop-opacity:1"
61 offset="1" />
62 </linearGradient>
63 </defs>
64 <sodipodi:namedview
65 id="base"
66 pagecolor="#ffffff"
67 bordercolor="#666666"
68 borderopacity="1.0"
69 inkscape:pageopacity="0.0"
70 inkscape:pageshadow="2"
71 inkscape:zoom="22.627416"
72 inkscape:cx="14.077767"
73 inkscape:cy="7.480704"
74 inkscape:document-units="px"
75 inkscape:current-layer="layer1"
76 showgrid="true"
77 inkscape:showpageshadow="false"
78 inkscape:snap-page="true"
79 inkscape:window-width="1600"
80 inkscape:window-height="845"
81 inkscape:window-x="0"
82 inkscape:window-y="30"
83 inkscape:window-maximized="1"
84 inkscape:snap-bbox="true"
85 inkscape:bbox-nodes="true">
86 <inkscape:grid
87 type="xygrid"
88 id="grid6187"
89 empspacing="5"
90 visible="true"
91 enabled="true"
92 snapvisiblegridlinesonly="true" />
93 </sodipodi:namedview>
94 <metadata
95 id="metadata6184">
96 <rdf:RDF>
97 <cc:Work
98 rdf:about="">
99 <dc:format>image/svg+xml</dc:format>
100 <dc:type
101 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
102 <dc:title />
103 </cc:Work>
104 </rdf:RDF>
105 </metadata>
106 <g
107 inkscape:label="Layer 1"
108 inkscape:groupmode="layer"
109 id="layer1"
110 transform="translate(0,-1036.3622)">
111 <path
112 style="font-size:14.31169891000000050px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Open Sans;-inkscape-font-specification:Open Sans Bold"
113 id="path3985-0"
114 inkscape:connector-curvature="0"
115 d="m 2.7826087,1036.3622 0,0.9459 c -0.7529165,0.09 -1.5021567,0.3288 -2.0869567,0.9325 -0.839346,0.8065 -0.899303,2.4015 -0.282609,3.4054 0.596284,0.8995 1.504156,1.3234 2.3695657,1.7297 l 0,2.4189 C 1.817663,1045.6966 0.876806,1045.3676 0,1044.8757 l 0,2.0406 c 0.877615,0.4629 1.828574,0.6795 2.7826087,0.7027 l 0,1.7162 0.6956522,0 0,-1.7703 c 0.5839829,-0.065 1.2981342,-0.1977 1.8152174,-0.5405 0.7183307,-0.4385 1.2275965,-1.3673 1.1956521,-2.3379 0.00292,-0.4692 -0.1236354,-0.922 -0.3478261,-1.3108 -0.5997095,-0.9949 -1.7582431,-1.4248 -2.6630434,-1.8784 l 0,-2.3108 c 0.7173843,0.073 1.5627078,0.28 2.2282608,0.6081 l 0.6086957,-1.8108 c -0.8498685,-0.4526 -1.9104059,-0.6553 -2.8369565,-0.7027 l 0,-0.9189 -0.6956522,0 z m 0,2.8514 0,1.8513 c -0.3652591,-0.1997 -0.8970487,-0.4566 -0.8804347,-1.027 -0.01709,-0.5385 0.5106695,-0.7726 0.8804347,-0.8243 z m 0.6956522,4.5946 c 0.3622528,0.2197 1.0135742,0.4002 1.0217391,0.9729 0.020817,0.5845 -0.6116438,0.8645 -1.0217391,0.9325 l 0,-1.9054 z m 5.2173913,6.3918 0,2.1622 7.3043478,0 0,-2.1622 -7.3043478,0 z" />
116 </g>
117</svg>
0118
=== added file 'data/6.svg'
--- data/6.svg 1970-01-01 00:00:00 +0000
+++ data/6.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,131 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="16"
14 height="16"
15 id="svg6179"
16 version="1.1"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="6.svg">
19 <defs
20 id="defs6181">
21 <linearGradient
22 inkscape:collect="always"
23 xlink:href="#linearGradient5803-6-2"
24 id="linearGradient3324"
25 gradientUnits="userSpaceOnUse"
26 gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
27 x1="167.98311"
28 y1="13.398731"
29 x2="167.98311"
30 y2="54.780239" />
31 <linearGradient
32 id="linearGradient5803-6-2">
33 <stop
34 id="stop5805-7-1"
35 style="stop-color:#ffffff;stop-opacity:1;"
36 offset="0" />
37 <stop
38 id="stop5807-8-5"
39 style="stop-color:#e6f4f8;stop-opacity:1;"
40 offset="1" />
41 </linearGradient>
42 </defs>
43 <sodipodi:namedview
44 id="base"
45 pagecolor="#ffffff"
46 bordercolor="#666666"
47 borderopacity="1.0"
48 inkscape:pageopacity="0.0"
49 inkscape:pageshadow="2"
50 inkscape:zoom="11.313708"
51 inkscape:cx="19.592793"
52 inkscape:cy="1.191976"
53 inkscape:document-units="px"
54 inkscape:current-layer="layer1"
55 showgrid="true"
56 inkscape:showpageshadow="false"
57 inkscape:snap-page="true"
58 inkscape:window-width="1600"
59 inkscape:window-height="845"
60 inkscape:window-x="0"
61 inkscape:window-y="30"
62 inkscape:window-maximized="1"
63 inkscape:snap-bbox="true"
64 inkscape:bbox-nodes="true">
65 <inkscape:grid
66 type="xygrid"
67 id="grid6187"
68 empspacing="5"
69 visible="true"
70 enabled="true"
71 snapvisiblegridlinesonly="true" />
72 </sodipodi:namedview>
73 <metadata
74 id="metadata6184">
75 <rdf:RDF>
76 <cc:Work
77 rdf:about="">
78 <dc:format>image/svg+xml</dc:format>
79 <dc:type
80 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
81 <dc:title />
82 </cc:Work>
83 </rdf:RDF>
84 </metadata>
85 <g
86 inkscape:label="Layer 1"
87 inkscape:groupmode="layer"
88 id="layer1"
89 transform="translate(0,-1036.3622)">
90 <g
91 id="g7007"
92 transform="translate(0,1.7382813e-5)"
93 style="fill:#ffffff">
94 <rect
95 transform="translate(0,1036.3622)"
96 y="0"
97 x="0"
98 height="16"
99 width="16"
100 id="rect7005"
101 style="opacity:0;color:black;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
102 <rect
103 ry="1"
104 rx="1"
105 y="1037.3622"
106 x="0"
107 height="6"
108 width="8"
109 id="rect6231"
110 style="color:black;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
111 <rect
112 style="color:black;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
113 id="rect6233"
114 width="7"
115 height="5.0000172"
116 x="9"
117 y="1038.3622"
118 rx="1.0000174"
119 ry="1.0000174" />
120 <rect
121 ry="1.0000174"
122 rx="1.0000174"
123 y="1044.3622"
124 x="3"
125 height="7.0000415"
126 width="10"
127 id="rect7003"
128 style="color:black;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
129 </g>
130 </g>
131</svg>
0132
=== added file 'data/7.svg'
--- data/7.svg 1970-01-01 00:00:00 +0000
+++ data/7.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,131 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="16"
14 height="16"
15 id="svg6179"
16 version="1.1"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="6.svg">
19 <defs
20 id="defs6181">
21 <linearGradient
22 inkscape:collect="always"
23 xlink:href="#linearGradient5803-6-2"
24 id="linearGradient3324"
25 gradientUnits="userSpaceOnUse"
26 gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
27 x1="167.98311"
28 y1="13.398731"
29 x2="167.98311"
30 y2="54.780239" />
31 <linearGradient
32 id="linearGradient5803-6-2">
33 <stop
34 id="stop5805-7-1"
35 style="stop-color:#ffffff;stop-opacity:1;"
36 offset="0" />
37 <stop
38 id="stop5807-8-5"
39 style="stop-color:#e6f4f8;stop-opacity:1;"
40 offset="1" />
41 </linearGradient>
42 </defs>
43 <sodipodi:namedview
44 id="base"
45 pagecolor="#ffffff"
46 bordercolor="#666666"
47 borderopacity="1.0"
48 inkscape:pageopacity="0.0"
49 inkscape:pageshadow="2"
50 inkscape:zoom="11.313708"
51 inkscape:cx="19.592793"
52 inkscape:cy="1.191976"
53 inkscape:document-units="px"
54 inkscape:current-layer="layer1"
55 showgrid="true"
56 inkscape:showpageshadow="false"
57 inkscape:snap-page="true"
58 inkscape:window-width="1600"
59 inkscape:window-height="845"
60 inkscape:window-x="0"
61 inkscape:window-y="30"
62 inkscape:window-maximized="1"
63 inkscape:snap-bbox="true"
64 inkscape:bbox-nodes="true">
65 <inkscape:grid
66 type="xygrid"
67 id="grid6187"
68 empspacing="5"
69 visible="true"
70 enabled="true"
71 snapvisiblegridlinesonly="true" />
72 </sodipodi:namedview>
73 <metadata
74 id="metadata6184">
75 <rdf:RDF>
76 <cc:Work
77 rdf:about="">
78 <dc:format>image/svg+xml</dc:format>
79 <dc:type
80 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
81 <dc:title />
82 </cc:Work>
83 </rdf:RDF>
84 </metadata>
85 <g
86 inkscape:label="Layer 1"
87 inkscape:groupmode="layer"
88 id="layer1"
89 transform="translate(0,-1036.3622)">
90 <g
91 id="g7007"
92 transform="translate(0,1.7382813e-5)"
93 style="fill:#ffffff">
94 <rect
95 transform="translate(0,1036.3622)"
96 y="0"
97 x="0"
98 height="16"
99 width="16"
100 id="rect7005"
101 style="opacity:0;color:black;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
102 <rect
103 ry="1"
104 rx="1"
105 y="1037.3622"
106 x="0"
107 height="6"
108 width="8"
109 id="rect6231"
110 style="color:black;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
111 <rect
112 style="color:black;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
113 id="rect6233"
114 width="7"
115 height="5.0000172"
116 x="9"
117 y="1038.3622"
118 rx="1.0000174"
119 ry="1.0000174" />
120 <rect
121 ry="1.0000174"
122 rx="1.0000174"
123 y="1044.3622"
124 x="3"
125 height="7.0000415"
126 width="10"
127 id="rect7003"
128 style="color:black;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
129 </g>
130 </g>
131</svg>
0132
=== added file 'data/button.svg'
--- data/button.svg 1970-01-01 00:00:00 +0000
+++ data/button.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,250 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="60"
14 height="60"
15 id="svg14656"
16 version="1.1"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="button.svg">
19 <defs
20 id="defs14658">
21 <radialGradient
22 inkscape:collect="always"
23 xlink:href="#linearGradient14616"
24 id="radialGradient14622"
25 cx="431.02756"
26 cy="229.22406"
27 fx="431.02756"
28 fy="229.22406"
29 r="23.49752"
30 gradientUnits="userSpaceOnUse"
31 gradientTransform="matrix(0,2.18863,-1,-5.9483293e-6,660.25162,-714.13442)" />
32 <linearGradient
33 inkscape:collect="always"
34 id="linearGradient14616">
35 <stop
36 style="stop-color:#fafaf7;stop-opacity:1;"
37 offset="0"
38 id="stop14618" />
39 <stop
40 style="stop-color:#fafaf7;stop-opacity:0;"
41 offset="1"
42 id="stop14620" />
43 </linearGradient>
44 <radialGradient
45 inkscape:collect="always"
46 xlink:href="#linearGradient14602"
47 id="radialGradient14608"
48 cx="426.38193"
49 cy="238.05771"
50 fx="426.38193"
51 fy="238.05771"
52 r="22.98163"
53 gradientUnits="userSpaceOnUse"
54 gradientTransform="matrix(1.3634541,0.7871906,-0.90254772,1.5632585,59.407613,-469.83866)" />
55 <linearGradient
56 inkscape:collect="always"
57 id="linearGradient14602">
58 <stop
59 id="stop14606"
60 offset="0"
61 style="stop-color:#4fd32b;stop-opacity:1" />
62 <stop
63 id="stop14604"
64 offset="1"
65 style="stop-color:#45a221;stop-opacity:1" />
66 </linearGradient>
67 <radialGradient
68 r="22.98163"
69 fy="238.05771"
70 fx="426.38193"
71 cy="238.05771"
72 cx="426.38193"
73 gradientTransform="matrix(1.3634541,0.7871906,-0.90254772,1.5632585,59.407613,-469.83866)"
74 gradientUnits="userSpaceOnUse"
75 id="radialGradient14654"
76 xlink:href="#linearGradient14602"
77 inkscape:collect="always" />
78 <radialGradient
79 inkscape:collect="always"
80 xlink:href="#linearGradient14616-0"
81 id="radialGradient14622-1"
82 cx="431.02756"
83 cy="229.22406"
84 fx="431.02756"
85 fy="229.22406"
86 r="23.49752"
87 gradientUnits="userSpaceOnUse"
88 gradientTransform="matrix(0,2.18863,-1,-5.9483293e-6,660.25162,-714.13442)" />
89 <linearGradient
90 inkscape:collect="always"
91 id="linearGradient14616-0">
92 <stop
93 style="stop-color:#fafaf7;stop-opacity:1;"
94 offset="0"
95 id="stop14618-6" />
96 <stop
97 style="stop-color:#fafaf7;stop-opacity:0;"
98 offset="1"
99 id="stop14620-3" />
100 </linearGradient>
101 <filter
102 color-interpolation-filters="sRGB"
103 inkscape:collect="always"
104 id="filter14628-0">
105 <feGaussianBlur
106 inkscape:collect="always"
107 stdDeviation="0.77575123"
108 id="feGaussianBlur14630-1" />
109 </filter>
110 <radialGradient
111 inkscape:collect="always"
112 xlink:href="#linearGradient14602-6"
113 id="radialGradient14608-6"
114 cx="426.38193"
115 cy="238.05771"
116 fx="426.38193"
117 fy="238.05771"
118 r="22.98163"
119 gradientUnits="userSpaceOnUse"
120 gradientTransform="matrix(1.3634541,0.7871906,-0.90254772,1.5632585,59.407613,-469.83866)" />
121 <linearGradient
122 inkscape:collect="always"
123 id="linearGradient14602-6">
124 <stop
125 id="stop14606-3"
126 offset="0"
127 style="stop-color:#4fd32b;stop-opacity:1" />
128 <stop
129 id="stop14604-8"
130 offset="1"
131 style="stop-color:#45a221;stop-opacity:1" />
132 </linearGradient>
133 <filter
134 color-interpolation-filters="sRGB"
135 inkscape:collect="always"
136 id="filter14893">
137 <feGaussianBlur
138 inkscape:collect="always"
139 stdDeviation="1.449292"
140 id="feGaussianBlur14895" />
141 </filter>
142 <radialGradient
143 inkscape:collect="always"
144 xlink:href="#linearGradient14602-6"
145 id="radialGradient14962"
146 gradientUnits="userSpaceOnUse"
147 gradientTransform="matrix(1.3634541,0.7871906,-0.90254772,1.5632585,59.407613,-469.83866)"
148 cx="426.38193"
149 cy="238.05771"
150 fx="426.38193"
151 fy="238.05771"
152 r="22.98163" />
153 <radialGradient
154 inkscape:collect="always"
155 xlink:href="#linearGradient14616-0"
156 id="radialGradient14964"
157 gradientUnits="userSpaceOnUse"
158 gradientTransform="matrix(0,2.18863,-1,-5.9483293e-6,660.25162,-714.13442)"
159 cx="431.02756"
160 cy="229.22406"
161 fx="431.02756"
162 fy="229.22406"
163 r="23.49752" />
164 </defs>
165 <sodipodi:namedview
166 id="base"
167 pagecolor="#ffffff"
168 bordercolor="#666666"
169 borderopacity="1.0"
170 inkscape:pageopacity="0.0"
171 inkscape:pageshadow="2"
172 inkscape:zoom="15.839192"
173 inkscape:cx="39.545896"
174 inkscape:cy="14.200556"
175 inkscape:document-units="px"
176 inkscape:current-layer="layer1"
177 showgrid="true"
178 inkscape:showpageshadow="false"
179 fit-margin-top="0"
180 fit-margin-left="0"
181 fit-margin-right="0"
182 fit-margin-bottom="0"
183 inkscape:window-width="1600"
184 inkscape:window-height="845"
185 inkscape:window-x="0"
186 inkscape:window-y="30"
187 inkscape:window-maximized="1">
188 <inkscape:grid
189 type="xygrid"
190 id="grid14695"
191 empspacing="5"
192 visible="true"
193 enabled="true"
194 snapvisiblegridlinesonly="true"
195 originx="2.6625228px"
196 originy="4.3894395px" />
197 </sodipodi:namedview>
198 <metadata
199 id="metadata14661">
200 <rdf:RDF>
201 <cc:Work
202 rdf:about="">
203 <dc:format>image/svg+xml</dc:format>
204 <dc:type
205 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
206 <dc:title />
207 </cc:Work>
208 </rdf:RDF>
209 </metadata>
210 <g
211 inkscape:label="Layer 1"
212 inkscape:groupmode="layer"
213 id="layer1"
214 transform="translate(-227.47933,-603.74626)">
215 <g
216 id="g14957"
217 transform="matrix(1.2120396,0,0,1.2120396,-137.94486,-182.03628)">
218 <path
219 sodipodi:type="arc"
220 style="opacity:0.3669725;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.9867841;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter14893);enable-background:accumulate"
221 id="path14879"
222 sodipodi:cx="431.11078"
223 sodipodi:cy="254.11467"
224 sodipodi:rx="22.98163"
225 sodipodi:ry="22.98163"
226 d="m 454.09241,254.11467 c 0,12.6924 -10.28923,22.98163 -22.98163,22.98163 -12.69241,0 -22.98163,-10.28923 -22.98163,-22.98163 0,-12.6924 10.28922,-22.98163 22.98163,-22.98163 12.6924,0 22.98163,10.28923 22.98163,22.98163 z"
227 transform="matrix(1.0133929,0,0,1.0133929,-110.57985,416.64571)" />
228 <path
229 transform="matrix(1.0133929,0,0,1.0133929,-110.57985,414.64571)"
230 d="m 454.09241,254.11467 c 0,12.6924 -10.28923,22.98163 -22.98163,22.98163 -12.69241,0 -22.98163,-10.28923 -22.98163,-22.98163 0,-12.6924 10.28922,-22.98163 22.98163,-22.98163 12.6924,0 22.98163,10.28923 22.98163,22.98163 z"
231 sodipodi:ry="22.98163"
232 sodipodi:rx="22.98163"
233 sodipodi:cy="254.11467"
234 sodipodi:cx="431.11078"
235 id="path14592"
236 style="color:#000000;fill:url(#radialGradient14962);fill-opacity:1;stroke:#379313;stroke-width:0.9867841;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
237 sodipodi:type="arc" />
238 <path
239 sodipodi:type="arc"
240 style="opacity:0.69098666;color:#000000;fill:none;stroke:url(#radialGradient14964);stroke-width:1.05115008;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter14628-0);enable-background:accumulate"
241 id="path14612"
242 sodipodi:cx="431.11078"
243 sodipodi:cy="254.11467"
244 sodipodi:rx="22.98163"
245 sodipodi:ry="22.98163"
246 d="m 454.09241,254.11467 c 0,12.6924 -10.28923,22.98163 -22.98163,22.98163 -12.69241,0 -22.98163,-10.28923 -22.98163,-22.98163 0,-12.6924 10.28922,-22.98163 22.98163,-22.98163 12.6924,0 22.98163,10.28923 22.98163,22.98163 z"
247 transform="matrix(0.95133877,0,0,0.95133877,-83.827446,430.41457)" />
248 </g>
249 </g>
250</svg>
0251
=== added file 'data/display.svg'
--- data/display.svg 1970-01-01 00:00:00 +0000
+++ data/display.svg 2015-04-17 22:11:56 +0000
@@ -0,0 +1,220 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="490"
14 height="333"
15 id="svg13953"
16 version="1.1"
17 inkscape:version="0.48.4 r9939"
18 sodipodi:docname="display.svg">
19 <defs
20 id="defs13955">
21 <linearGradient
22 gradientTransform="translate(427.70904,-139.65646)"
23 inkscape:collect="always"
24 xlink:href="#linearGradient14513"
25 id="linearGradient14519"
26 x1="-183.60603"
27 y1="357.91989"
28 x2="-183.60603"
29 y2="598.4118"
30 gradientUnits="userSpaceOnUse" />
31 <linearGradient
32 inkscape:collect="always"
33 id="linearGradient14513">
34 <stop
35 style="stop-color:#fafaf7;stop-opacity:1;"
36 offset="0"
37 id="stop14515" />
38 <stop
39 style="stop-color:#fafaf7;stop-opacity:0;"
40 offset="1"
41 id="stop14517" />
42 </linearGradient>
43 <radialGradient
44 inkscape:collect="always"
45 xlink:href="#linearGradient13988"
46 id="radialGradient13994"
47 cx="-272.18756"
48 cy="333.45459"
49 fx="-272.18756"
50 fy="333.45459"
51 r="190"
52 gradientTransform="matrix(1.3349797,0.35770673,-0.23322348,0.87040189,165.59173,190.85596)"
53 gradientUnits="userSpaceOnUse" />
54 <linearGradient
55 inkscape:collect="always"
56 id="linearGradient13988">
57 <stop
58 id="stop13992"
59 offset="0"
60 style="stop-color:#5fbbe6;stop-opacity:1" />
61 <stop
62 id="stop13990"
63 offset="1"
64 style="stop-color:#5a94db;stop-opacity:1;" />
65 </linearGradient>
66 <radialGradient
67 r="190"
68 fy="333.45459"
69 fx="-272.18756"
70 cy="333.45459"
71 cx="-272.18756"
72 gradientTransform="matrix(1.3349797,0.35770673,-0.23322348,0.87040189,593.30077,51.199499)"
73 gradientUnits="userSpaceOnUse"
74 id="radialGradient14542"
75 xlink:href="#linearGradient13988"
76 inkscape:collect="always" />
77 <radialGradient
78 inkscape:collect="always"
79 xlink:href="#linearGradient13988-9"
80 id="radialGradient13994-2"
81 cx="-272.18756"
82 cy="333.45459"
83 fx="-272.18756"
84 fy="333.45459"
85 r="190"
86 gradientTransform="matrix(1.3349797,0.35770673,-0.23322348,0.87040189,165.59173,190.85596)"
87 gradientUnits="userSpaceOnUse" />
88 <linearGradient
89 inkscape:collect="always"
90 id="linearGradient13988-9">
91 <stop
92 id="stop13992-5"
93 offset="0"
94 style="stop-color:#5fbbe6;stop-opacity:1" />
95 <stop
96 id="stop13990-0"
97 offset="1"
98 style="stop-color:#5a94db;stop-opacity:1;" />
99 </linearGradient>
100 <linearGradient
101 inkscape:collect="always"
102 xlink:href="#linearGradient14513-6"
103 id="linearGradient14519-2"
104 x1="-183.60603"
105 y1="357.91989"
106 x2="-183.60603"
107 y2="598.4118"
108 gradientUnits="userSpaceOnUse" />
109 <linearGradient
110 inkscape:collect="always"
111 id="linearGradient14513-6">
112 <stop
113 style="stop-color:#fafaf7;stop-opacity:1;"
114 offset="0"
115 id="stop14515-2" />
116 <stop
117 style="stop-color:#fafaf7;stop-opacity:0;"
118 offset="1"
119 id="stop14517-4" />
120 </linearGradient>
121 <linearGradient
122 inkscape:collect="always"
123 xlink:href="#linearGradient14513-6"
124 id="linearGradient3033"
125 gradientUnits="userSpaceOnUse"
126 x1="-183.60603"
127 y1="357.91989"
128 x2="-183.60603"
129 y2="598.4118"
130 gradientTransform="matrix(1.2894737,0,0,1.4734513,497.71155,-365.85158)" />
131 <radialGradient
132 inkscape:collect="always"
133 xlink:href="#linearGradient13988-9"
134 id="radialGradient3037"
135 gradientUnits="userSpaceOnUse"
136 gradientTransform="matrix(1.7214212,0.52706345,-0.30073554,1.2824948,711.23773,-84.634614)"
137 cx="-272.18756"
138 cy="333.45459"
139 fx="-272.18756"
140 fy="333.45459"
141 r="190" />
142 </defs>
143 <sodipodi:namedview
144 id="base"
145 pagecolor="#ffffff"
146 bordercolor="#666666"
147 borderopacity="1.0"
148 inkscape:pageopacity="0.0"
149 inkscape:pageshadow="2"
150 inkscape:zoom="0.7"
151 inkscape:cx="303.33216"
152 inkscape:cy="42.332147"
153 inkscape:document-units="px"
154 inkscape:current-layer="layer1"
155 showgrid="false"
156 fit-margin-top="0"
157 fit-margin-left="0"
158 fit-margin-right="0"
159 fit-margin-bottom="0"
160 inkscape:showpageshadow="false"
161 inkscape:snap-page="true"
162 inkscape:snap-nodes="false"
163 inkscape:snap-bbox="true"
164 inkscape:window-width="1600"
165 inkscape:window-height="845"
166 inkscape:window-x="0"
167 inkscape:window-y="30"
168 inkscape:window-maximized="1">
169 <inkscape:grid
170 type="xygrid"
171 id="grid13968"
172 empspacing="5"
173 visible="true"
174 enabled="true"
175 snapvisiblegridlinesonly="true"
176 originx="0px"
177 originy="0px" />
178 </sodipodi:namedview>
179 <metadata
180 id="metadata13958">
181 <rdf:RDF>
182 <cc:Work
183 rdf:about="">
184 <dc:format>image/svg+xml</dc:format>
185 <dc:type
186 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
187 </cc:Work>
188 </rdf:RDF>
189 </metadata>
190 <g
191 inkscape:label="Layer 1"
192 inkscape:groupmode="layer"
193 id="layer1"
194 transform="translate(4.1875,-118.09375)">
195 <g
196 id="g3005"
197 transform="translate(55.044461,-53.452473)">
198 <rect
199 y="172.33047"
200 x="-58.542763"
201 height="331.52655"
202 width="488.71054"
203 id="rect13940"
204 style="color:#000000;fill:url(#radialGradient3037);fill-opacity:1;stroke:#4875b9;stroke-width:1.37839639;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
205 <path
206 sodipodi:nodetypes="ccccc"
207 inkscape:connector-curvature="0"
208 id="rect13998"
209 d="m -57.88793,173.05201 487.40086,0 0,102.94808 -487.40086,112.36888 z"
210 style="opacity:0.03999999;color:#000000;fill:#fafaf7;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
211 <rect
212 style="color:#000000;fill:none;stroke:url(#linearGradient3033);stroke-width:1.37839639;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.12972975;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
213 id="rect14003"
214 width="486.10129"
215 height="328.57635"
216 x="-57.243176"
217 y="173.80028" />
218 </g>
219 </g>
220</svg>
0221
=== removed file 'data/hotcornerdisplay.png'
1Binary files data/hotcornerdisplay.png 2012-08-07 08:42:42 +0000 and data/hotcornerdisplay.png 1970-01-01 00:00:00 +0000 differ222Binary files data/hotcornerdisplay.png 2012-08-07 08:42:42 +0000 and data/hotcornerdisplay.png 1970-01-01 00:00:00 +0000 differ
=== modified file 'src/CMakeLists.txt'
--- src/CMakeLists.txt 2015-03-31 06:23:29 +0000
+++ src/CMakeLists.txt 2015-04-17 22:11:56 +0000
@@ -17,6 +17,7 @@
17 Dock.vala17 Dock.vala
18 desktop-plug.vala18 desktop-plug.vala
19 GalaSettings.vala19 GalaSettings.vala
20 Hotcorners.vala
20 Wallpaper.vala21 Wallpaper.vala
21 SlingshotSettings.vala22 SlingshotSettings.vala
22 Cache.vala23 Cache.vala
2324
=== added file 'src/Hotcorners.vala'
--- src/Hotcorners.vala 1970-01-01 00:00:00 +0000
+++ src/Hotcorners.vala 2015-04-17 22:11:56 +0000
@@ -0,0 +1,526 @@
1/***
2 Copyright (C) 2014 Peter Arnold
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16***/
17
18public class Hotcorners : Gtk.Grid {
19
20 public Hotcorners () {
21 column_spacing = 12;
22 margin = 32;
23 margin_top = 15;
24 column_homogeneous = true;
25
26 Gtk.Overlay overlay;
27 var hotcorners = new HotcornerWidget (out overlay);
28 hotcorners.set_halign (Gtk.Align.CENTER);
29 attach (overlay, 1, 0, 1, 1);
30 }
31
32 /**
33 * Methods to get and set hotcorner selection
34 **/
35
36 public static void set_custom_command (string corner_string, string command) {
37 var line = BehaviorSettings.get_default ().hotcorner_custom_command;
38 var parts = line.split (";;");
39 var temp_line = "";
40 bool exist = false;
41
42 foreach (var part in parts){
43 var details = part.split (":");
44 if (corner_string == details[0]){
45 details[1] = command;
46 exist = true;
47 }
48 if (details.length > 1)
49 temp_line += details[0]+":"+details[1]+";;";
50 }
51 if (!exist)
52 temp_line += corner_string+":"+command+";;";
53
54 BehaviorSettings.get_default ().hotcorner_custom_command = temp_line;
55 }
56
57 public static string get_custom_command (string corner_string) {
58 var line = BehaviorSettings.get_default ().hotcorner_custom_command;
59 var parts = line.split (";;");
60 foreach (var part in parts){
61 var details = part.split (":");
62 if (details.length == 1)
63 return part;
64 if (corner_string == details[0])
65 return details [1];
66 }
67 return "";
68 }
69
70 public static int get_selection (string corner) {
71 return BehaviorSettings.get_default ().schema.get_enum (corner);
72 }
73
74 public static void choose_hotcorner (string corner, int command) {
75 BehaviorSettings.get_default ().schema.set_enum (corner, command);
76 }
77}
78
79
80public class HotcornerWidget : Gtk.DrawingArea {
81 // gala corner names
82 private const string[] corner_string = { "hotcorner-topleft",
83 "hotcorner-topright",
84 "hotcorner-bottomleft",
85 "hotcorner-bottomright" };
86
87 // names of the hotcorner commands, the corresponding icon is named with "id.png"
88 // position in the array is the id of the command
89 private string[] hotcorner_commands = { _("Do Nothing"), _("Multitasking View"),
90 _("Maximize Current Window"), _("Minimize Current Window"),
91 _("Show Applications Menu"), _("Execute Custom Command"),
92 _("Window Overview"), _("Show All Windows") };
93
94 private Gdk.Pixbuf[] hotcorner_icons;
95 private Gdk.Pixbuf button_icon;
96 private Gdk.Pixbuf back_image;
97 // calculate topleft, topright, bottomleft, bottomright corner points
98 private int[,] corners = {{delta_pic[0] + delta_border, delta_pic[1] + delta_border},
99 {background_width + delta_pic[0] - delta_border, delta_pic[1] + delta_border},
100 {delta_pic[0] + delta_border, background_height + delta_pic[1] - delta_border},
101 {background_width + delta_pic[0] - delta_border,
102 background_height + delta_pic[1] - delta_border}};
103
104 // status if corner is hoovered
105 private bool[] hoovered_corner = {false, false, false, false};
106 // bool if popover is shown
107 private bool pop_mode = false;
108 // selection if hovered over a menu entry
109 private int hover_selection = -1;
110
111 private Gtk.Overlay overlay;
112 private HotcornerWidget background;
113 private Gtk.Popover popover;
114
115 // pixel size of the background picture
116 private const int background_width = 490;
117 private const int background_height = 333;
118 // radius of the quarter circles in the corner
119 private const int radius = 50;
120 // x, y of delta top left corner of the background image
121 // big free x area to support closing popup when clicking grey area
122 private const int[] delta_pic = {275, 40};
123 private const int delta_border = 2;
124 // radius of the green button
125 private const int button_size = 30;
126 // y distance of the label from background image
127 private const int draw_text_dy = 16;
128 // values per corner
129 private const double[] angle_begin = {0 * (Math.PI / 180.0), 90 * (Math.PI / 180.0),
130 270 * (Math.PI / 180.0), 180 * (Math.PI / 180.0)};
131 private const double[] angle_end = {90 * (Math.PI / 180.0), 180 * (Math.PI / 180.0),
132 360 * (Math.PI / 180.0), 270 * (Math.PI / 180.0)};
133 private const int[] delta_x = {radius, 0, 0, -radius};
134 private const int[] delta_y = {0, radius, -radius, 0};
135 private const int[] delta_button_x = {-10, -50, -10, -50};
136 private const int[] delta_button_y = {-8, -8, -48, -48};
137
138 public HotcornerWidget (out Gtk.Overlay overlay) {
139 overlay = new Gtk.Overlay ();
140 this.overlay = overlay;
141 this.overlay.add (this);
142 add_events (Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK
143 | Gdk.EventMask.POINTER_MOTION_MASK);
144 set_size_request (background_width + (delta_pic[0] * 2), background_height + (delta_pic[1] * 2));
145 this.background = this;
146 for (int i = 0; i < hotcorner_commands.length; i++) {
147 try {
148 this.hotcorner_icons += new Gdk.Pixbuf.from_file_at_size ("%s/%d.svg".printf(Constants.PKGDATADIR, i),
149 16, 16);
150 } catch (Error e) {
151 critical (e.message);
152 }
153 }
154 try {
155 this.button_icon = new Gdk.Pixbuf.from_file_at_size (Constants.PKGDATADIR + "/button.svg",
156 2 * button_size, 2 * button_size);
157 } catch (Error e) {
158 critical (e.message);
159 }
160 try {
161 this.back_image = new Gdk.Pixbuf.from_file_at_size (Constants.PKGDATADIR + "/display.svg",
162 background_width, background_height);
163 } catch (Error e) {
164 critical (e.message);
165 }
166 }
167
168 public override bool draw (Cairo.Context context) {
169 //draw background
170 Gdk.cairo_set_source_pixbuf (context, back_image, delta_pic[0], delta_pic[1]);
171 context.paint ();
172 for (int i = 0; i < 4; i++) {
173 int x = corners[i,0];
174 int y = corners[i,1];
175 int selection = Hotcorners.get_selection (corner_string[i]);
176 // if this corner is hoovered
177 if (hoovered_corner[i]) {
178 if (selection == 0 || pop_mode) {
179 draw_green_button (context, selection, i, x, y);
180 } else {
181 draw_quarter_circle (context, selection, i, x, y, true);
182 draw_label (context, selection, i, x, y);
183 }
184 } else {
185 // draw quarter corner circle with the associated command icon
186 draw_quarter_circle (context, selection, i, x, y, false);
187 }
188 }
189 return true;
190 }
191
192 private void draw_quarter_circle (Cairo.Context context, int selection, int i, int x, int y, bool highlight) {
193 Cairo.ImageSurface surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, background_width + (delta_pic[0] * 2),
194 background_height + (delta_pic[1] * 2));
195 Cairo.Context context2 = new Cairo.Context (surface);
196 // inner quarter circle
197 if (highlight)
198 context2.set_source_rgba (1, 1, 1, 1);
199 else
200 context2.set_source_rgba (1, 1, 1, 0.8);
201 context2.move_to (x, y);
202 context2.line_to (x + delta_x[i], y + delta_y[i]);
203 context2.arc (x, y, radius, angle_begin[i], angle_end[i]);
204 context2.close_path ();
205 context2.fill ();
206 context2.stroke ();
207 // outter quarter circle
208 context2.set_source_rgba (1, 1, 1, 0.4);
209 context2.set_line_width (6);
210 context2.arc (x, y, radius + 3, angle_begin[i], angle_end[i]);
211 context2.stroke ();
212 context.set_operator (Cairo.Operator.OVER);
213 context.set_source_surface (context2.get_target (), 0, 0);
214 context.paint_with_alpha (0.5);
215 // draw icon of actual selection
216 if (selection == 0)
217 return;
218 var icon = hotcorner_icons[selection];
219 Gdk.cairo_set_source_pixbuf (context, icon, x + delta_button_x[i] + button_size - icon.get_width () / 2,
220 y + delta_button_y[i] + button_size - icon.get_height () / 2);
221 context.paint ();
222 }
223
224 private void draw_green_button (Cairo.Context context, int selection, int i, int x, int y) {
225 // context.set_source_surface (button_icon, x + delta_button_x[i], y + delta_button_y[i]);
226 Gdk.cairo_set_source_pixbuf (context, button_icon, x + delta_button_x[i], y + delta_button_y[i]);
227 context.paint ();
228 Cairo.ImageSurface surface2 = new Cairo.ImageSurface (Cairo.Format.ARGB32, button_size * 2, button_size * 2);
229 Cairo.Context context2 = new Cairo.Context (surface2);
230 context.set_operator (Cairo.Operator.OVER);
231 Gdk.Pixbuf icon;
232 if (hover_selection == -1)
233 icon = hotcorner_icons[selection];
234 else {
235 if (hover_selection == 0)
236 return;
237 icon = hotcorner_icons[hover_selection];
238 }
239 Gdk.cairo_set_source_pixbuf (context2, icon, button_size - icon.get_width () / 2,
240 button_size - icon.get_height () / 2);
241 context2.paint ();
242 context.set_source_surface (context2.get_target (), x + delta_button_x[i], y + delta_button_y[i]);
243 context.paint ();
244 }
245
246 private void draw_label (Cairo.Context context, int selection, int i, int x, int y) {
247 // get text length
248 context.set_font_size (14);
249 Cairo.TextExtents extents;
250 context.text_extents (hotcorner_commands[selection], out extents);
251 // set and calculate sizes of the box
252 int box_dx_text = 2;
253 int box_height = 24;
254 int box_width = ((int) extents.width) + box_height + 2 * box_dx_text;
255 Cairo.ImageSurface surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, box_width, box_height);
256 Cairo.Context context2 = new Cairo.Context (surface);
257 // draw box
258 context2.set_source_rgba (0, 0, 0, 0.6);
259 context2.move_to (box_height / 2, 0);
260 context2.line_to (box_height / 2, box_height);
261 context2.arc (box_height / 2, box_height/2, box_height / 2, 90 * Math.PI / 180, 270 * Math.PI / 180);
262 context2.fill ();
263 context2.stroke ();
264 context2.move_to (box_height / 2, 0);
265 context2.rectangle (box_height / 2, 0, box_width - box_height, box_height);
266 context2.fill ();
267 context2.stroke ();
268 context2.move_to (box_width - box_height / 2, 0);
269 context2.line_to (box_width - box_height / 2, box_height);
270 context2.arc (box_width - box_height / 2, box_height / 2, box_height / 2,
271 270 * Math.PI / 180, 90 * Math.PI / 180);
272 context2.fill ();
273 context2.stroke ();
274 context2.move_to (box_height / 2 + box_dx_text, box_height - 7);
275 //draw text
276 context2.set_source_rgba (1, 1, 1, 1);
277 context2.set_font_size (14);
278 context2.show_text (hotcorner_commands[selection]);
279 int draw_text_x = x - box_width / 2 + button_size + delta_button_x[i];
280 int draw_text_y;
281 if (i == 0 || i == 1)
282 draw_text_y = y - box_height - draw_text_dy;
283 else
284 draw_text_y = y + draw_text_dy;
285 context.set_operator (Cairo.Operator.OVER);
286 context.set_source_surface (context2.get_target (), draw_text_x, draw_text_y);
287 context.paint ();
288 }
289
290 public void close_popover () {
291 if (pop_mode){
292 pop_mode = false;
293 popover.hide ();
294 popover = null;
295 hover_selection = -1;
296 for (int j = 0; j < 4; j++) {
297 hoovered_corner[j] = false;
298 }
299 background.queue_draw ();
300 }
301 }
302
303 public override bool button_press_event (Gdk.EventButton event) {
304 // if popover is open close it
305 if (pop_mode){
306 close_popover ();
307 return true;
308 }
309 // check if a corner is hoovered and show popover in that case
310 for (int i = 0; i < 4; i++) {
311 if (hoovered_corner[i]) {
312 make_popover (i);
313 break;
314 }
315 }
316 return true;
317 }
318
319 // checks if mouse is hovered over a corner
320 public override bool motion_notify_event (Gdk.EventMotion evt) {
321 if (pop_mode) {
322 return true;
323 }
324 for (int i = 0; i < 4; i++) {
325 int x = corners[i,0];
326 int y = corners[i,1];
327 if (check_in_quarter_radius (evt, x, y, radius, i)) {
328 if (!hoovered_corner[i]) {
329 hoovered_corner[i] = true;
330 queue_draw ();
331 }
332 break;
333 }else if (hoovered_corner[i]) {
334 hoovered_corner[i] = false;
335 queue_draw ();
336 }
337 }
338 return true;
339 }
340
341 public override bool leave_notify_event (Gdk.EventCrossing event) {
342 if (pop_mode) return true;
343 for (int i = 0; i < 4; i++) {
344 hoovered_corner[i] = false;
345 }
346 queue_draw ();
347 return true;
348 }
349
350 // computational optimize check if point is inside quarter circle
351 private bool check_in_quarter_radius (Gdk.EventMotion evt, int x, int y, int r, int corner) {
352 var dx = evt.x - x;
353 var dy = evt.y - y;
354 if (Math.fabs (dx) > r) return false;
355 if (Math.fabs (dy) > r) return false;
356 if ((corner == 0 || corner == 1) && dy < 0) return false;
357 if ((corner == 2 || corner == 3) && dy > 0) return false;
358 if ((corner == 0 || corner == 2) && dx < 0) return false;
359 if ((corner == 1 || corner == 3) && dx > 0) return false;
360 if ((Math.fabs (dx) + Math.fabs (dy)) <= r) return true;
361 if (((dx*dx) + (dy*dy)) <= (r*r)) return true;
362 else return false;
363 }
364
365 private void make_popover (int i) {
366 pop_mode = true;
367 int x = corners[i,0];
368 int y = corners[i,1];
369 popover = new Gtk.Popover (background);
370 popover.get_style_context ().add_class (Gtk.STYLE_CLASS_MENU);
371 popover.set_position (Gtk.PositionType.BOTTOM);
372 var rect = Gdk.Rectangle ();
373 // position of the popover arrow
374 switch (i) {
375 case 0:
376 rect.x = x + 20;
377 rect.y = y + 52;
378 break;
379 case 1:
380 rect.x = x - 19;
381 rect.y = y + 52;
382 break;
383 case 2:
384 rect.x = x + 20;
385 rect.y = y - 49;
386 popover.set_position (Gtk.PositionType.TOP);
387 break;
388 case 3:
389 rect.x = x - 19;
390 rect.y = y - 49;
391 popover.set_position (Gtk.PositionType.TOP);
392 break;
393 }
394 popover.set_pointing_to (rect);
395 popover.hide.connect (() => {
396 close_popover ();
397 });
398 popover.add (create_hotcorner_menu (i));
399 // use modal false otherwise popover closes when switching stack
400 // closing must be handled manually then
401 popover.set_modal (false);
402 // because of modal false register own esc key listener
403 popover.key_press_event.connect ((evt) => {
404 if (evt.keyval == Gdk.Key.Escape)
405 close_popover ();
406 return true;
407 });
408 overlay.add_overlay (popover);
409 popover.show_all ();
410 // because of modal false grab focus
411 popover.grab_focus ();
412 background.queue_draw ();
413 }
414
415 private Gtk.Stack create_hotcorner_menu (int corner_id) {
416 var stack = new Gtk.Stack ();
417 stack.set_homogeneous (false);
418
419 // custom command box
420 var custom = new Gtk.Box (Gtk.Orientation.VERTICAL,10);
421 var custom_command = new Gtk.Entry ();
422 custom_command.text = Hotcorners.get_custom_command (corner_string [corner_id]);
423 var ok_button = new Gtk.Button.with_label (hotcorner_commands[5]);
424 ok_button.clicked.connect (() => {
425 var text = custom_command.text;
426 Hotcorners.choose_hotcorner (corner_string [corner_id], 5);
427 Hotcorners.set_custom_command (corner_string[corner_id], text);
428 close_popover ();
429 });
430 // set command on Enter
431 custom_command.key_press_event.connect ((evt) => {
432 if (evt.keyval == Gdk.Key.Return) {
433 var text = custom_command.text;
434 Hotcorners.choose_hotcorner (corner_string [corner_id], 5);
435 Hotcorners.set_custom_command (corner_string[corner_id], text);
436 close_popover ();
437 return true;
438 }
439 return false;
440 });
441 custom.pack_start (ok_button);
442 custom.pack_start (custom_command);
443 // align custom command box
444 Gtk.Alignment alignment2 = new Gtk.Alignment (0f, 0.5f, 0f, 0f);
445 alignment2.right_padding = 14;
446 alignment2.left_padding = 14;
447 alignment2.top_padding = 15;
448 alignment2.bottom_padding = 15;
449 alignment2.add (custom);
450
451 // command entries box
452 var box = new Gtk.Box (Gtk.Orientation.VERTICAL,0);
453 for (int i = 0; i < hotcorner_commands.length; i++) {
454 if (i == 5) continue;
455 var button = create_menu_entry (i);
456 int enum_value = i;
457 button.clicked.connect (() => {
458 close_popover ();
459 Hotcorners.choose_hotcorner (corner_string [corner_id], enum_value);
460 });
461 button.add_events (Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.ENTER_NOTIFY_MASK
462 | Gdk.EventMask.LEAVE_NOTIFY_MASK );
463 button.enter_notify_event.connect ((evt) => {
464 // fix width because there is a issue with resizing on hover with the menuitem style class
465 button.width_request = button.get_allocated_width ();
466 hover_selection = enum_value;
467 background.queue_draw ();
468 return false;
469 });
470 button.leave_notify_event.connect ((evt) => {
471 hover_selection = -1;
472 background.queue_draw ();
473 return false;
474 });
475 box.pack_start (button);
476 }
477 // custom command (index = 5) comes last and has a different behavior
478 var button = create_menu_entry (5);
479 button.clicked.connect (() => {
480 stack.transition_type = Gtk.StackTransitionType.NONE;
481 stack.set_visible_child_name ("custom");
482 custom_command.grab_focus ();
483 });
484 button.add_events (button.get_events () | Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK);
485 button.enter_notify_event.connect ((evt) => {
486 // fix width because there is a issue with resizing on hover with the menuitem style class
487 button.width_request = button.get_allocated_width ();
488 hover_selection = 5;
489 background.queue_draw ();
490 return false;
491 });
492 button.leave_notify_event.connect ((evt) => {
493 // if because this method is called when stack is switched
494 if (stack.get_visible_child_name () == "box")
495 hover_selection = -1;
496 background.queue_draw ();
497 return false;
498 });
499 box.pack_start (button);
500
501 Gtk.Alignment alignment = new Gtk.Alignment (0f, 1f, 0f, 0f);
502 alignment.top_padding = 10;
503 alignment.bottom_padding = 10;
504 alignment.add (box);
505
506 stack.add_named (alignment, "box");
507 stack.add_named (alignment2, "custom");
508 return stack;
509 }
510
511 private Gtk.Button create_menu_entry (int index) {
512 var button = new Gtk.Button();
513 button.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUITEM);
514 button.set_relief (Gtk.ReliefStyle.NONE);
515 var grid = new Gtk.Grid ();
516
517 var label_widget = new Gtk.Label.with_mnemonic (hotcorner_commands[index]);
518 label_widget.margin_left = 17;
519 label_widget.margin_right = 17;
520 label_widget.justify = Gtk.Justification.LEFT;
521 label_widget.set_alignment (0, 0);
522 grid.attach (label_widget, 1, 0, 1, 1);
523 button.add (grid);
524 return button;
525 }
526}
0\ No newline at end of file527\ No newline at end of file
1528
=== modified file 'src/desktop-plug.vala'
--- src/desktop-plug.vala 2014-12-15 23:16:48 +0000
+++ src/desktop-plug.vala 2015-04-17 22:11:56 +0000
@@ -47,7 +47,9 @@
47 stack.add_titled (dock, "dock", _("Dock"));47 stack.add_titled (dock, "dock", _("Dock"));
4848
49 /*hot corners*/49 /*hot corners*/
50 build_hotcorners_panel ();50 var hotcorners = new Hotcorners ();
51 hotcorners.expand = true;
52 stack.add_titled (hotcorners, "hotc", _("Hot Corners"));
5153
52 main_grid.attach (stack_switcher, 0, 0, 1, 1);54 main_grid.attach (stack_switcher, 0, 0, 1, 1);
53 main_grid.attach (stack, 0, 1, 1, 1);55 main_grid.attach (stack, 0, 1, 1, 1);
@@ -57,75 +59,6 @@
57 return main_grid;59 return main_grid;
58 }60 }
5961
60 private void build_hotcorners_panel () {
61 var hotc_grid = new Gtk.Grid ();
62 hotc_grid.expand = true;
63 hotc_grid.column_spacing = 12;
64 hotc_grid.margin = 32;
65 hotc_grid.margin_top = 48;
66
67 var expl = new Gtk.Label (_("When the cursor enters the corner of the display:"));
68 expl.set_halign (Gtk.Align.START);
69 expl.margin_bottom = 10;
70 expl.set_hexpand (true);
71
72 var topleft = create_hotcorner ();
73 topleft.active_id = BehaviorSettings.get_default ().schema.get_enum ("hotcorner-topleft").to_string ();
74 topleft.changed.connect (() => BehaviorSettings.get_default ().schema.set_enum ("hotcorner-topleft", int.parse (topleft.active_id)));
75 topleft.valign = Gtk.Align.START;
76 var topright = create_hotcorner ();
77 topright.active_id = BehaviorSettings.get_default ().schema.get_enum ("hotcorner-topright").to_string ();
78 topright.changed.connect (() => BehaviorSettings.get_default ().schema.set_enum ("hotcorner-topright", int.parse (topright.active_id)));
79 topright.valign = Gtk.Align.START;
80 var bottomleft = create_hotcorner ();
81 bottomleft.active_id = BehaviorSettings.get_default ().schema.get_enum ("hotcorner-bottomleft").to_string ();
82 bottomleft.changed.connect (() => BehaviorSettings.get_default ().schema.set_enum ("hotcorner-bottomleft", int.parse (bottomleft.active_id)));
83 bottomleft.valign = Gtk.Align.END;
84 var bottomright = create_hotcorner ();
85 bottomright.active_id = BehaviorSettings.get_default ().schema.get_enum ("hotcorner-bottomright").to_string ();
86 bottomright.changed.connect (() => BehaviorSettings.get_default ().schema.set_enum ("hotcorner-bottomright", int.parse (bottomright.active_id)));
87 bottomright.valign = Gtk.Align.END;
88
89 var icon = new Gtk.Image.from_file (Constants.PKGDATADIR + "/hotcornerdisplay.png");
90 var custom_command = new Gtk.Entry ();
91 custom_command.text = BehaviorSettings.get_default ().hotcorner_custom_command;
92 custom_command.changed.connect (() => BehaviorSettings.get_default ().hotcorner_custom_command = custom_command.text );
93
94 var cc_label = new Gtk.Label (_("Custom Command:"));
95 cc_label.set_halign (Gtk.Align.START);
96
97 var cc_grid = new Gtk.Grid ();
98 cc_grid.expand = true;
99 cc_grid.set_column_spacing (12);
100 cc_grid.set_margin_top (48);
101 cc_grid.attach (cc_label, 0, 0, 1, 1);
102 cc_grid.attach (custom_command, 1, 0, 1, 1);
103
104 hotc_grid.attach (expl, 0, 0, 3, 1);
105 hotc_grid.attach (icon, 1, 1, 1, 3);
106 hotc_grid.attach (topleft, 0, 1, 1, 1);
107 hotc_grid.attach (topright, 2, 1, 1, 1);
108 hotc_grid.attach (bottomleft, 0, 3, 1, 1);
109 hotc_grid.attach (bottomright, 2, 3, 1, 1);
110 hotc_grid.attach (cc_grid, 0, 4, 2, 1);
111
112 stack.add_titled (hotc_grid, "hotc", _("Hot Corners"));
113 }
114
115 private Gtk.ComboBoxText create_hotcorner () {
116 var box = new Gtk.ComboBoxText ();
117 box.append ("0", _("Do Nothing"));
118 box.append ("1", _("Multitasking View"));
119 box.append ("2", _("Maximize Current Window"));
120 box.append ("3", _("Minimize Current Window"));
121 box.append ("4", _("Show Applications Menu"));
122 box.append ("6", _("Window Overview"));
123 box.append ("7", _("Show All Windows"));
124 box.append ("5", _("Execute Custom Command"));
125
126 return box;
127 }
128
129 public override void shown () {62 public override void shown () {
130 63
131 }64 }

Subscribers

People subscribed via source and target branches

to all changes: