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
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2015-04-07 01:24:23 +0000
3+++ CMakeLists.txt 2015-04-17 22:11:56 +0000
4@@ -49,7 +49,7 @@
5 add_custom_target (dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
6
7 # Files
8-file (GLOB resources "${CMAKE_CURRENT_SOURCE_DIR}/data/*.png")
9+file (GLOB resources "${CMAKE_CURRENT_SOURCE_DIR}/data/*.svg")
10
11 install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/data/pantheon-plug-shell.desktop" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications")
12
13
14=== added file 'data/0.svg'
15--- data/0.svg 1970-01-01 00:00:00 +0000
16+++ data/0.svg 2015-04-17 22:11:56 +0000
17@@ -0,0 +1,69 @@
18+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
19+<!-- Created with Inkscape (http://www.inkscape.org/) -->
20+
21+<svg
22+ xmlns:dc="http://purl.org/dc/elements/1.1/"
23+ xmlns:cc="http://creativecommons.org/ns#"
24+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
25+ xmlns:svg="http://www.w3.org/2000/svg"
26+ xmlns="http://www.w3.org/2000/svg"
27+ xmlns:xlink="http://www.w3.org/1999/xlink"
28+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
29+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
30+ width="16"
31+ height="16"
32+ id="svg3010"
33+ version="1.1"
34+ inkscape:version="0.48.4 r9939"
35+ sodipodi:docname="New document 1">
36+ <defs
37+ id="defs3012" />
38+ <sodipodi:namedview
39+ id="base"
40+ pagecolor="#ffffff"
41+ bordercolor="#666666"
42+ borderopacity="1.0"
43+ inkscape:pageopacity="0.0"
44+ inkscape:pageshadow="2"
45+ inkscape:zoom="31.678384"
46+ inkscape:cx="6.5116781"
47+ inkscape:cy="9.2795011"
48+ inkscape:document-units="px"
49+ inkscape:current-layer="layer1"
50+ showgrid="false"
51+ inkscape:window-width="1600"
52+ inkscape:window-height="845"
53+ inkscape:window-x="0"
54+ inkscape:window-y="30"
55+ inkscape:window-maximized="1" />
56+ <metadata
57+ id="metadata3015">
58+ <rdf:RDF>
59+ <cc:Work
60+ rdf:about="">
61+ <dc:format>image/svg+xml</dc:format>
62+ <dc:type
63+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
64+ <dc:title></dc:title>
65+ </cc:Work>
66+ </rdf:RDF>
67+ </metadata>
68+ <g
69+ inkscape:label="Layer 1"
70+ inkscape:groupmode="layer"
71+ id="layer1"
72+ transform="translate(0,-1036.3622)">
73+ <image
74+ y="1036.3442"
75+ x="-0.013481841"
76+ id="image3080"
77+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAHVJREFU
78+OI3Fk9EJwCAMBc/iNI7jSu4TnMZx0n61pZKgpULvS0h4mIuGUgpfiF4h53ydVZVa67sAgJTSDtBa
79+C17PNrriiP8DIjyFeVg9InJLPIVZWLVT7JoRVNVc1cwaI2A+kn5mETED/l/jGokWntjpAO/39Rw3
80+rytGcIv6FAAAAABJRU5ErkJggg==
81+"
82+ height="16"
83+ width="16"
84+ style="fill:#000000" />
85+ </g>
86+</svg>
87
88=== added file 'data/1.svg'
89--- data/1.svg 1970-01-01 00:00:00 +0000
90+++ data/1.svg 2015-04-17 22:11:56 +0000
91@@ -0,0 +1,133 @@
92+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
93+<!-- Created with Inkscape (http://www.inkscape.org/) -->
94+
95+<svg
96+ xmlns:dc="http://purl.org/dc/elements/1.1/"
97+ xmlns:cc="http://creativecommons.org/ns#"
98+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
99+ xmlns:svg="http://www.w3.org/2000/svg"
100+ xmlns="http://www.w3.org/2000/svg"
101+ xmlns:xlink="http://www.w3.org/1999/xlink"
102+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
103+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
104+ width="16"
105+ height="16"
106+ id="svg6179"
107+ version="1.1"
108+ inkscape:version="0.48.4 r9939"
109+ sodipodi:docname="1.svg">
110+ <defs
111+ id="defs6181">
112+ <linearGradient
113+ inkscape:collect="always"
114+ xlink:href="#linearGradient5803-6-2"
115+ id="linearGradient3324"
116+ gradientUnits="userSpaceOnUse"
117+ gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
118+ x1="167.98311"
119+ y1="13.398731"
120+ x2="167.98311"
121+ y2="54.780239" />
122+ <linearGradient
123+ id="linearGradient5803-6-2">
124+ <stop
125+ id="stop5805-7-1"
126+ style="stop-color:#ffffff;stop-opacity:1;"
127+ offset="0" />
128+ <stop
129+ id="stop5807-8-5"
130+ style="stop-color:#e6f4f8;stop-opacity:1;"
131+ offset="1" />
132+ </linearGradient>
133+ </defs>
134+ <sodipodi:namedview
135+ id="base"
136+ pagecolor="#ffffff"
137+ bordercolor="#666666"
138+ borderopacity="1.0"
139+ inkscape:pageopacity="0.0"
140+ inkscape:pageshadow="2"
141+ inkscape:zoom="11.313708"
142+ inkscape:cx="-11.336265"
143+ inkscape:cy="5.0980221"
144+ inkscape:document-units="px"
145+ inkscape:current-layer="layer1"
146+ showgrid="true"
147+ inkscape:showpageshadow="false"
148+ inkscape:snap-page="true"
149+ inkscape:window-width="1600"
150+ inkscape:window-height="845"
151+ inkscape:window-x="0"
152+ inkscape:window-y="30"
153+ inkscape:window-maximized="1"
154+ inkscape:snap-bbox="true"
155+ inkscape:bbox-nodes="true">
156+ <inkscape:grid
157+ type="xygrid"
158+ id="grid6187"
159+ empspacing="5"
160+ visible="true"
161+ enabled="true"
162+ snapvisiblegridlinesonly="true" />
163+ </sodipodi:namedview>
164+ <metadata
165+ id="metadata6184">
166+ <rdf:RDF>
167+ <cc:Work
168+ rdf:about="">
169+ <dc:format>image/svg+xml</dc:format>
170+ <dc:type
171+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
172+ <dc:title />
173+ </cc:Work>
174+ </rdf:RDF>
175+ </metadata>
176+ <g
177+ inkscape:label="Layer 1"
178+ inkscape:groupmode="layer"
179+ id="layer1"
180+ transform="translate(0,-1036.3622)">
181+ <g
182+ id="g2998">
183+ <rect
184+ y="1036.3622"
185+ x="0"
186+ height="16"
187+ width="16"
188+ id="rect7100"
189+ 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" />
190+ <rect
191+ ry="1"
192+ rx="1"
193+ y="1036.3622"
194+ x="0"
195+ height="11"
196+ width="16"
197+ id="rect7087"
198+ 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" />
199+ <rect
200+ ry="1"
201+ rx="1"
202+ y="1048.3622"
203+ x="0"
204+ height="3"
205+ width="5"
206+ id="rect7089"
207+ 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" />
208+ <rect
209+ 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"
210+ id="rect7091"
211+ width="5"
212+ height="3"
213+ x="6"
214+ y="1048.3622"
215+ rx="1"
216+ ry="1" />
217+ <path
218+ inkscape:connector-curvature="0"
219+ id="rect7095"
220+ 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"
221+ 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" />
222+ </g>
223+ </g>
224+</svg>
225
226=== added file 'data/2.svg'
227--- data/2.svg 1970-01-01 00:00:00 +0000
228+++ data/2.svg 2015-04-17 22:11:56 +0000
229@@ -0,0 +1,250 @@
230+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
231+<!-- Created with Inkscape (http://www.inkscape.org/) -->
232+
233+<svg
234+ xmlns:dc="http://purl.org/dc/elements/1.1/"
235+ xmlns:cc="http://creativecommons.org/ns#"
236+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
237+ xmlns:svg="http://www.w3.org/2000/svg"
238+ xmlns="http://www.w3.org/2000/svg"
239+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
240+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
241+ version="1.0"
242+ width="16"
243+ height="16"
244+ id="svg2747"
245+ sodipodi:version="0.32"
246+ inkscape:version="0.48.4 r9939"
247+ sodipodi:docname="2.svg"
248+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
249+ <metadata
250+ id="metadata9">
251+ <rdf:RDF>
252+ <cc:Work
253+ rdf:about="">
254+ <dc:format>image/svg+xml</dc:format>
255+ <dc:type
256+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
257+ <dc:title />
258+ </cc:Work>
259+ </rdf:RDF>
260+ </metadata>
261+ <sodipodi:namedview
262+ inkscape:window-height="845"
263+ inkscape:window-width="1600"
264+ inkscape:pageshadow="2"
265+ inkscape:pageopacity="0"
266+ guidetolerance="10.0"
267+ gridtolerance="10.0"
268+ objecttolerance="10.0"
269+ borderopacity="1.0"
270+ bordercolor="#666666"
271+ pagecolor="#dedede"
272+ id="base"
273+ showgrid="false"
274+ showguides="false"
275+ inkscape:guide-bbox="true"
276+ showborder="true"
277+ inkscape:zoom="10.822662"
278+ inkscape:cx="18.390206"
279+ inkscape:cy="20.04631"
280+ inkscape:window-x="0"
281+ inkscape:window-y="30"
282+ inkscape:current-layer="svg2747"
283+ fit-margin-top="0"
284+ fit-margin-left="0"
285+ fit-margin-right="0"
286+ fit-margin-bottom="0"
287+ inkscape:window-maximized="1">
288+ <sodipodi:guide
289+ orientation="1,0"
290+ position="286.91968,115.79117"
291+ id="guide2386" />
292+ <sodipodi:guide
293+ orientation="0,1"
294+ position="299.19277,123.05221"
295+ id="guide2388" />
296+ <inkscape:grid
297+ type="xygrid"
298+ id="grid2387"
299+ visible="true"
300+ enabled="true"
301+ empspacing="5"
302+ snapvisiblegridlinesonly="true" />
303+ </sodipodi:namedview>
304+ <defs
305+ id="defs2749">
306+ <linearGradient
307+ id="linearGradient3587-6-5-1-5">
308+ <stop
309+ offset="0"
310+ style="stop-color:#000000;stop-opacity:1"
311+ id="stop3589-9-2-8-5" />
312+ <stop
313+ offset="1"
314+ style="stop-color:#646464;stop-opacity:1"
315+ id="stop3591-7-4-3-0" />
316+ </linearGradient>
317+ </defs>
318+ <text
319+ id="text4087-2-6-5"
320+ y="238.8988"
321+ x="337.90759"
322+ 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"
323+ xml:space="preserve"><tspan
324+ y="238.8988"
325+ x="337.90759"
326+ id="tspan4089-7-2-9"
327+ sodipodi:role="line" /></text>
328+ <text
329+ xml:space="preserve"
330+ 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"
331+ x="-1677.7749"
332+ y="1062.9437"
333+ id="text4087-2-6-5-59"><tspan
334+ sodipodi:role="line"
335+ id="tspan4089-7-2-9-4"
336+ x="-1677.7749"
337+ y="1062.9437" /></text>
338+ <flowRoot
339+ xml:space="preserve"
340+ id="flowRoot38698"
341+ 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"
342+ transform="translate(-81.87659,-690.30726)"><flowRegion
343+ id="flowRegion38700"><rect
344+ id="rect38702"
345+ width="40"
346+ height="23"
347+ x="531"
348+ y="299" /></flowRegion><flowPara
349+ id="flowPara38704" /></flowRoot> <path
350+ 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"
351+ 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"
352+ id="path6691"
353+ inkscape:connector-curvature="0" />
354+ <text
355+ id="text4087-2-6-5-1"
356+ y="7.7151051"
357+ x="-750.84784"
358+ 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"
359+ xml:space="preserve"><tspan
360+ y="7.7151051"
361+ x="-750.84784"
362+ id="tspan4089-7-2-9-7"
363+ sodipodi:role="line" /></text>
364+ <text
365+ id="text4087-2-6-5-7"
366+ y="-449.28488"
367+ x="141.77814"
368+ 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"
369+ xml:space="preserve"><tspan
370+ y="-449.28488"
371+ x="141.77814"
372+ id="tspan4089-7-2-9-1"
373+ sodipodi:role="line" /></text>
374+ <text
375+ id="text4087-2-6-5-5"
376+ y="-494.31586"
377+ x="168.26166"
378+ 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"
379+ xml:space="preserve"><tspan
380+ y="-494.31586"
381+ x="168.26166"
382+ id="tspan4089-7-2-9-6"
383+ sodipodi:role="line" /></text>
384+ <text
385+ id="text4087-2-6-5-3"
386+ y="-502.28488"
387+ x="-1480.2218"
388+ 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"
389+ xml:space="preserve"><tspan
390+ y="-502.28488"
391+ x="-1480.2218"
392+ id="tspan4089-7-2-9-18"
393+ sodipodi:role="line" /></text>
394+ <text
395+ id="text4087-2-6-5-4"
396+ y="-804.28491"
397+ x="134.086"
398+ 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"
399+ xml:space="preserve"><tspan
400+ y="-804.28491"
401+ x="134.086"
402+ id="tspan4089-7-2-9-9"
403+ sodipodi:role="line" /></text>
404+ <text
405+ id="text4087-2-6-5-7-1"
406+ y="-111.61586"
407+ x="1776.6676"
408+ 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"
409+ xml:space="preserve"><tspan
410+ y="-111.61586"
411+ x="1776.6676"
412+ id="tspan4089-7-2-9-1-8"
413+ sodipodi:role="line" /></text>
414+ <text
415+ id="text4087-2-6-5-5-5"
416+ y="-156.64684"
417+ x="1803.151"
418+ 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"
419+ xml:space="preserve"><tspan
420+ y="-156.64684"
421+ x="1803.151"
422+ id="tspan4089-7-2-9-6-9"
423+ sodipodi:role="line" /></text>
424+ <text
425+ id="text4087-2-6-5-75"
426+ y="-164.61586"
427+ x="154.66754"
428+ 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"
429+ xml:space="preserve"><tspan
430+ y="-164.61586"
431+ x="154.66754"
432+ id="tspan4089-7-2-9-3"
433+ sodipodi:role="line" /></text>
434+ <text
435+ id="text4087-2-6-5-4-8"
436+ y="-466.61584"
437+ x="1768.9755"
438+ 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"
439+ xml:space="preserve"><tspan
440+ y="-466.61584"
441+ x="1768.9755"
442+ id="tspan4089-7-2-9-9-8"
443+ sodipodi:role="line" /></text>
444+ <text
445+ id="text4087-2-6-5-45"
446+ y="-217.77017"
447+ x="-881.88147"
448+ 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"
449+ xml:space="preserve"><tspan
450+ y="-217.77017"
451+ x="-881.88147"
452+ id="tspan4089-7-2-9-75"
453+ sodipodi:role="line" /></text>
454+ <text
455+ xml:space="preserve"
456+ 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"
457+ x="-2897.564"
458+ y="606.27478"
459+ id="text4087-2-6-5-59-0"><tspan
460+ sodipodi:role="line"
461+ id="tspan4089-7-2-9-4-4"
462+ x="-2897.564"
463+ y="606.27478" /></text>
464+ <g
465+ transform="translate(-338.00604,-450.49095)"
466+ inkscape:label="Layer#2"
467+ id="layer4">
468+ <text
469+ xml:space="preserve"
470+ 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"
471+ x="-664.2738"
472+ y="1159.4154"
473+ id="text4087-2-6-5-0"><tspan
474+ sodipodi:role="line"
475+ id="tspan4089-7-2-9-13"
476+ x="-664.2738"
477+ y="1159.4154" /></text>
478+ </g>
479+</svg>
480
481=== added file 'data/3.svg'
482--- data/3.svg 1970-01-01 00:00:00 +0000
483+++ data/3.svg 2015-04-17 22:11:56 +0000
484@@ -0,0 +1,309 @@
485+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
486+<!-- Created with Inkscape (http://www.inkscape.org/) -->
487+
488+<svg
489+ xmlns:dc="http://purl.org/dc/elements/1.1/"
490+ xmlns:cc="http://creativecommons.org/ns#"
491+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
492+ xmlns:svg="http://www.w3.org/2000/svg"
493+ xmlns="http://www.w3.org/2000/svg"
494+ xmlns:xlink="http://www.w3.org/1999/xlink"
495+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
496+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
497+ version="1.2"
498+ width="16"
499+ height="16"
500+ id="svg2747"
501+ inkscape:version="0.48.4 r9939"
502+ sodipodi:docname="3.svg">
503+ <sodipodi:namedview
504+ pagecolor="#ffffff"
505+ bordercolor="#666666"
506+ borderopacity="1"
507+ objecttolerance="10"
508+ gridtolerance="10"
509+ guidetolerance="10"
510+ inkscape:pageopacity="0"
511+ inkscape:pageshadow="2"
512+ inkscape:window-width="1600"
513+ inkscape:window-height="845"
514+ id="namedview62"
515+ showgrid="false"
516+ inkscape:zoom="14.75"
517+ inkscape:cx="2.6271183"
518+ inkscape:cy="5.2881356"
519+ inkscape:window-x="0"
520+ inkscape:window-y="30"
521+ inkscape:window-maximized="1"
522+ inkscape:current-layer="svg2747" />
523+ <metadata
524+ id="metadata9">
525+ <rdf:RDF>
526+ <cc:Work
527+ rdf:about="">
528+ <dc:format>image/svg+xml</dc:format>
529+ <dc:type
530+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
531+ <dc:title />
532+ </cc:Work>
533+ </rdf:RDF>
534+ </metadata>
535+ <defs
536+ id="defs2749">
537+ <linearGradient
538+ id="linearGradient3788">
539+ <stop
540+ id="stop3790"
541+ style="stop-color:#ffffff;stop-opacity:1"
542+ offset="0" />
543+ <stop
544+ id="stop3792"
545+ style="stop-color:#ffffff;stop-opacity:0"
546+ offset="1" />
547+ </linearGradient>
548+ <linearGradient
549+ id="linearGradient3587-6-5-1-5">
550+ <stop
551+ id="stop3589-9-2-8-5"
552+ style="stop-color:#000000;stop-opacity:1"
553+ offset="0" />
554+ <stop
555+ id="stop3591-7-4-3-0"
556+ style="stop-color:#646464;stop-opacity:1"
557+ offset="1" />
558+ </linearGradient>
559+ <linearGradient
560+ x1="19.490692"
561+ y1="-4.321744"
562+ x2="22.886868"
563+ y2="-0.92556846"
564+ id="linearGradient6693"
565+ xlink:href="#linearGradient3587-6-5-1-5"
566+ gradientUnits="userSpaceOnUse"
567+ gradientTransform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,8.878258,-7.4350298)" />
568+ <linearGradient
569+ x1="22.863201"
570+ y1="-0.94923496"
571+ x2="26.23391"
572+ y2="2.4214737"
573+ id="linearGradient6695"
574+ xlink:href="#linearGradient3587-6-5-1-5"
575+ gradientUnits="userSpaceOnUse"
576+ gradientTransform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,8.878258,-7.4350298)" />
577+ <linearGradient
578+ x1="8.1313992"
579+ y1="19.049677"
580+ x2="8.1313992"
581+ y2="15.935893"
582+ id="linearGradient3794"
583+ xlink:href="#linearGradient3788"
584+ gradientUnits="userSpaceOnUse"
585+ gradientTransform="matrix(1.1333334,0,0,0.99999997,-0.06666673,-2.9999999)" />
586+ <linearGradient
587+ id="linearGradient3732-77">
588+ <stop
589+ id="stop3734-3"
590+ style="stop-color:#000000;stop-opacity:1"
591+ offset="0" />
592+ <stop
593+ id="stop3736-71"
594+ style="stop-color:#000000;stop-opacity:0"
595+ offset="1" />
596+ </linearGradient>
597+ <linearGradient
598+ x1="8.1313992"
599+ y1="19.049677"
600+ x2="8.1313992"
601+ y2="15.935893"
602+ id="linearGradient5038"
603+ xlink:href="#linearGradient3732-77"
604+ gradientUnits="userSpaceOnUse"
605+ gradientTransform="matrix(0.8666667,0,0,0.73333335,2.0666666,-16.066667)" />
606+ <linearGradient
607+ x1="25.570522"
608+ y1="3.289499"
609+ x2="22.077217"
610+ y2="-0.20380709"
611+ id="linearGradient6695-0"
612+ xlink:href="#linearGradient3587-6-5-1-5-5"
613+ gradientUnits="userSpaceOnUse"
614+ gradientTransform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,22.87868,28.43503)" />
615+ <linearGradient
616+ id="linearGradient3587-6-5-1-5-5">
617+ <stop
618+ id="stop3589-9-2-8-5-6"
619+ style="stop-color:#000000;stop-opacity:1"
620+ offset="0" />
621+ <stop
622+ id="stop3591-7-4-3-0-7"
623+ style="stop-color:#646464;stop-opacity:1"
624+ offset="1" />
625+ </linearGradient>
626+ <linearGradient
627+ x1="25.91716"
628+ y1="-4.1850104"
629+ x2="22.35718"
630+ y2="-7.7449903"
631+ id="linearGradient6693-5"
632+ xlink:href="#linearGradient3587-6-5-1-5-5"
633+ gradientUnits="userSpaceOnUse"
634+ gradientTransform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,32.87868,18.43503)" />
635+ <linearGradient
636+ id="linearGradient3254">
637+ <stop
638+ id="stop3256"
639+ style="stop-color:#000000;stop-opacity:1"
640+ offset="0" />
641+ <stop
642+ id="stop3258"
643+ style="stop-color:#646464;stop-opacity:1"
644+ offset="1" />
645+ </linearGradient>
646+ </defs>
647+ <text
648+ x="337.90759"
649+ y="238.8988"
650+ id="text4087-2-6-5"
651+ xml:space="preserve"
652+ 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
653+ x="337.90759"
654+ y="238.8988"
655+ id="tspan4089-7-2-9" /></text>
656+ <text
657+ x="-1677.7749"
658+ y="1062.9437"
659+ id="text4087-2-6-5-59"
660+ xml:space="preserve"
661+ 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
662+ x="-1677.7749"
663+ y="1062.9437"
664+ id="tspan4089-7-2-9-4" /></text>
665+ <flowRoot
666+ transform="translate(-81.87659,-690.30726)"
667+ id="flowRoot38698"
668+ xml:space="preserve"
669+ 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
670+ id="flowRegion38700"><rect
671+ width="40"
672+ height="23"
673+ x="531"
674+ y="299"
675+ id="rect38702" /></flowRegion><flowPara
676+ id="flowPara38704" /></flowRoot> <text
677+ x="-750.84784"
678+ y="7.7151051"
679+ id="text4087-2-6-5-1"
680+ xml:space="preserve"
681+ 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
682+ x="-750.84784"
683+ y="7.7151051"
684+ id="tspan4089-7-2-9-7" /></text>
685+ <text
686+ x="141.77814"
687+ y="-449.28488"
688+ id="text4087-2-6-5-7"
689+ xml:space="preserve"
690+ 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
691+ x="141.77814"
692+ y="-449.28488"
693+ id="tspan4089-7-2-9-1" /></text>
694+ <text
695+ x="168.26166"
696+ y="-494.31586"
697+ id="text4087-2-6-5-5"
698+ xml:space="preserve"
699+ 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
700+ x="168.26166"
701+ y="-494.31586"
702+ id="tspan4089-7-2-9-6" /></text>
703+ <text
704+ x="-1480.2218"
705+ y="-502.28488"
706+ id="text4087-2-6-5-3"
707+ xml:space="preserve"
708+ 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
709+ x="-1480.2218"
710+ y="-502.28488"
711+ id="tspan4089-7-2-9-18" /></text>
712+ <text
713+ x="134.086"
714+ y="-804.28491"
715+ id="text4087-2-6-5-4"
716+ xml:space="preserve"
717+ 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
718+ x="134.086"
719+ y="-804.28491"
720+ id="tspan4089-7-2-9-9" /></text>
721+ <text
722+ x="1776.6676"
723+ y="-111.61586"
724+ id="text4087-2-6-5-7-1"
725+ xml:space="preserve"
726+ 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
727+ x="1776.6676"
728+ y="-111.61586"
729+ id="tspan4089-7-2-9-1-8" /></text>
730+ <text
731+ x="1803.151"
732+ y="-156.64684"
733+ id="text4087-2-6-5-5-5"
734+ xml:space="preserve"
735+ 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
736+ x="1803.151"
737+ y="-156.64684"
738+ id="tspan4089-7-2-9-6-9" /></text>
739+ <text
740+ x="154.66754"
741+ y="-164.61586"
742+ id="text4087-2-6-5-75"
743+ xml:space="preserve"
744+ 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
745+ x="154.66754"
746+ y="-164.61586"
747+ id="tspan4089-7-2-9-3" /></text>
748+ <text
749+ x="1768.9755"
750+ y="-466.61584"
751+ id="text4087-2-6-5-4-8"
752+ xml:space="preserve"
753+ 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
754+ x="1768.9755"
755+ y="-466.61584"
756+ id="tspan4089-7-2-9-9-8" /></text>
757+ <text
758+ x="-881.88147"
759+ y="-217.77017"
760+ id="text4087-2-6-5-45"
761+ xml:space="preserve"
762+ 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
763+ x="-881.88147"
764+ y="-217.77017"
765+ id="tspan4089-7-2-9-75" /></text>
766+ <text
767+ x="-2897.564"
768+ y="606.27478"
769+ id="text4087-2-6-5-59-0"
770+ xml:space="preserve"
771+ 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
772+ x="-2897.564"
773+ y="606.27478"
774+ id="tspan4089-7-2-9-4-4" /></text>
775+ <g
776+ transform="translate(-338.00604,-450.49095)"
777+ id="layer4">
778+ <text
779+ x="-664.2738"
780+ y="1159.4154"
781+ id="text4087-2-6-5-0"
782+ xml:space="preserve"
783+ 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
784+ x="-664.2738"
785+ y="1159.4154"
786+ id="tspan4089-7-2-9-13" /></text>
787+ </g>
788+ <path
789+ 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"
790+ 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"
791+ id="path6691-1"
792+ inkscape:connector-curvature="0" />
793+</svg>
794
795=== added file 'data/4.svg'
796--- data/4.svg 1970-01-01 00:00:00 +0000
797+++ data/4.svg 2015-04-17 22:11:56 +0000
798@@ -0,0 +1,152 @@
799+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
800+<!-- Created with Inkscape (http://www.inkscape.org/) -->
801+
802+<svg
803+ xmlns:dc="http://purl.org/dc/elements/1.1/"
804+ xmlns:cc="http://creativecommons.org/ns#"
805+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
806+ xmlns:svg="http://www.w3.org/2000/svg"
807+ xmlns="http://www.w3.org/2000/svg"
808+ xmlns:xlink="http://www.w3.org/1999/xlink"
809+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
810+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
811+ width="16"
812+ height="16"
813+ id="svg6179"
814+ version="1.1"
815+ inkscape:version="0.48.4 r9939"
816+ sodipodi:docname="4.svg">
817+ <defs
818+ id="defs6181">
819+ <linearGradient
820+ inkscape:collect="always"
821+ xlink:href="#linearGradient5803-6-2"
822+ id="linearGradient3324"
823+ gradientUnits="userSpaceOnUse"
824+ gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
825+ x1="167.98311"
826+ y1="13.398731"
827+ x2="167.98311"
828+ y2="54.780239" />
829+ <linearGradient
830+ id="linearGradient5803-6-2">
831+ <stop
832+ id="stop5805-7-1"
833+ style="stop-color:#ffffff;stop-opacity:1;"
834+ offset="0" />
835+ <stop
836+ id="stop5807-8-5"
837+ style="stop-color:#e6f4f8;stop-opacity:1;"
838+ offset="1" />
839+ </linearGradient>
840+ </defs>
841+ <sodipodi:namedview
842+ id="base"
843+ pagecolor="#ffffff"
844+ bordercolor="#666666"
845+ borderopacity="1.0"
846+ inkscape:pageopacity="0.0"
847+ inkscape:pageshadow="2"
848+ inkscape:zoom="15.999999"
849+ inkscape:cx="19.708473"
850+ inkscape:cy="2.3269378"
851+ inkscape:document-units="px"
852+ inkscape:current-layer="layer1"
853+ showgrid="true"
854+ inkscape:showpageshadow="false"
855+ inkscape:snap-page="true"
856+ inkscape:window-width="1600"
857+ inkscape:window-height="845"
858+ inkscape:window-x="0"
859+ inkscape:window-y="30"
860+ inkscape:window-maximized="1"
861+ inkscape:snap-bbox="true"
862+ inkscape:bbox-nodes="true">
863+ <inkscape:grid
864+ type="xygrid"
865+ id="grid6187"
866+ empspacing="5"
867+ visible="true"
868+ enabled="true"
869+ snapvisiblegridlinesonly="true" />
870+ </sodipodi:namedview>
871+ <metadata
872+ id="metadata6184">
873+ <rdf:RDF>
874+ <cc:Work
875+ rdf:about="">
876+ <dc:format>image/svg+xml</dc:format>
877+ <dc:type
878+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
879+ <dc:title />
880+ </cc:Work>
881+ </rdf:RDF>
882+ </metadata>
883+ <g
884+ inkscape:label="Layer 1"
885+ inkscape:groupmode="layer"
886+ id="layer1"
887+ transform="translate(0,-1036.3622)">
888+ <g
889+ id="g3017">
890+ <rect
891+ y="1036.3622"
892+ x="1.7e-05"
893+ height="16"
894+ width="16"
895+ id="rect7077"
896+ style="opacity:0;color:#000000;fill:#ffffff;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
897+ <rect
898+ ry="1"
899+ rx="1"
900+ y="1042.3622"
901+ x="4.0000172"
902+ height="3"
903+ width="3"
904+ id="rect7032"
905+ 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" />
906+ <path
907+ sodipodi:nodetypes="scccssssssss"
908+ inkscape:connector-curvature="0"
909+ id="rect7064"
910+ 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"
911+ style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
912+ <rect
913+ 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"
914+ id="rect7069"
915+ width="3"
916+ height="3"
917+ x="9.0000172"
918+ y="1042.3622"
919+ rx="1"
920+ ry="1" />
921+ <rect
922+ 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"
923+ id="rect7073"
924+ width="3"
925+ height="3"
926+ x="4.0000172"
927+ y="1046.3622"
928+ rx="1"
929+ ry="1" />
930+ <rect
931+ ry="1"
932+ rx="1"
933+ y="1046.3622"
934+ x="9.0000172"
935+ height="3"
936+ width="3"
937+ id="rect7075"
938+ 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" />
939+ <rect
940+ 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"
941+ id="rect7073-5"
942+ width="3"
943+ height="3"
944+ x="4"
945+ y="1042.3622"
946+ rx="1"
947+ ry="1" />
948+ </g>
949+ </g>
950+</svg>
951
952=== added file 'data/5.svg'
953--- data/5.svg 1970-01-01 00:00:00 +0000
954+++ data/5.svg 2015-04-17 22:11:56 +0000
955@@ -0,0 +1,117 @@
956+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
957+<!-- Created with Inkscape (http://www.inkscape.org/) -->
958+
959+<svg
960+ xmlns:dc="http://purl.org/dc/elements/1.1/"
961+ xmlns:cc="http://creativecommons.org/ns#"
962+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
963+ xmlns:svg="http://www.w3.org/2000/svg"
964+ xmlns="http://www.w3.org/2000/svg"
965+ xmlns:xlink="http://www.w3.org/1999/xlink"
966+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
967+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
968+ width="16"
969+ height="16"
970+ id="svg6179"
971+ version="1.1"
972+ inkscape:version="0.48.4 r9939"
973+ sodipodi:docname="5.svg">
974+ <defs
975+ id="defs6181">
976+ <linearGradient
977+ inkscape:collect="always"
978+ xlink:href="#linearGradient5803-6-2"
979+ id="linearGradient3324"
980+ gradientUnits="userSpaceOnUse"
981+ gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
982+ x1="167.98311"
983+ y1="13.398731"
984+ x2="167.98311"
985+ y2="54.780239" />
986+ <linearGradient
987+ id="linearGradient5803-6-2">
988+ <stop
989+ id="stop5805-7-1"
990+ style="stop-color:#ffffff;stop-opacity:1;"
991+ offset="0" />
992+ <stop
993+ id="stop5807-8-5"
994+ style="stop-color:#e6f4f8;stop-opacity:1;"
995+ offset="1" />
996+ </linearGradient>
997+ <linearGradient
998+ inkscape:collect="always"
999+ xlink:href="#linearGradient3680-6-6-6-3-7-1-9"
1000+ id="linearGradient3029"
1001+ gradientUnits="userSpaceOnUse"
1002+ gradientTransform="matrix(2.6375431,0,0,2.6375431,1.3780184,2.797842)"
1003+ x1="20"
1004+ y1="26.000008"
1005+ x2="20"
1006+ y2="13.000008" />
1007+ <linearGradient
1008+ id="linearGradient3680-6-6-6-3-7-1-9">
1009+ <stop
1010+ id="stop3682-4-6-1-3-7-7-1"
1011+ style="stop-color:#dcdcdc;stop-opacity:1"
1012+ offset="0" />
1013+ <stop
1014+ id="stop3684-8-5-8-0-2-6-7"
1015+ style="stop-color:#ffffff;stop-opacity:1"
1016+ offset="1" />
1017+ </linearGradient>
1018+ </defs>
1019+ <sodipodi:namedview
1020+ id="base"
1021+ pagecolor="#ffffff"
1022+ bordercolor="#666666"
1023+ borderopacity="1.0"
1024+ inkscape:pageopacity="0.0"
1025+ inkscape:pageshadow="2"
1026+ inkscape:zoom="22.627416"
1027+ inkscape:cx="14.077767"
1028+ inkscape:cy="7.480704"
1029+ inkscape:document-units="px"
1030+ inkscape:current-layer="layer1"
1031+ showgrid="true"
1032+ inkscape:showpageshadow="false"
1033+ inkscape:snap-page="true"
1034+ inkscape:window-width="1600"
1035+ inkscape:window-height="845"
1036+ inkscape:window-x="0"
1037+ inkscape:window-y="30"
1038+ inkscape:window-maximized="1"
1039+ inkscape:snap-bbox="true"
1040+ inkscape:bbox-nodes="true">
1041+ <inkscape:grid
1042+ type="xygrid"
1043+ id="grid6187"
1044+ empspacing="5"
1045+ visible="true"
1046+ enabled="true"
1047+ snapvisiblegridlinesonly="true" />
1048+ </sodipodi:namedview>
1049+ <metadata
1050+ id="metadata6184">
1051+ <rdf:RDF>
1052+ <cc:Work
1053+ rdf:about="">
1054+ <dc:format>image/svg+xml</dc:format>
1055+ <dc:type
1056+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1057+ <dc:title />
1058+ </cc:Work>
1059+ </rdf:RDF>
1060+ </metadata>
1061+ <g
1062+ inkscape:label="Layer 1"
1063+ inkscape:groupmode="layer"
1064+ id="layer1"
1065+ transform="translate(0,-1036.3622)">
1066+ <path
1067+ 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"
1068+ id="path3985-0"
1069+ inkscape:connector-curvature="0"
1070+ 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" />
1071+ </g>
1072+</svg>
1073
1074=== added file 'data/6.svg'
1075--- data/6.svg 1970-01-01 00:00:00 +0000
1076+++ data/6.svg 2015-04-17 22:11:56 +0000
1077@@ -0,0 +1,131 @@
1078+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1079+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1080+
1081+<svg
1082+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1083+ xmlns:cc="http://creativecommons.org/ns#"
1084+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1085+ xmlns:svg="http://www.w3.org/2000/svg"
1086+ xmlns="http://www.w3.org/2000/svg"
1087+ xmlns:xlink="http://www.w3.org/1999/xlink"
1088+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1089+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1090+ width="16"
1091+ height="16"
1092+ id="svg6179"
1093+ version="1.1"
1094+ inkscape:version="0.48.4 r9939"
1095+ sodipodi:docname="6.svg">
1096+ <defs
1097+ id="defs6181">
1098+ <linearGradient
1099+ inkscape:collect="always"
1100+ xlink:href="#linearGradient5803-6-2"
1101+ id="linearGradient3324"
1102+ gradientUnits="userSpaceOnUse"
1103+ gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
1104+ x1="167.98311"
1105+ y1="13.398731"
1106+ x2="167.98311"
1107+ y2="54.780239" />
1108+ <linearGradient
1109+ id="linearGradient5803-6-2">
1110+ <stop
1111+ id="stop5805-7-1"
1112+ style="stop-color:#ffffff;stop-opacity:1;"
1113+ offset="0" />
1114+ <stop
1115+ id="stop5807-8-5"
1116+ style="stop-color:#e6f4f8;stop-opacity:1;"
1117+ offset="1" />
1118+ </linearGradient>
1119+ </defs>
1120+ <sodipodi:namedview
1121+ id="base"
1122+ pagecolor="#ffffff"
1123+ bordercolor="#666666"
1124+ borderopacity="1.0"
1125+ inkscape:pageopacity="0.0"
1126+ inkscape:pageshadow="2"
1127+ inkscape:zoom="11.313708"
1128+ inkscape:cx="19.592793"
1129+ inkscape:cy="1.191976"
1130+ inkscape:document-units="px"
1131+ inkscape:current-layer="layer1"
1132+ showgrid="true"
1133+ inkscape:showpageshadow="false"
1134+ inkscape:snap-page="true"
1135+ inkscape:window-width="1600"
1136+ inkscape:window-height="845"
1137+ inkscape:window-x="0"
1138+ inkscape:window-y="30"
1139+ inkscape:window-maximized="1"
1140+ inkscape:snap-bbox="true"
1141+ inkscape:bbox-nodes="true">
1142+ <inkscape:grid
1143+ type="xygrid"
1144+ id="grid6187"
1145+ empspacing="5"
1146+ visible="true"
1147+ enabled="true"
1148+ snapvisiblegridlinesonly="true" />
1149+ </sodipodi:namedview>
1150+ <metadata
1151+ id="metadata6184">
1152+ <rdf:RDF>
1153+ <cc:Work
1154+ rdf:about="">
1155+ <dc:format>image/svg+xml</dc:format>
1156+ <dc:type
1157+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1158+ <dc:title />
1159+ </cc:Work>
1160+ </rdf:RDF>
1161+ </metadata>
1162+ <g
1163+ inkscape:label="Layer 1"
1164+ inkscape:groupmode="layer"
1165+ id="layer1"
1166+ transform="translate(0,-1036.3622)">
1167+ <g
1168+ id="g7007"
1169+ transform="translate(0,1.7382813e-5)"
1170+ style="fill:#ffffff">
1171+ <rect
1172+ transform="translate(0,1036.3622)"
1173+ y="0"
1174+ x="0"
1175+ height="16"
1176+ width="16"
1177+ id="rect7005"
1178+ 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" />
1179+ <rect
1180+ ry="1"
1181+ rx="1"
1182+ y="1037.3622"
1183+ x="0"
1184+ height="6"
1185+ width="8"
1186+ id="rect6231"
1187+ 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" />
1188+ <rect
1189+ 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"
1190+ id="rect6233"
1191+ width="7"
1192+ height="5.0000172"
1193+ x="9"
1194+ y="1038.3622"
1195+ rx="1.0000174"
1196+ ry="1.0000174" />
1197+ <rect
1198+ ry="1.0000174"
1199+ rx="1.0000174"
1200+ y="1044.3622"
1201+ x="3"
1202+ height="7.0000415"
1203+ width="10"
1204+ id="rect7003"
1205+ 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" />
1206+ </g>
1207+ </g>
1208+</svg>
1209
1210=== added file 'data/7.svg'
1211--- data/7.svg 1970-01-01 00:00:00 +0000
1212+++ data/7.svg 2015-04-17 22:11:56 +0000
1213@@ -0,0 +1,131 @@
1214+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1215+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1216+
1217+<svg
1218+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1219+ xmlns:cc="http://creativecommons.org/ns#"
1220+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1221+ xmlns:svg="http://www.w3.org/2000/svg"
1222+ xmlns="http://www.w3.org/2000/svg"
1223+ xmlns:xlink="http://www.w3.org/1999/xlink"
1224+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1225+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1226+ width="16"
1227+ height="16"
1228+ id="svg6179"
1229+ version="1.1"
1230+ inkscape:version="0.48.4 r9939"
1231+ sodipodi:docname="6.svg">
1232+ <defs
1233+ id="defs6181">
1234+ <linearGradient
1235+ inkscape:collect="always"
1236+ xlink:href="#linearGradient5803-6-2"
1237+ id="linearGradient3324"
1238+ gradientUnits="userSpaceOnUse"
1239+ gradientTransform="matrix(0.4265442,0,0,0.41469579,-54.439253,2.5228637)"
1240+ x1="167.98311"
1241+ y1="13.398731"
1242+ x2="167.98311"
1243+ y2="54.780239" />
1244+ <linearGradient
1245+ id="linearGradient5803-6-2">
1246+ <stop
1247+ id="stop5805-7-1"
1248+ style="stop-color:#ffffff;stop-opacity:1;"
1249+ offset="0" />
1250+ <stop
1251+ id="stop5807-8-5"
1252+ style="stop-color:#e6f4f8;stop-opacity:1;"
1253+ offset="1" />
1254+ </linearGradient>
1255+ </defs>
1256+ <sodipodi:namedview
1257+ id="base"
1258+ pagecolor="#ffffff"
1259+ bordercolor="#666666"
1260+ borderopacity="1.0"
1261+ inkscape:pageopacity="0.0"
1262+ inkscape:pageshadow="2"
1263+ inkscape:zoom="11.313708"
1264+ inkscape:cx="19.592793"
1265+ inkscape:cy="1.191976"
1266+ inkscape:document-units="px"
1267+ inkscape:current-layer="layer1"
1268+ showgrid="true"
1269+ inkscape:showpageshadow="false"
1270+ inkscape:snap-page="true"
1271+ inkscape:window-width="1600"
1272+ inkscape:window-height="845"
1273+ inkscape:window-x="0"
1274+ inkscape:window-y="30"
1275+ inkscape:window-maximized="1"
1276+ inkscape:snap-bbox="true"
1277+ inkscape:bbox-nodes="true">
1278+ <inkscape:grid
1279+ type="xygrid"
1280+ id="grid6187"
1281+ empspacing="5"
1282+ visible="true"
1283+ enabled="true"
1284+ snapvisiblegridlinesonly="true" />
1285+ </sodipodi:namedview>
1286+ <metadata
1287+ id="metadata6184">
1288+ <rdf:RDF>
1289+ <cc:Work
1290+ rdf:about="">
1291+ <dc:format>image/svg+xml</dc:format>
1292+ <dc:type
1293+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1294+ <dc:title />
1295+ </cc:Work>
1296+ </rdf:RDF>
1297+ </metadata>
1298+ <g
1299+ inkscape:label="Layer 1"
1300+ inkscape:groupmode="layer"
1301+ id="layer1"
1302+ transform="translate(0,-1036.3622)">
1303+ <g
1304+ id="g7007"
1305+ transform="translate(0,1.7382813e-5)"
1306+ style="fill:#ffffff">
1307+ <rect
1308+ transform="translate(0,1036.3622)"
1309+ y="0"
1310+ x="0"
1311+ height="16"
1312+ width="16"
1313+ id="rect7005"
1314+ 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" />
1315+ <rect
1316+ ry="1"
1317+ rx="1"
1318+ y="1037.3622"
1319+ x="0"
1320+ height="6"
1321+ width="8"
1322+ id="rect6231"
1323+ 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" />
1324+ <rect
1325+ 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"
1326+ id="rect6233"
1327+ width="7"
1328+ height="5.0000172"
1329+ x="9"
1330+ y="1038.3622"
1331+ rx="1.0000174"
1332+ ry="1.0000174" />
1333+ <rect
1334+ ry="1.0000174"
1335+ rx="1.0000174"
1336+ y="1044.3622"
1337+ x="3"
1338+ height="7.0000415"
1339+ width="10"
1340+ id="rect7003"
1341+ 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" />
1342+ </g>
1343+ </g>
1344+</svg>
1345
1346=== added file 'data/button.svg'
1347--- data/button.svg 1970-01-01 00:00:00 +0000
1348+++ data/button.svg 2015-04-17 22:11:56 +0000
1349@@ -0,0 +1,250 @@
1350+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1351+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1352+
1353+<svg
1354+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1355+ xmlns:cc="http://creativecommons.org/ns#"
1356+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1357+ xmlns:svg="http://www.w3.org/2000/svg"
1358+ xmlns="http://www.w3.org/2000/svg"
1359+ xmlns:xlink="http://www.w3.org/1999/xlink"
1360+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1361+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1362+ width="60"
1363+ height="60"
1364+ id="svg14656"
1365+ version="1.1"
1366+ inkscape:version="0.48.4 r9939"
1367+ sodipodi:docname="button.svg">
1368+ <defs
1369+ id="defs14658">
1370+ <radialGradient
1371+ inkscape:collect="always"
1372+ xlink:href="#linearGradient14616"
1373+ id="radialGradient14622"
1374+ cx="431.02756"
1375+ cy="229.22406"
1376+ fx="431.02756"
1377+ fy="229.22406"
1378+ r="23.49752"
1379+ gradientUnits="userSpaceOnUse"
1380+ gradientTransform="matrix(0,2.18863,-1,-5.9483293e-6,660.25162,-714.13442)" />
1381+ <linearGradient
1382+ inkscape:collect="always"
1383+ id="linearGradient14616">
1384+ <stop
1385+ style="stop-color:#fafaf7;stop-opacity:1;"
1386+ offset="0"
1387+ id="stop14618" />
1388+ <stop
1389+ style="stop-color:#fafaf7;stop-opacity:0;"
1390+ offset="1"
1391+ id="stop14620" />
1392+ </linearGradient>
1393+ <radialGradient
1394+ inkscape:collect="always"
1395+ xlink:href="#linearGradient14602"
1396+ id="radialGradient14608"
1397+ cx="426.38193"
1398+ cy="238.05771"
1399+ fx="426.38193"
1400+ fy="238.05771"
1401+ r="22.98163"
1402+ gradientUnits="userSpaceOnUse"
1403+ gradientTransform="matrix(1.3634541,0.7871906,-0.90254772,1.5632585,59.407613,-469.83866)" />
1404+ <linearGradient
1405+ inkscape:collect="always"
1406+ id="linearGradient14602">
1407+ <stop
1408+ id="stop14606"
1409+ offset="0"
1410+ style="stop-color:#4fd32b;stop-opacity:1" />
1411+ <stop
1412+ id="stop14604"
1413+ offset="1"
1414+ style="stop-color:#45a221;stop-opacity:1" />
1415+ </linearGradient>
1416+ <radialGradient
1417+ r="22.98163"
1418+ fy="238.05771"
1419+ fx="426.38193"
1420+ cy="238.05771"
1421+ cx="426.38193"
1422+ gradientTransform="matrix(1.3634541,0.7871906,-0.90254772,1.5632585,59.407613,-469.83866)"
1423+ gradientUnits="userSpaceOnUse"
1424+ id="radialGradient14654"
1425+ xlink:href="#linearGradient14602"
1426+ inkscape:collect="always" />
1427+ <radialGradient
1428+ inkscape:collect="always"
1429+ xlink:href="#linearGradient14616-0"
1430+ id="radialGradient14622-1"
1431+ cx="431.02756"
1432+ cy="229.22406"
1433+ fx="431.02756"
1434+ fy="229.22406"
1435+ r="23.49752"
1436+ gradientUnits="userSpaceOnUse"
1437+ gradientTransform="matrix(0,2.18863,-1,-5.9483293e-6,660.25162,-714.13442)" />
1438+ <linearGradient
1439+ inkscape:collect="always"
1440+ id="linearGradient14616-0">
1441+ <stop
1442+ style="stop-color:#fafaf7;stop-opacity:1;"
1443+ offset="0"
1444+ id="stop14618-6" />
1445+ <stop
1446+ style="stop-color:#fafaf7;stop-opacity:0;"
1447+ offset="1"
1448+ id="stop14620-3" />
1449+ </linearGradient>
1450+ <filter
1451+ color-interpolation-filters="sRGB"
1452+ inkscape:collect="always"
1453+ id="filter14628-0">
1454+ <feGaussianBlur
1455+ inkscape:collect="always"
1456+ stdDeviation="0.77575123"
1457+ id="feGaussianBlur14630-1" />
1458+ </filter>
1459+ <radialGradient
1460+ inkscape:collect="always"
1461+ xlink:href="#linearGradient14602-6"
1462+ id="radialGradient14608-6"
1463+ cx="426.38193"
1464+ cy="238.05771"
1465+ fx="426.38193"
1466+ fy="238.05771"
1467+ r="22.98163"
1468+ gradientUnits="userSpaceOnUse"
1469+ gradientTransform="matrix(1.3634541,0.7871906,-0.90254772,1.5632585,59.407613,-469.83866)" />
1470+ <linearGradient
1471+ inkscape:collect="always"
1472+ id="linearGradient14602-6">
1473+ <stop
1474+ id="stop14606-3"
1475+ offset="0"
1476+ style="stop-color:#4fd32b;stop-opacity:1" />
1477+ <stop
1478+ id="stop14604-8"
1479+ offset="1"
1480+ style="stop-color:#45a221;stop-opacity:1" />
1481+ </linearGradient>
1482+ <filter
1483+ color-interpolation-filters="sRGB"
1484+ inkscape:collect="always"
1485+ id="filter14893">
1486+ <feGaussianBlur
1487+ inkscape:collect="always"
1488+ stdDeviation="1.449292"
1489+ id="feGaussianBlur14895" />
1490+ </filter>
1491+ <radialGradient
1492+ inkscape:collect="always"
1493+ xlink:href="#linearGradient14602-6"
1494+ id="radialGradient14962"
1495+ gradientUnits="userSpaceOnUse"
1496+ gradientTransform="matrix(1.3634541,0.7871906,-0.90254772,1.5632585,59.407613,-469.83866)"
1497+ cx="426.38193"
1498+ cy="238.05771"
1499+ fx="426.38193"
1500+ fy="238.05771"
1501+ r="22.98163" />
1502+ <radialGradient
1503+ inkscape:collect="always"
1504+ xlink:href="#linearGradient14616-0"
1505+ id="radialGradient14964"
1506+ gradientUnits="userSpaceOnUse"
1507+ gradientTransform="matrix(0,2.18863,-1,-5.9483293e-6,660.25162,-714.13442)"
1508+ cx="431.02756"
1509+ cy="229.22406"
1510+ fx="431.02756"
1511+ fy="229.22406"
1512+ r="23.49752" />
1513+ </defs>
1514+ <sodipodi:namedview
1515+ id="base"
1516+ pagecolor="#ffffff"
1517+ bordercolor="#666666"
1518+ borderopacity="1.0"
1519+ inkscape:pageopacity="0.0"
1520+ inkscape:pageshadow="2"
1521+ inkscape:zoom="15.839192"
1522+ inkscape:cx="39.545896"
1523+ inkscape:cy="14.200556"
1524+ inkscape:document-units="px"
1525+ inkscape:current-layer="layer1"
1526+ showgrid="true"
1527+ inkscape:showpageshadow="false"
1528+ fit-margin-top="0"
1529+ fit-margin-left="0"
1530+ fit-margin-right="0"
1531+ fit-margin-bottom="0"
1532+ inkscape:window-width="1600"
1533+ inkscape:window-height="845"
1534+ inkscape:window-x="0"
1535+ inkscape:window-y="30"
1536+ inkscape:window-maximized="1">
1537+ <inkscape:grid
1538+ type="xygrid"
1539+ id="grid14695"
1540+ empspacing="5"
1541+ visible="true"
1542+ enabled="true"
1543+ snapvisiblegridlinesonly="true"
1544+ originx="2.6625228px"
1545+ originy="4.3894395px" />
1546+ </sodipodi:namedview>
1547+ <metadata
1548+ id="metadata14661">
1549+ <rdf:RDF>
1550+ <cc:Work
1551+ rdf:about="">
1552+ <dc:format>image/svg+xml</dc:format>
1553+ <dc:type
1554+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1555+ <dc:title />
1556+ </cc:Work>
1557+ </rdf:RDF>
1558+ </metadata>
1559+ <g
1560+ inkscape:label="Layer 1"
1561+ inkscape:groupmode="layer"
1562+ id="layer1"
1563+ transform="translate(-227.47933,-603.74626)">
1564+ <g
1565+ id="g14957"
1566+ transform="matrix(1.2120396,0,0,1.2120396,-137.94486,-182.03628)">
1567+ <path
1568+ sodipodi:type="arc"
1569+ 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"
1570+ id="path14879"
1571+ sodipodi:cx="431.11078"
1572+ sodipodi:cy="254.11467"
1573+ sodipodi:rx="22.98163"
1574+ sodipodi:ry="22.98163"
1575+ 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"
1576+ transform="matrix(1.0133929,0,0,1.0133929,-110.57985,416.64571)" />
1577+ <path
1578+ transform="matrix(1.0133929,0,0,1.0133929,-110.57985,414.64571)"
1579+ 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"
1580+ sodipodi:ry="22.98163"
1581+ sodipodi:rx="22.98163"
1582+ sodipodi:cy="254.11467"
1583+ sodipodi:cx="431.11078"
1584+ id="path14592"
1585+ 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"
1586+ sodipodi:type="arc" />
1587+ <path
1588+ sodipodi:type="arc"
1589+ 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"
1590+ id="path14612"
1591+ sodipodi:cx="431.11078"
1592+ sodipodi:cy="254.11467"
1593+ sodipodi:rx="22.98163"
1594+ sodipodi:ry="22.98163"
1595+ 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"
1596+ transform="matrix(0.95133877,0,0,0.95133877,-83.827446,430.41457)" />
1597+ </g>
1598+ </g>
1599+</svg>
1600
1601=== added file 'data/display.svg'
1602--- data/display.svg 1970-01-01 00:00:00 +0000
1603+++ data/display.svg 2015-04-17 22:11:56 +0000
1604@@ -0,0 +1,220 @@
1605+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1606+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1607+
1608+<svg
1609+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1610+ xmlns:cc="http://creativecommons.org/ns#"
1611+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1612+ xmlns:svg="http://www.w3.org/2000/svg"
1613+ xmlns="http://www.w3.org/2000/svg"
1614+ xmlns:xlink="http://www.w3.org/1999/xlink"
1615+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1616+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1617+ width="490"
1618+ height="333"
1619+ id="svg13953"
1620+ version="1.1"
1621+ inkscape:version="0.48.4 r9939"
1622+ sodipodi:docname="display.svg">
1623+ <defs
1624+ id="defs13955">
1625+ <linearGradient
1626+ gradientTransform="translate(427.70904,-139.65646)"
1627+ inkscape:collect="always"
1628+ xlink:href="#linearGradient14513"
1629+ id="linearGradient14519"
1630+ x1="-183.60603"
1631+ y1="357.91989"
1632+ x2="-183.60603"
1633+ y2="598.4118"
1634+ gradientUnits="userSpaceOnUse" />
1635+ <linearGradient
1636+ inkscape:collect="always"
1637+ id="linearGradient14513">
1638+ <stop
1639+ style="stop-color:#fafaf7;stop-opacity:1;"
1640+ offset="0"
1641+ id="stop14515" />
1642+ <stop
1643+ style="stop-color:#fafaf7;stop-opacity:0;"
1644+ offset="1"
1645+ id="stop14517" />
1646+ </linearGradient>
1647+ <radialGradient
1648+ inkscape:collect="always"
1649+ xlink:href="#linearGradient13988"
1650+ id="radialGradient13994"
1651+ cx="-272.18756"
1652+ cy="333.45459"
1653+ fx="-272.18756"
1654+ fy="333.45459"
1655+ r="190"
1656+ gradientTransform="matrix(1.3349797,0.35770673,-0.23322348,0.87040189,165.59173,190.85596)"
1657+ gradientUnits="userSpaceOnUse" />
1658+ <linearGradient
1659+ inkscape:collect="always"
1660+ id="linearGradient13988">
1661+ <stop
1662+ id="stop13992"
1663+ offset="0"
1664+ style="stop-color:#5fbbe6;stop-opacity:1" />
1665+ <stop
1666+ id="stop13990"
1667+ offset="1"
1668+ style="stop-color:#5a94db;stop-opacity:1;" />
1669+ </linearGradient>
1670+ <radialGradient
1671+ r="190"
1672+ fy="333.45459"
1673+ fx="-272.18756"
1674+ cy="333.45459"
1675+ cx="-272.18756"
1676+ gradientTransform="matrix(1.3349797,0.35770673,-0.23322348,0.87040189,593.30077,51.199499)"
1677+ gradientUnits="userSpaceOnUse"
1678+ id="radialGradient14542"
1679+ xlink:href="#linearGradient13988"
1680+ inkscape:collect="always" />
1681+ <radialGradient
1682+ inkscape:collect="always"
1683+ xlink:href="#linearGradient13988-9"
1684+ id="radialGradient13994-2"
1685+ cx="-272.18756"
1686+ cy="333.45459"
1687+ fx="-272.18756"
1688+ fy="333.45459"
1689+ r="190"
1690+ gradientTransform="matrix(1.3349797,0.35770673,-0.23322348,0.87040189,165.59173,190.85596)"
1691+ gradientUnits="userSpaceOnUse" />
1692+ <linearGradient
1693+ inkscape:collect="always"
1694+ id="linearGradient13988-9">
1695+ <stop
1696+ id="stop13992-5"
1697+ offset="0"
1698+ style="stop-color:#5fbbe6;stop-opacity:1" />
1699+ <stop
1700+ id="stop13990-0"
1701+ offset="1"
1702+ style="stop-color:#5a94db;stop-opacity:1;" />
1703+ </linearGradient>
1704+ <linearGradient
1705+ inkscape:collect="always"
1706+ xlink:href="#linearGradient14513-6"
1707+ id="linearGradient14519-2"
1708+ x1="-183.60603"
1709+ y1="357.91989"
1710+ x2="-183.60603"
1711+ y2="598.4118"
1712+ gradientUnits="userSpaceOnUse" />
1713+ <linearGradient
1714+ inkscape:collect="always"
1715+ id="linearGradient14513-6">
1716+ <stop
1717+ style="stop-color:#fafaf7;stop-opacity:1;"
1718+ offset="0"
1719+ id="stop14515-2" />
1720+ <stop
1721+ style="stop-color:#fafaf7;stop-opacity:0;"
1722+ offset="1"
1723+ id="stop14517-4" />
1724+ </linearGradient>
1725+ <linearGradient
1726+ inkscape:collect="always"
1727+ xlink:href="#linearGradient14513-6"
1728+ id="linearGradient3033"
1729+ gradientUnits="userSpaceOnUse"
1730+ x1="-183.60603"
1731+ y1="357.91989"
1732+ x2="-183.60603"
1733+ y2="598.4118"
1734+ gradientTransform="matrix(1.2894737,0,0,1.4734513,497.71155,-365.85158)" />
1735+ <radialGradient
1736+ inkscape:collect="always"
1737+ xlink:href="#linearGradient13988-9"
1738+ id="radialGradient3037"
1739+ gradientUnits="userSpaceOnUse"
1740+ gradientTransform="matrix(1.7214212,0.52706345,-0.30073554,1.2824948,711.23773,-84.634614)"
1741+ cx="-272.18756"
1742+ cy="333.45459"
1743+ fx="-272.18756"
1744+ fy="333.45459"
1745+ r="190" />
1746+ </defs>
1747+ <sodipodi:namedview
1748+ id="base"
1749+ pagecolor="#ffffff"
1750+ bordercolor="#666666"
1751+ borderopacity="1.0"
1752+ inkscape:pageopacity="0.0"
1753+ inkscape:pageshadow="2"
1754+ inkscape:zoom="0.7"
1755+ inkscape:cx="303.33216"
1756+ inkscape:cy="42.332147"
1757+ inkscape:document-units="px"
1758+ inkscape:current-layer="layer1"
1759+ showgrid="false"
1760+ fit-margin-top="0"
1761+ fit-margin-left="0"
1762+ fit-margin-right="0"
1763+ fit-margin-bottom="0"
1764+ inkscape:showpageshadow="false"
1765+ inkscape:snap-page="true"
1766+ inkscape:snap-nodes="false"
1767+ inkscape:snap-bbox="true"
1768+ inkscape:window-width="1600"
1769+ inkscape:window-height="845"
1770+ inkscape:window-x="0"
1771+ inkscape:window-y="30"
1772+ inkscape:window-maximized="1">
1773+ <inkscape:grid
1774+ type="xygrid"
1775+ id="grid13968"
1776+ empspacing="5"
1777+ visible="true"
1778+ enabled="true"
1779+ snapvisiblegridlinesonly="true"
1780+ originx="0px"
1781+ originy="0px" />
1782+ </sodipodi:namedview>
1783+ <metadata
1784+ id="metadata13958">
1785+ <rdf:RDF>
1786+ <cc:Work
1787+ rdf:about="">
1788+ <dc:format>image/svg+xml</dc:format>
1789+ <dc:type
1790+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1791+ </cc:Work>
1792+ </rdf:RDF>
1793+ </metadata>
1794+ <g
1795+ inkscape:label="Layer 1"
1796+ inkscape:groupmode="layer"
1797+ id="layer1"
1798+ transform="translate(4.1875,-118.09375)">
1799+ <g
1800+ id="g3005"
1801+ transform="translate(55.044461,-53.452473)">
1802+ <rect
1803+ y="172.33047"
1804+ x="-58.542763"
1805+ height="331.52655"
1806+ width="488.71054"
1807+ id="rect13940"
1808+ 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" />
1809+ <path
1810+ sodipodi:nodetypes="ccccc"
1811+ inkscape:connector-curvature="0"
1812+ id="rect13998"
1813+ d="m -57.88793,173.05201 487.40086,0 0,102.94808 -487.40086,112.36888 z"
1814+ 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" />
1815+ <rect
1816+ 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"
1817+ id="rect14003"
1818+ width="486.10129"
1819+ height="328.57635"
1820+ x="-57.243176"
1821+ y="173.80028" />
1822+ </g>
1823+ </g>
1824+</svg>
1825
1826=== removed file 'data/hotcornerdisplay.png'
1827Binary files data/hotcornerdisplay.png 2012-08-07 08:42:42 +0000 and data/hotcornerdisplay.png 1970-01-01 00:00:00 +0000 differ
1828=== modified file 'src/CMakeLists.txt'
1829--- src/CMakeLists.txt 2015-03-31 06:23:29 +0000
1830+++ src/CMakeLists.txt 2015-04-17 22:11:56 +0000
1831@@ -17,6 +17,7 @@
1832 Dock.vala
1833 desktop-plug.vala
1834 GalaSettings.vala
1835+ Hotcorners.vala
1836 Wallpaper.vala
1837 SlingshotSettings.vala
1838 Cache.vala
1839
1840=== added file 'src/Hotcorners.vala'
1841--- src/Hotcorners.vala 1970-01-01 00:00:00 +0000
1842+++ src/Hotcorners.vala 2015-04-17 22:11:56 +0000
1843@@ -0,0 +1,526 @@
1844+/***
1845+ Copyright (C) 2014 Peter Arnold
1846+
1847+ This program is free software: you can redistribute it and/or modify
1848+ it under the terms of the GNU General Public License as published by
1849+ the Free Software Foundation, either version 3 of the License, or
1850+ (at your option) any later version.
1851+
1852+ This program is distributed in the hope that it will be useful,
1853+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1854+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1855+ GNU General Public License for more details.
1856+
1857+ You should have received a copy of the GNU General Public License
1858+ along with this program. If not, see <http://www.gnu.org/licenses/>.
1859+***/
1860+
1861+public class Hotcorners : Gtk.Grid {
1862+
1863+ public Hotcorners () {
1864+ column_spacing = 12;
1865+ margin = 32;
1866+ margin_top = 15;
1867+ column_homogeneous = true;
1868+
1869+ Gtk.Overlay overlay;
1870+ var hotcorners = new HotcornerWidget (out overlay);
1871+ hotcorners.set_halign (Gtk.Align.CENTER);
1872+ attach (overlay, 1, 0, 1, 1);
1873+ }
1874+
1875+ /**
1876+ * Methods to get and set hotcorner selection
1877+ **/
1878+
1879+ public static void set_custom_command (string corner_string, string command) {
1880+ var line = BehaviorSettings.get_default ().hotcorner_custom_command;
1881+ var parts = line.split (";;");
1882+ var temp_line = "";
1883+ bool exist = false;
1884+
1885+ foreach (var part in parts){
1886+ var details = part.split (":");
1887+ if (corner_string == details[0]){
1888+ details[1] = command;
1889+ exist = true;
1890+ }
1891+ if (details.length > 1)
1892+ temp_line += details[0]+":"+details[1]+";;";
1893+ }
1894+ if (!exist)
1895+ temp_line += corner_string+":"+command+";;";
1896+
1897+ BehaviorSettings.get_default ().hotcorner_custom_command = temp_line;
1898+ }
1899+
1900+ public static string get_custom_command (string corner_string) {
1901+ var line = BehaviorSettings.get_default ().hotcorner_custom_command;
1902+ var parts = line.split (";;");
1903+ foreach (var part in parts){
1904+ var details = part.split (":");
1905+ if (details.length == 1)
1906+ return part;
1907+ if (corner_string == details[0])
1908+ return details [1];
1909+ }
1910+ return "";
1911+ }
1912+
1913+ public static int get_selection (string corner) {
1914+ return BehaviorSettings.get_default ().schema.get_enum (corner);
1915+ }
1916+
1917+ public static void choose_hotcorner (string corner, int command) {
1918+ BehaviorSettings.get_default ().schema.set_enum (corner, command);
1919+ }
1920+}
1921+
1922+
1923+public class HotcornerWidget : Gtk.DrawingArea {
1924+ // gala corner names
1925+ private const string[] corner_string = { "hotcorner-topleft",
1926+ "hotcorner-topright",
1927+ "hotcorner-bottomleft",
1928+ "hotcorner-bottomright" };
1929+
1930+ // names of the hotcorner commands, the corresponding icon is named with "id.png"
1931+ // position in the array is the id of the command
1932+ private string[] hotcorner_commands = { _("Do Nothing"), _("Multitasking View"),
1933+ _("Maximize Current Window"), _("Minimize Current Window"),
1934+ _("Show Applications Menu"), _("Execute Custom Command"),
1935+ _("Window Overview"), _("Show All Windows") };
1936+
1937+ private Gdk.Pixbuf[] hotcorner_icons;
1938+ private Gdk.Pixbuf button_icon;
1939+ private Gdk.Pixbuf back_image;
1940+ // calculate topleft, topright, bottomleft, bottomright corner points
1941+ private int[,] corners = {{delta_pic[0] + delta_border, delta_pic[1] + delta_border},
1942+ {background_width + delta_pic[0] - delta_border, delta_pic[1] + delta_border},
1943+ {delta_pic[0] + delta_border, background_height + delta_pic[1] - delta_border},
1944+ {background_width + delta_pic[0] - delta_border,
1945+ background_height + delta_pic[1] - delta_border}};
1946+
1947+ // status if corner is hoovered
1948+ private bool[] hoovered_corner = {false, false, false, false};
1949+ // bool if popover is shown
1950+ private bool pop_mode = false;
1951+ // selection if hovered over a menu entry
1952+ private int hover_selection = -1;
1953+
1954+ private Gtk.Overlay overlay;
1955+ private HotcornerWidget background;
1956+ private Gtk.Popover popover;
1957+
1958+ // pixel size of the background picture
1959+ private const int background_width = 490;
1960+ private const int background_height = 333;
1961+ // radius of the quarter circles in the corner
1962+ private const int radius = 50;
1963+ // x, y of delta top left corner of the background image
1964+ // big free x area to support closing popup when clicking grey area
1965+ private const int[] delta_pic = {275, 40};
1966+ private const int delta_border = 2;
1967+ // radius of the green button
1968+ private const int button_size = 30;
1969+ // y distance of the label from background image
1970+ private const int draw_text_dy = 16;
1971+ // values per corner
1972+ private const double[] angle_begin = {0 * (Math.PI / 180.0), 90 * (Math.PI / 180.0),
1973+ 270 * (Math.PI / 180.0), 180 * (Math.PI / 180.0)};
1974+ private const double[] angle_end = {90 * (Math.PI / 180.0), 180 * (Math.PI / 180.0),
1975+ 360 * (Math.PI / 180.0), 270 * (Math.PI / 180.0)};
1976+ private const int[] delta_x = {radius, 0, 0, -radius};
1977+ private const int[] delta_y = {0, radius, -radius, 0};
1978+ private const int[] delta_button_x = {-10, -50, -10, -50};
1979+ private const int[] delta_button_y = {-8, -8, -48, -48};
1980+
1981+ public HotcornerWidget (out Gtk.Overlay overlay) {
1982+ overlay = new Gtk.Overlay ();
1983+ this.overlay = overlay;
1984+ this.overlay.add (this);
1985+ add_events (Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK
1986+ | Gdk.EventMask.POINTER_MOTION_MASK);
1987+ set_size_request (background_width + (delta_pic[0] * 2), background_height + (delta_pic[1] * 2));
1988+ this.background = this;
1989+ for (int i = 0; i < hotcorner_commands.length; i++) {
1990+ try {
1991+ this.hotcorner_icons += new Gdk.Pixbuf.from_file_at_size ("%s/%d.svg".printf(Constants.PKGDATADIR, i),
1992+ 16, 16);
1993+ } catch (Error e) {
1994+ critical (e.message);
1995+ }
1996+ }
1997+ try {
1998+ this.button_icon = new Gdk.Pixbuf.from_file_at_size (Constants.PKGDATADIR + "/button.svg",
1999+ 2 * button_size, 2 * button_size);
2000+ } catch (Error e) {
2001+ critical (e.message);
2002+ }
2003+ try {
2004+ this.back_image = new Gdk.Pixbuf.from_file_at_size (Constants.PKGDATADIR + "/display.svg",
2005+ background_width, background_height);
2006+ } catch (Error e) {
2007+ critical (e.message);
2008+ }
2009+ }
2010+
2011+ public override bool draw (Cairo.Context context) {
2012+ //draw background
2013+ Gdk.cairo_set_source_pixbuf (context, back_image, delta_pic[0], delta_pic[1]);
2014+ context.paint ();
2015+ for (int i = 0; i < 4; i++) {
2016+ int x = corners[i,0];
2017+ int y = corners[i,1];
2018+ int selection = Hotcorners.get_selection (corner_string[i]);
2019+ // if this corner is hoovered
2020+ if (hoovered_corner[i]) {
2021+ if (selection == 0 || pop_mode) {
2022+ draw_green_button (context, selection, i, x, y);
2023+ } else {
2024+ draw_quarter_circle (context, selection, i, x, y, true);
2025+ draw_label (context, selection, i, x, y);
2026+ }
2027+ } else {
2028+ // draw quarter corner circle with the associated command icon
2029+ draw_quarter_circle (context, selection, i, x, y, false);
2030+ }
2031+ }
2032+ return true;
2033+ }
2034+
2035+ private void draw_quarter_circle (Cairo.Context context, int selection, int i, int x, int y, bool highlight) {
2036+ Cairo.ImageSurface surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, background_width + (delta_pic[0] * 2),
2037+ background_height + (delta_pic[1] * 2));
2038+ Cairo.Context context2 = new Cairo.Context (surface);
2039+ // inner quarter circle
2040+ if (highlight)
2041+ context2.set_source_rgba (1, 1, 1, 1);
2042+ else
2043+ context2.set_source_rgba (1, 1, 1, 0.8);
2044+ context2.move_to (x, y);
2045+ context2.line_to (x + delta_x[i], y + delta_y[i]);
2046+ context2.arc (x, y, radius, angle_begin[i], angle_end[i]);
2047+ context2.close_path ();
2048+ context2.fill ();
2049+ context2.stroke ();
2050+ // outter quarter circle
2051+ context2.set_source_rgba (1, 1, 1, 0.4);
2052+ context2.set_line_width (6);
2053+ context2.arc (x, y, radius + 3, angle_begin[i], angle_end[i]);
2054+ context2.stroke ();
2055+ context.set_operator (Cairo.Operator.OVER);
2056+ context.set_source_surface (context2.get_target (), 0, 0);
2057+ context.paint_with_alpha (0.5);
2058+ // draw icon of actual selection
2059+ if (selection == 0)
2060+ return;
2061+ var icon = hotcorner_icons[selection];
2062+ Gdk.cairo_set_source_pixbuf (context, icon, x + delta_button_x[i] + button_size - icon.get_width () / 2,
2063+ y + delta_button_y[i] + button_size - icon.get_height () / 2);
2064+ context.paint ();
2065+ }
2066+
2067+ private void draw_green_button (Cairo.Context context, int selection, int i, int x, int y) {
2068+ // context.set_source_surface (button_icon, x + delta_button_x[i], y + delta_button_y[i]);
2069+ Gdk.cairo_set_source_pixbuf (context, button_icon, x + delta_button_x[i], y + delta_button_y[i]);
2070+ context.paint ();
2071+ Cairo.ImageSurface surface2 = new Cairo.ImageSurface (Cairo.Format.ARGB32, button_size * 2, button_size * 2);
2072+ Cairo.Context context2 = new Cairo.Context (surface2);
2073+ context.set_operator (Cairo.Operator.OVER);
2074+ Gdk.Pixbuf icon;
2075+ if (hover_selection == -1)
2076+ icon = hotcorner_icons[selection];
2077+ else {
2078+ if (hover_selection == 0)
2079+ return;
2080+ icon = hotcorner_icons[hover_selection];
2081+ }
2082+ Gdk.cairo_set_source_pixbuf (context2, icon, button_size - icon.get_width () / 2,
2083+ button_size - icon.get_height () / 2);
2084+ context2.paint ();
2085+ context.set_source_surface (context2.get_target (), x + delta_button_x[i], y + delta_button_y[i]);
2086+ context.paint ();
2087+ }
2088+
2089+ private void draw_label (Cairo.Context context, int selection, int i, int x, int y) {
2090+ // get text length
2091+ context.set_font_size (14);
2092+ Cairo.TextExtents extents;
2093+ context.text_extents (hotcorner_commands[selection], out extents);
2094+ // set and calculate sizes of the box
2095+ int box_dx_text = 2;
2096+ int box_height = 24;
2097+ int box_width = ((int) extents.width) + box_height + 2 * box_dx_text;
2098+ Cairo.ImageSurface surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, box_width, box_height);
2099+ Cairo.Context context2 = new Cairo.Context (surface);
2100+ // draw box
2101+ context2.set_source_rgba (0, 0, 0, 0.6);
2102+ context2.move_to (box_height / 2, 0);
2103+ context2.line_to (box_height / 2, box_height);
2104+ context2.arc (box_height / 2, box_height/2, box_height / 2, 90 * Math.PI / 180, 270 * Math.PI / 180);
2105+ context2.fill ();
2106+ context2.stroke ();
2107+ context2.move_to (box_height / 2, 0);
2108+ context2.rectangle (box_height / 2, 0, box_width - box_height, box_height);
2109+ context2.fill ();
2110+ context2.stroke ();
2111+ context2.move_to (box_width - box_height / 2, 0);
2112+ context2.line_to (box_width - box_height / 2, box_height);
2113+ context2.arc (box_width - box_height / 2, box_height / 2, box_height / 2,
2114+ 270 * Math.PI / 180, 90 * Math.PI / 180);
2115+ context2.fill ();
2116+ context2.stroke ();
2117+ context2.move_to (box_height / 2 + box_dx_text, box_height - 7);
2118+ //draw text
2119+ context2.set_source_rgba (1, 1, 1, 1);
2120+ context2.set_font_size (14);
2121+ context2.show_text (hotcorner_commands[selection]);
2122+ int draw_text_x = x - box_width / 2 + button_size + delta_button_x[i];
2123+ int draw_text_y;
2124+ if (i == 0 || i == 1)
2125+ draw_text_y = y - box_height - draw_text_dy;
2126+ else
2127+ draw_text_y = y + draw_text_dy;
2128+ context.set_operator (Cairo.Operator.OVER);
2129+ context.set_source_surface (context2.get_target (), draw_text_x, draw_text_y);
2130+ context.paint ();
2131+ }
2132+
2133+ public void close_popover () {
2134+ if (pop_mode){
2135+ pop_mode = false;
2136+ popover.hide ();
2137+ popover = null;
2138+ hover_selection = -1;
2139+ for (int j = 0; j < 4; j++) {
2140+ hoovered_corner[j] = false;
2141+ }
2142+ background.queue_draw ();
2143+ }
2144+ }
2145+
2146+ public override bool button_press_event (Gdk.EventButton event) {
2147+ // if popover is open close it
2148+ if (pop_mode){
2149+ close_popover ();
2150+ return true;
2151+ }
2152+ // check if a corner is hoovered and show popover in that case
2153+ for (int i = 0; i < 4; i++) {
2154+ if (hoovered_corner[i]) {
2155+ make_popover (i);
2156+ break;
2157+ }
2158+ }
2159+ return true;
2160+ }
2161+
2162+ // checks if mouse is hovered over a corner
2163+ public override bool motion_notify_event (Gdk.EventMotion evt) {
2164+ if (pop_mode) {
2165+ return true;
2166+ }
2167+ for (int i = 0; i < 4; i++) {
2168+ int x = corners[i,0];
2169+ int y = corners[i,1];
2170+ if (check_in_quarter_radius (evt, x, y, radius, i)) {
2171+ if (!hoovered_corner[i]) {
2172+ hoovered_corner[i] = true;
2173+ queue_draw ();
2174+ }
2175+ break;
2176+ }else if (hoovered_corner[i]) {
2177+ hoovered_corner[i] = false;
2178+ queue_draw ();
2179+ }
2180+ }
2181+ return true;
2182+ }
2183+
2184+ public override bool leave_notify_event (Gdk.EventCrossing event) {
2185+ if (pop_mode) return true;
2186+ for (int i = 0; i < 4; i++) {
2187+ hoovered_corner[i] = false;
2188+ }
2189+ queue_draw ();
2190+ return true;
2191+ }
2192+
2193+ // computational optimize check if point is inside quarter circle
2194+ private bool check_in_quarter_radius (Gdk.EventMotion evt, int x, int y, int r, int corner) {
2195+ var dx = evt.x - x;
2196+ var dy = evt.y - y;
2197+ if (Math.fabs (dx) > r) return false;
2198+ if (Math.fabs (dy) > r) return false;
2199+ if ((corner == 0 || corner == 1) && dy < 0) return false;
2200+ if ((corner == 2 || corner == 3) && dy > 0) return false;
2201+ if ((corner == 0 || corner == 2) && dx < 0) return false;
2202+ if ((corner == 1 || corner == 3) && dx > 0) return false;
2203+ if ((Math.fabs (dx) + Math.fabs (dy)) <= r) return true;
2204+ if (((dx*dx) + (dy*dy)) <= (r*r)) return true;
2205+ else return false;
2206+ }
2207+
2208+ private void make_popover (int i) {
2209+ pop_mode = true;
2210+ int x = corners[i,0];
2211+ int y = corners[i,1];
2212+ popover = new Gtk.Popover (background);
2213+ popover.get_style_context ().add_class (Gtk.STYLE_CLASS_MENU);
2214+ popover.set_position (Gtk.PositionType.BOTTOM);
2215+ var rect = Gdk.Rectangle ();
2216+ // position of the popover arrow
2217+ switch (i) {
2218+ case 0:
2219+ rect.x = x + 20;
2220+ rect.y = y + 52;
2221+ break;
2222+ case 1:
2223+ rect.x = x - 19;
2224+ rect.y = y + 52;
2225+ break;
2226+ case 2:
2227+ rect.x = x + 20;
2228+ rect.y = y - 49;
2229+ popover.set_position (Gtk.PositionType.TOP);
2230+ break;
2231+ case 3:
2232+ rect.x = x - 19;
2233+ rect.y = y - 49;
2234+ popover.set_position (Gtk.PositionType.TOP);
2235+ break;
2236+ }
2237+ popover.set_pointing_to (rect);
2238+ popover.hide.connect (() => {
2239+ close_popover ();
2240+ });
2241+ popover.add (create_hotcorner_menu (i));
2242+ // use modal false otherwise popover closes when switching stack
2243+ // closing must be handled manually then
2244+ popover.set_modal (false);
2245+ // because of modal false register own esc key listener
2246+ popover.key_press_event.connect ((evt) => {
2247+ if (evt.keyval == Gdk.Key.Escape)
2248+ close_popover ();
2249+ return true;
2250+ });
2251+ overlay.add_overlay (popover);
2252+ popover.show_all ();
2253+ // because of modal false grab focus
2254+ popover.grab_focus ();
2255+ background.queue_draw ();
2256+ }
2257+
2258+ private Gtk.Stack create_hotcorner_menu (int corner_id) {
2259+ var stack = new Gtk.Stack ();
2260+ stack.set_homogeneous (false);
2261+
2262+ // custom command box
2263+ var custom = new Gtk.Box (Gtk.Orientation.VERTICAL,10);
2264+ var custom_command = new Gtk.Entry ();
2265+ custom_command.text = Hotcorners.get_custom_command (corner_string [corner_id]);
2266+ var ok_button = new Gtk.Button.with_label (hotcorner_commands[5]);
2267+ ok_button.clicked.connect (() => {
2268+ var text = custom_command.text;
2269+ Hotcorners.choose_hotcorner (corner_string [corner_id], 5);
2270+ Hotcorners.set_custom_command (corner_string[corner_id], text);
2271+ close_popover ();
2272+ });
2273+ // set command on Enter
2274+ custom_command.key_press_event.connect ((evt) => {
2275+ if (evt.keyval == Gdk.Key.Return) {
2276+ var text = custom_command.text;
2277+ Hotcorners.choose_hotcorner (corner_string [corner_id], 5);
2278+ Hotcorners.set_custom_command (corner_string[corner_id], text);
2279+ close_popover ();
2280+ return true;
2281+ }
2282+ return false;
2283+ });
2284+ custom.pack_start (ok_button);
2285+ custom.pack_start (custom_command);
2286+ // align custom command box
2287+ Gtk.Alignment alignment2 = new Gtk.Alignment (0f, 0.5f, 0f, 0f);
2288+ alignment2.right_padding = 14;
2289+ alignment2.left_padding = 14;
2290+ alignment2.top_padding = 15;
2291+ alignment2.bottom_padding = 15;
2292+ alignment2.add (custom);
2293+
2294+ // command entries box
2295+ var box = new Gtk.Box (Gtk.Orientation.VERTICAL,0);
2296+ for (int i = 0; i < hotcorner_commands.length; i++) {
2297+ if (i == 5) continue;
2298+ var button = create_menu_entry (i);
2299+ int enum_value = i;
2300+ button.clicked.connect (() => {
2301+ close_popover ();
2302+ Hotcorners.choose_hotcorner (corner_string [corner_id], enum_value);
2303+ });
2304+ button.add_events (Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.ENTER_NOTIFY_MASK
2305+ | Gdk.EventMask.LEAVE_NOTIFY_MASK );
2306+ button.enter_notify_event.connect ((evt) => {
2307+ // fix width because there is a issue with resizing on hover with the menuitem style class
2308+ button.width_request = button.get_allocated_width ();
2309+ hover_selection = enum_value;
2310+ background.queue_draw ();
2311+ return false;
2312+ });
2313+ button.leave_notify_event.connect ((evt) => {
2314+ hover_selection = -1;
2315+ background.queue_draw ();
2316+ return false;
2317+ });
2318+ box.pack_start (button);
2319+ }
2320+ // custom command (index = 5) comes last and has a different behavior
2321+ var button = create_menu_entry (5);
2322+ button.clicked.connect (() => {
2323+ stack.transition_type = Gtk.StackTransitionType.NONE;
2324+ stack.set_visible_child_name ("custom");
2325+ custom_command.grab_focus ();
2326+ });
2327+ button.add_events (button.get_events () | Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK);
2328+ button.enter_notify_event.connect ((evt) => {
2329+ // fix width because there is a issue with resizing on hover with the menuitem style class
2330+ button.width_request = button.get_allocated_width ();
2331+ hover_selection = 5;
2332+ background.queue_draw ();
2333+ return false;
2334+ });
2335+ button.leave_notify_event.connect ((evt) => {
2336+ // if because this method is called when stack is switched
2337+ if (stack.get_visible_child_name () == "box")
2338+ hover_selection = -1;
2339+ background.queue_draw ();
2340+ return false;
2341+ });
2342+ box.pack_start (button);
2343+
2344+ Gtk.Alignment alignment = new Gtk.Alignment (0f, 1f, 0f, 0f);
2345+ alignment.top_padding = 10;
2346+ alignment.bottom_padding = 10;
2347+ alignment.add (box);
2348+
2349+ stack.add_named (alignment, "box");
2350+ stack.add_named (alignment2, "custom");
2351+ return stack;
2352+ }
2353+
2354+ private Gtk.Button create_menu_entry (int index) {
2355+ var button = new Gtk.Button();
2356+ button.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUITEM);
2357+ button.set_relief (Gtk.ReliefStyle.NONE);
2358+ var grid = new Gtk.Grid ();
2359+
2360+ var label_widget = new Gtk.Label.with_mnemonic (hotcorner_commands[index]);
2361+ label_widget.margin_left = 17;
2362+ label_widget.margin_right = 17;
2363+ label_widget.justify = Gtk.Justification.LEFT;
2364+ label_widget.set_alignment (0, 0);
2365+ grid.attach (label_widget, 1, 0, 1, 1);
2366+ button.add (grid);
2367+ return button;
2368+ }
2369+}
2370\ No newline at end of file
2371
2372=== modified file 'src/desktop-plug.vala'
2373--- src/desktop-plug.vala 2014-12-15 23:16:48 +0000
2374+++ src/desktop-plug.vala 2015-04-17 22:11:56 +0000
2375@@ -47,7 +47,9 @@
2376 stack.add_titled (dock, "dock", _("Dock"));
2377
2378 /*hot corners*/
2379- build_hotcorners_panel ();
2380+ var hotcorners = new Hotcorners ();
2381+ hotcorners.expand = true;
2382+ stack.add_titled (hotcorners, "hotc", _("Hot Corners"));
2383
2384 main_grid.attach (stack_switcher, 0, 0, 1, 1);
2385 main_grid.attach (stack, 0, 1, 1, 1);
2386@@ -57,75 +59,6 @@
2387 return main_grid;
2388 }
2389
2390- private void build_hotcorners_panel () {
2391- var hotc_grid = new Gtk.Grid ();
2392- hotc_grid.expand = true;
2393- hotc_grid.column_spacing = 12;
2394- hotc_grid.margin = 32;
2395- hotc_grid.margin_top = 48;
2396-
2397- var expl = new Gtk.Label (_("When the cursor enters the corner of the display:"));
2398- expl.set_halign (Gtk.Align.START);
2399- expl.margin_bottom = 10;
2400- expl.set_hexpand (true);
2401-
2402- var topleft = create_hotcorner ();
2403- topleft.active_id = BehaviorSettings.get_default ().schema.get_enum ("hotcorner-topleft").to_string ();
2404- topleft.changed.connect (() => BehaviorSettings.get_default ().schema.set_enum ("hotcorner-topleft", int.parse (topleft.active_id)));
2405- topleft.valign = Gtk.Align.START;
2406- var topright = create_hotcorner ();
2407- topright.active_id = BehaviorSettings.get_default ().schema.get_enum ("hotcorner-topright").to_string ();
2408- topright.changed.connect (() => BehaviorSettings.get_default ().schema.set_enum ("hotcorner-topright", int.parse (topright.active_id)));
2409- topright.valign = Gtk.Align.START;
2410- var bottomleft = create_hotcorner ();
2411- bottomleft.active_id = BehaviorSettings.get_default ().schema.get_enum ("hotcorner-bottomleft").to_string ();
2412- bottomleft.changed.connect (() => BehaviorSettings.get_default ().schema.set_enum ("hotcorner-bottomleft", int.parse (bottomleft.active_id)));
2413- bottomleft.valign = Gtk.Align.END;
2414- var bottomright = create_hotcorner ();
2415- bottomright.active_id = BehaviorSettings.get_default ().schema.get_enum ("hotcorner-bottomright").to_string ();
2416- bottomright.changed.connect (() => BehaviorSettings.get_default ().schema.set_enum ("hotcorner-bottomright", int.parse (bottomright.active_id)));
2417- bottomright.valign = Gtk.Align.END;
2418-
2419- var icon = new Gtk.Image.from_file (Constants.PKGDATADIR + "/hotcornerdisplay.png");
2420- var custom_command = new Gtk.Entry ();
2421- custom_command.text = BehaviorSettings.get_default ().hotcorner_custom_command;
2422- custom_command.changed.connect (() => BehaviorSettings.get_default ().hotcorner_custom_command = custom_command.text );
2423-
2424- var cc_label = new Gtk.Label (_("Custom Command:"));
2425- cc_label.set_halign (Gtk.Align.START);
2426-
2427- var cc_grid = new Gtk.Grid ();
2428- cc_grid.expand = true;
2429- cc_grid.set_column_spacing (12);
2430- cc_grid.set_margin_top (48);
2431- cc_grid.attach (cc_label, 0, 0, 1, 1);
2432- cc_grid.attach (custom_command, 1, 0, 1, 1);
2433-
2434- hotc_grid.attach (expl, 0, 0, 3, 1);
2435- hotc_grid.attach (icon, 1, 1, 1, 3);
2436- hotc_grid.attach (topleft, 0, 1, 1, 1);
2437- hotc_grid.attach (topright, 2, 1, 1, 1);
2438- hotc_grid.attach (bottomleft, 0, 3, 1, 1);
2439- hotc_grid.attach (bottomright, 2, 3, 1, 1);
2440- hotc_grid.attach (cc_grid, 0, 4, 2, 1);
2441-
2442- stack.add_titled (hotc_grid, "hotc", _("Hot Corners"));
2443- }
2444-
2445- private Gtk.ComboBoxText create_hotcorner () {
2446- var box = new Gtk.ComboBoxText ();
2447- box.append ("0", _("Do Nothing"));
2448- box.append ("1", _("Multitasking View"));
2449- box.append ("2", _("Maximize Current Window"));
2450- box.append ("3", _("Minimize Current Window"));
2451- box.append ("4", _("Show Applications Menu"));
2452- box.append ("6", _("Window Overview"));
2453- box.append ("7", _("Show All Windows"));
2454- box.append ("5", _("Execute Custom Command"));
2455-
2456- return box;
2457- }
2458-
2459 public override void shown () {
2460
2461 }

Subscribers

People subscribed via source and target branches

to all changes: