Merge lp:~verzegnassi-stefano/ubuntu-terminal-app/gesture-tutorial into lp:~ubuntu-terminal-dev/ubuntu-terminal-app/reboot
- gesture-tutorial
- Merge into reboot
Proposed by
Stefano Verzegnassi
Status: | Work in progress |
---|---|
Proposed branch: | lp:~verzegnassi-stefano/ubuntu-terminal-app/gesture-tutorial |
Merge into: | lp:~ubuntu-terminal-dev/ubuntu-terminal-app/reboot |
Diff against target: |
580 lines (+532/-0) 6 files modified
src/app/qml/TerminalHints/Slide1.qml (+55/-0) src/app/qml/TerminalHints/Slide2.qml (+56/-0) src/app/qml/TerminalHints/Slide3.qml (+55/-0) src/app/qml/TerminalHints/TerminalHintsOverlay.qml (+219/-0) src/app/qml/TerminalHints/graphics/terminal-app-symbolic.svg (+142/-0) src/app/qml/ubuntu-terminal-app.qml (+5/-0) |
To merge this branch: | bzr merge lp:~verzegnassi-stefano/ubuntu-terminal-app/gesture-tutorial |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Terminal Developers | Pending | ||
Review via email: mp+284351@code.launchpad.net |
Commit message
Show a gesture tutorial at the first launch of the application
Description of the change
WORK IN PROGRESS
To post a comment you must log in.
- 158. By Stefano Verzegnassi
-
Use UCAction
- 159. By Stefano Verzegnassi
-
AbstractButton (UCActionItem) inherits UCStyledItem. Take advantage from this.
- 160. By Stefano Verzegnassi
-
styling
- 161. By Stefano Verzegnassi
-
TerminalHintsOv
erlay inherits StyledItem. This way we can move the blurred background to a more 'neutral' position inside the document.
Unmerged revisions
- 161. By Stefano Verzegnassi
-
TerminalHintsOv
erlay inherits StyledItem. This way we can move the blurred background to a more 'neutral' position inside the document. - 160. By Stefano Verzegnassi
-
styling
- 159. By Stefano Verzegnassi
-
AbstractButton (UCActionItem) inherits UCStyledItem. Take advantage from this.
- 158. By Stefano Verzegnassi
-
Use UCAction
- 157. By Stefano Verzegnassi
-
First prototype of tutorial
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added directory 'src/app/qml/TerminalHints' | |||
2 | === added file 'src/app/qml/TerminalHints/Slide1.qml' | |||
3 | --- src/app/qml/TerminalHints/Slide1.qml 1970-01-01 00:00:00 +0000 | |||
4 | +++ src/app/qml/TerminalHints/Slide1.qml 2016-01-28 23:49:15 +0000 | |||
5 | @@ -0,0 +1,55 @@ | |||
6 | 1 | /* | ||
7 | 2 | * Copyright 2016 Canonical Ltd. | ||
8 | 3 | * | ||
9 | 4 | * This program is free software; you can redistribute it and/or modify | ||
10 | 5 | * it under the terms of the GNU General Public License as published by | ||
11 | 6 | * the Free Software Foundation; version 3. | ||
12 | 7 | * | ||
13 | 8 | * This program is distributed in the hope that it will be useful, | ||
14 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | 11 | * GNU General Public License for more details. | ||
17 | 12 | * | ||
18 | 13 | * You should have received a copy of the GNU General Public License | ||
19 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
20 | 15 | */ | ||
21 | 16 | |||
22 | 17 | import QtQuick 2.2 | ||
23 | 18 | import Ubuntu.Components 1.1 | ||
24 | 19 | import Qt.labs.settings 1.0 | ||
25 | 20 | |||
26 | 21 | Item { | ||
27 | 22 | id: terminalHint | ||
28 | 23 | width: hintsView.width | ||
29 | 24 | height: hintsView.height | ||
30 | 25 | |||
31 | 26 | Column { | ||
32 | 27 | anchors { | ||
33 | 28 | left: parent.left | ||
34 | 29 | right: parent.right | ||
35 | 30 | margins: units.gu(2) | ||
36 | 31 | verticalCenter: parent.verticalCenter | ||
37 | 32 | } | ||
38 | 33 | |||
39 | 34 | spacing: units.gu(5) | ||
40 | 35 | |||
41 | 36 | Icon { | ||
42 | 37 | anchors.horizontalCenter: parent.horizontalCenter | ||
43 | 38 | width: units.gu(8); height: width | ||
44 | 39 | |||
45 | 40 | color: "white" | ||
46 | 41 | source: "graphics/terminal-app-symbolic.svg" | ||
47 | 42 | } | ||
48 | 43 | |||
49 | 44 | Label { | ||
50 | 45 | width: parent.width | ||
51 | 46 | horizontalAlignment: Text.AlignHCenter | ||
52 | 47 | wrapMode: Text.WordWrap | ||
53 | 48 | |||
54 | 49 | fontSize: "large" | ||
55 | 50 | color: "white" | ||
56 | 51 | |||
57 | 52 | text: i18n.tr("Welcome to the Ubuntu Terminal") | ||
58 | 53 | } | ||
59 | 54 | } | ||
60 | 55 | } | ||
61 | 0 | 56 | ||
62 | === added file 'src/app/qml/TerminalHints/Slide2.qml' | |||
63 | --- src/app/qml/TerminalHints/Slide2.qml 1970-01-01 00:00:00 +0000 | |||
64 | +++ src/app/qml/TerminalHints/Slide2.qml 2016-01-28 23:49:15 +0000 | |||
65 | @@ -0,0 +1,56 @@ | |||
66 | 1 | /* | ||
67 | 2 | * Copyright 2014, 2016 Canonical Ltd. | ||
68 | 3 | * | ||
69 | 4 | * This program is free software; you can redistribute it and/or modify | ||
70 | 5 | * it under the terms of the GNU General Public License as published by | ||
71 | 6 | * the Free Software Foundation; version 3. | ||
72 | 7 | * | ||
73 | 8 | * This program is distributed in the hope that it will be useful, | ||
74 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
75 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
76 | 11 | * GNU General Public License for more details. | ||
77 | 12 | * | ||
78 | 13 | * You should have received a copy of the GNU General Public License | ||
79 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
80 | 15 | */ | ||
81 | 16 | |||
82 | 17 | import QtQuick 2.2 | ||
83 | 18 | import Ubuntu.Components 1.1 | ||
84 | 19 | import Qt.labs.settings 1.0 | ||
85 | 20 | |||
86 | 21 | Item { | ||
87 | 22 | id: terminalHint | ||
88 | 23 | width: hintsView.width | ||
89 | 24 | height: hintsView.height | ||
90 | 25 | |||
91 | 26 | Image { | ||
92 | 27 | id: hintPictogram | ||
93 | 28 | anchors { | ||
94 | 29 | horizontalCenter: parent.horizontalCenter | ||
95 | 30 | horizontalCenterOffset: units.gu(4) | ||
96 | 31 | verticalCenter: parent.verticalCenter | ||
97 | 32 | verticalCenterOffset: -units.gu(1) | ||
98 | 33 | } | ||
99 | 34 | |||
100 | 35 | asynchronous: true | ||
101 | 36 | cache: false | ||
102 | 37 | source: "graphics/scroll_swipe@18.png" | ||
103 | 38 | } | ||
104 | 39 | |||
105 | 40 | Label { | ||
106 | 41 | id: hintLabel | ||
107 | 42 | |||
108 | 43 | anchors { | ||
109 | 44 | top: hintPictogram.bottom | ||
110 | 45 | topMargin: units.gu(5) | ||
111 | 46 | horizontalCenter: parent.horizontalCenter | ||
112 | 47 | } | ||
113 | 48 | width: parent.width - 2 * units.gu(2) | ||
114 | 49 | horizontalAlignment: Text.AlignHCenter | ||
115 | 50 | wrapMode: Text.WordWrap | ||
116 | 51 | elide: Text.ElideLeft | ||
117 | 52 | text: i18n.tr("Use a double-finger swipe for scrolling the view") | ||
118 | 53 | fontSize: "large" | ||
119 | 54 | color: "white" | ||
120 | 55 | } | ||
121 | 56 | } | ||
122 | 0 | 57 | ||
123 | === added file 'src/app/qml/TerminalHints/Slide3.qml' | |||
124 | --- src/app/qml/TerminalHints/Slide3.qml 1970-01-01 00:00:00 +0000 | |||
125 | +++ src/app/qml/TerminalHints/Slide3.qml 2016-01-28 23:49:15 +0000 | |||
126 | @@ -0,0 +1,55 @@ | |||
127 | 1 | /* | ||
128 | 2 | * Copyright 2014, 2016 Canonical Ltd. | ||
129 | 3 | * | ||
130 | 4 | * This program is free software; you can redistribute it and/or modify | ||
131 | 5 | * it under the terms of the GNU General Public License as published by | ||
132 | 6 | * the Free Software Foundation; version 3. | ||
133 | 7 | * | ||
134 | 8 | * This program is distributed in the hope that it will be useful, | ||
135 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
136 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
137 | 11 | * GNU General Public License for more details. | ||
138 | 12 | * | ||
139 | 13 | * You should have received a copy of the GNU General Public License | ||
140 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
141 | 15 | */ | ||
142 | 16 | |||
143 | 17 | import QtQuick 2.2 | ||
144 | 18 | import Ubuntu.Components 1.1 | ||
145 | 19 | import Qt.labs.settings 1.0 | ||
146 | 20 | |||
147 | 21 | Item { | ||
148 | 22 | id: terminalHint | ||
149 | 23 | width: hintsView.width | ||
150 | 24 | height: hintsView.height | ||
151 | 25 | |||
152 | 26 | Image { | ||
153 | 27 | id: hintPictogram | ||
154 | 28 | anchors { | ||
155 | 29 | horizontalCenter: parent.horizontalCenter | ||
156 | 30 | horizontalCenterOffset: units.gu(4) | ||
157 | 31 | verticalCenter: parent.verticalCenter | ||
158 | 32 | verticalCenterOffset: -units.gu(1) | ||
159 | 33 | } | ||
160 | 34 | |||
161 | 35 | asynchronous: true | ||
162 | 36 | cache: false | ||
163 | 37 | source: "graphics/tab_tap@18.png" | ||
164 | 38 | } | ||
165 | 39 | |||
166 | 40 | Label { | ||
167 | 41 | id: hintLabel | ||
168 | 42 | |||
169 | 43 | anchors { | ||
170 | 44 | top: hintPictogram.bottom | ||
171 | 45 | topMargin: units.gu(5) | ||
172 | 46 | horizontalCenter: parent.horizontalCenter | ||
173 | 47 | } | ||
174 | 48 | width: parent.width - 2 * units.gu(2) | ||
175 | 49 | horizontalAlignment: Text.AlignHCenter | ||
176 | 50 | elide: Text.ElideLeft | ||
177 | 51 | text: i18n.tr("Tap the screen for TAB key") | ||
178 | 52 | fontSize: "large" | ||
179 | 53 | color: "white" | ||
180 | 54 | } | ||
181 | 55 | } | ||
182 | 0 | 56 | ||
183 | === added file 'src/app/qml/TerminalHints/TerminalHintsOverlay.qml' | |||
184 | --- src/app/qml/TerminalHints/TerminalHintsOverlay.qml 1970-01-01 00:00:00 +0000 | |||
185 | +++ src/app/qml/TerminalHints/TerminalHintsOverlay.qml 2016-01-28 23:49:15 +0000 | |||
186 | @@ -0,0 +1,219 @@ | |||
187 | 1 | /* | ||
188 | 2 | * Copyright 2014, 2016 Canonical Ltd. | ||
189 | 3 | * | ||
190 | 4 | * This program is free software; you can redistribute it and/or modify | ||
191 | 5 | * it under the terms of the GNU General Public License as published by | ||
192 | 6 | * the Free Software Foundation; version 3. | ||
193 | 7 | * | ||
194 | 8 | * This program is distributed in the hope that it will be useful, | ||
195 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
196 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
197 | 11 | * GNU General Public License for more details. | ||
198 | 12 | * | ||
199 | 13 | * You should have received a copy of the GNU General Public License | ||
200 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
201 | 15 | */ | ||
202 | 16 | |||
203 | 17 | import QtQuick 2.4 | ||
204 | 18 | import Ubuntu.Components 1.3 | ||
205 | 19 | import Qt.labs.settings 1.0 | ||
206 | 20 | import QtGraphicalEffects 1.0 | ||
207 | 21 | import QtQml.Models 2.1 | ||
208 | 22 | |||
209 | 23 | StyledItem { | ||
210 | 24 | id: hintsOverlay | ||
211 | 25 | anchors.fill: parent | ||
212 | 26 | |||
213 | 27 | property color __backgroundColor: "#292929" | ||
214 | 28 | property color __foregroundColor: "white" | ||
215 | 29 | |||
216 | 30 | property list<QtObject> model: [ Slide1 {}, Slide2 {}, Slide3 {} ] | ||
217 | 31 | |||
218 | 32 | property bool necessary: true | ||
219 | 33 | property bool enabled: false | ||
220 | 34 | |||
221 | 35 | // Blurred background | ||
222 | 36 | style: hintsOverlayStyle | ||
223 | 37 | |||
224 | 38 | function enable() { | ||
225 | 39 | hintsOverlay.enabled = true; | ||
226 | 40 | } | ||
227 | 41 | |||
228 | 42 | function disable() { | ||
229 | 43 | if (hintsOverlay.enabled) { | ||
230 | 44 | //hintsOverlay.necessary = false; | ||
231 | 45 | hintsOverlay.enabled = false; | ||
232 | 46 | } | ||
233 | 47 | } | ||
234 | 48 | |||
235 | 49 | // Display the hint only once after opening the terminal the first time | ||
236 | 50 | Settings { | ||
237 | 51 | property alias terminalHintNecessary: hintsOverlay.necessary | ||
238 | 52 | } | ||
239 | 53 | |||
240 | 54 | /*** ACTIONS ***/ | ||
241 | 55 | Action { | ||
242 | 56 | id: skipAction | ||
243 | 57 | text: i18n.tr("Skip") | ||
244 | 58 | visible: !hintsView.isLastHint | ||
245 | 59 | enabled: visible | ||
246 | 60 | } | ||
247 | 61 | |||
248 | 62 | Action { | ||
249 | 63 | id: goNextSlideAction | ||
250 | 64 | text: i18n.tr("Next") | ||
251 | 65 | onTriggered: ++hintsView.currentIndex | ||
252 | 66 | visible: !hintsView.isLastHint | ||
253 | 67 | enabled: visible | ||
254 | 68 | } | ||
255 | 69 | |||
256 | 70 | Action { | ||
257 | 71 | id: goPreviousSlideAction | ||
258 | 72 | text: i18n.tr("Previous") | ||
259 | 73 | onTriggered: --hintsView.currentIndex | ||
260 | 74 | visible: hintsView.currentIndex > 0 | ||
261 | 75 | enabled: visible | ||
262 | 76 | } | ||
263 | 77 | |||
264 | 78 | Action { | ||
265 | 79 | id: closeOverlayAction | ||
266 | 80 | text: i18n.tr("Close") | ||
267 | 81 | visible: hintsView.isLastHint | ||
268 | 82 | enabled: visible | ||
269 | 83 | } | ||
270 | 84 | |||
271 | 85 | // Skip button | ||
272 | 86 | AbstractButton { | ||
273 | 87 | anchors { | ||
274 | 88 | right: parent.right | ||
275 | 89 | top: parent.top | ||
276 | 90 | } | ||
277 | 91 | action: skipAction | ||
278 | 92 | style: textualButtonStyle | ||
279 | 93 | } | ||
280 | 94 | |||
281 | 95 | // Slide view | ||
282 | 96 | ListView { | ||
283 | 97 | id: hintsView | ||
284 | 98 | property bool isLastHint: currentIndex == count - 1 | ||
285 | 99 | |||
286 | 100 | anchors { | ||
287 | 101 | top: parent.top | ||
288 | 102 | left: parent.left | ||
289 | 103 | right: parent.right | ||
290 | 104 | bottom: bottomPanel.top | ||
291 | 105 | } | ||
292 | 106 | |||
293 | 107 | orientation: ListView.Horizontal | ||
294 | 108 | interactive: false | ||
295 | 109 | |||
296 | 110 | model: ObjectModel { | ||
297 | 111 | children: hintsOverlay.model | ||
298 | 112 | } | ||
299 | 113 | } | ||
300 | 114 | |||
301 | 115 | // Bottom panel | ||
302 | 116 | Item { | ||
303 | 117 | id: bottomPanel | ||
304 | 118 | anchors { | ||
305 | 119 | left: parent.left | ||
306 | 120 | right: parent.right | ||
307 | 121 | bottom: parent.bottom | ||
308 | 122 | } | ||
309 | 123 | height: units.gu(5) | ||
310 | 124 | |||
311 | 125 | Rectangle { // panel background | ||
312 | 126 | anchors.fill: parent | ||
313 | 127 | color: hintsOverlay.__backgroundColor | ||
314 | 128 | opacity: 0.3 | ||
315 | 129 | } | ||
316 | 130 | |||
317 | 131 | // "Previous" button | ||
318 | 132 | AbstractButton { | ||
319 | 133 | anchors { | ||
320 | 134 | left: parent.left | ||
321 | 135 | top: parent.top | ||
322 | 136 | bottom: parent.bottom | ||
323 | 137 | } | ||
324 | 138 | action: goPreviousSlideAction | ||
325 | 139 | style: textualButtonStyle | ||
326 | 140 | } | ||
327 | 141 | |||
328 | 142 | // "Next" button | ||
329 | 143 | AbstractButton { | ||
330 | 144 | anchors { | ||
331 | 145 | right: parent.right | ||
332 | 146 | top: parent.top | ||
333 | 147 | bottom: parent.bottom | ||
334 | 148 | } | ||
335 | 149 | action: goNextSlideAction | ||
336 | 150 | style: textualButtonStyle | ||
337 | 151 | property int fontWeight: Font.DemiBold | ||
338 | 152 | } | ||
339 | 153 | |||
340 | 154 | AbstractButton { | ||
341 | 155 | anchors { | ||
342 | 156 | right: parent.right | ||
343 | 157 | top: parent.top | ||
344 | 158 | bottom: parent.bottom | ||
345 | 159 | } | ||
346 | 160 | action: closeOverlayAction | ||
347 | 161 | style: textualButtonStyle | ||
348 | 162 | property int fontWeight: Font.DemiBold | ||
349 | 163 | } | ||
350 | 164 | |||
351 | 165 | // Slide indicator | ||
352 | 166 | Row { | ||
353 | 167 | anchors.centerIn: parent | ||
354 | 168 | height: units.gu(1) | ||
355 | 169 | spacing: units.gu(0.25) | ||
356 | 170 | Repeater { | ||
357 | 171 | model: hintsView.count | ||
358 | 172 | delegate: Rectangle { | ||
359 | 173 | property bool isCurrentSlide: model.index == hintsView.currentIndex | ||
360 | 174 | height: parent.height; width: height | ||
361 | 175 | radius: width * 0.5 | ||
362 | 176 | color: hintsOverlay.__foregroundColor | ||
363 | 177 | opacity: isCurrentSlide ? 1.0 : 0.5 | ||
364 | 178 | } | ||
365 | 179 | } | ||
366 | 180 | } | ||
367 | 181 | } | ||
368 | 182 | |||
369 | 183 | Component { | ||
370 | 184 | id: textualButtonStyle | ||
371 | 185 | |||
372 | 186 | Item { | ||
373 | 187 | implicitHeight: units.gu(5) | ||
374 | 188 | implicitWidth: buttonLabel.paintedWidth + units.gu(2) | ||
375 | 189 | |||
376 | 190 | Label { | ||
377 | 191 | id: buttonLabel | ||
378 | 192 | anchors.centerIn: parent | ||
379 | 193 | text: styledItem.text | ||
380 | 194 | font.weight: styledItem.fontWeight ? styledItem.fontWeight : Font.Normal | ||
381 | 195 | color: hintsOverlay.__foregroundColor | ||
382 | 196 | } | ||
383 | 197 | } | ||
384 | 198 | } | ||
385 | 199 | |||
386 | 200 | Component { | ||
387 | 201 | id: hintsOverlayStyle | ||
388 | 202 | |||
389 | 203 | FastBlur { | ||
390 | 204 | anchors.fill: parent | ||
391 | 205 | radius: 15 | ||
392 | 206 | source: ShaderEffectSource { | ||
393 | 207 | sourceItem: terminalPage | ||
394 | 208 | anchors.fill: parent | ||
395 | 209 | visible: false | ||
396 | 210 | |||
397 | 211 | Rectangle { | ||
398 | 212 | anchors.fill: parent | ||
399 | 213 | color: hintsOverlay.__backgroundColor | ||
400 | 214 | opacity: 0.5 | ||
401 | 215 | } | ||
402 | 216 | } | ||
403 | 217 | } | ||
404 | 218 | } | ||
405 | 219 | } | ||
406 | 0 | 220 | ||
407 | === added directory 'src/app/qml/TerminalHints/graphics' | |||
408 | === added file 'src/app/qml/TerminalHints/graphics/scroll_swipe@18.png' | |||
409 | 1 | Binary files src/app/qml/TerminalHints/graphics/scroll_swipe@18.png 1970-01-01 00:00:00 +0000 and src/app/qml/TerminalHints/graphics/scroll_swipe@18.png 2016-01-28 23:49:15 +0000 differ | 221 | Binary files src/app/qml/TerminalHints/graphics/scroll_swipe@18.png 1970-01-01 00:00:00 +0000 and src/app/qml/TerminalHints/graphics/scroll_swipe@18.png 2016-01-28 23:49:15 +0000 differ |
410 | === added file 'src/app/qml/TerminalHints/graphics/tab_tap@18.png' | |||
411 | 2 | Binary files src/app/qml/TerminalHints/graphics/tab_tap@18.png 1970-01-01 00:00:00 +0000 and src/app/qml/TerminalHints/graphics/tab_tap@18.png 2016-01-28 23:49:15 +0000 differ | 222 | Binary files src/app/qml/TerminalHints/graphics/tab_tap@18.png 1970-01-01 00:00:00 +0000 and src/app/qml/TerminalHints/graphics/tab_tap@18.png 2016-01-28 23:49:15 +0000 differ |
412 | === added file 'src/app/qml/TerminalHints/graphics/terminal-app-symbolic.svg' | |||
413 | --- src/app/qml/TerminalHints/graphics/terminal-app-symbolic.svg 1970-01-01 00:00:00 +0000 | |||
414 | +++ src/app/qml/TerminalHints/graphics/terminal-app-symbolic.svg 2016-01-28 23:49:15 +0000 | |||
415 | @@ -0,0 +1,142 @@ | |||
416 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
417 | 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
418 | 3 | |||
419 | 4 | <svg | ||
420 | 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
421 | 6 | xmlns:cc="http://creativecommons.org/ns#" | ||
422 | 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
423 | 8 | xmlns:svg="http://www.w3.org/2000/svg" | ||
424 | 9 | xmlns="http://www.w3.org/2000/svg" | ||
425 | 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
426 | 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
427 | 12 | width="96" | ||
428 | 13 | height="96" | ||
429 | 14 | id="svg4874" | ||
430 | 15 | version="1.1" | ||
431 | 16 | inkscape:version="0.91+devel r" | ||
432 | 17 | viewBox="0 0 96 96.000001" | ||
433 | 18 | sodipodi:docname="terminal-app-symbolic.svg"> | ||
434 | 19 | <defs | ||
435 | 20 | id="defs4876" /> | ||
436 | 21 | <sodipodi:namedview | ||
437 | 22 | id="base" | ||
438 | 23 | pagecolor="#ffffff" | ||
439 | 24 | bordercolor="#666666" | ||
440 | 25 | borderopacity="1.0" | ||
441 | 26 | inkscape:pageopacity="0.0" | ||
442 | 27 | inkscape:pageshadow="2" | ||
443 | 28 | inkscape:zoom="17.150877" | ||
444 | 29 | inkscape:cx="24.261148" | ||
445 | 30 | inkscape:cy="46.761451" | ||
446 | 31 | inkscape:document-units="px" | ||
447 | 32 | inkscape:current-layer="layer1" | ||
448 | 33 | showgrid="true" | ||
449 | 34 | showborder="true" | ||
450 | 35 | fit-margin-top="0" | ||
451 | 36 | fit-margin-left="0" | ||
452 | 37 | fit-margin-right="0" | ||
453 | 38 | fit-margin-bottom="0" | ||
454 | 39 | inkscape:snap-bbox="true" | ||
455 | 40 | inkscape:bbox-paths="true" | ||
456 | 41 | inkscape:bbox-nodes="true" | ||
457 | 42 | inkscape:snap-bbox-edge-midpoints="true" | ||
458 | 43 | inkscape:snap-bbox-midpoints="true" | ||
459 | 44 | inkscape:object-paths="true" | ||
460 | 45 | inkscape:snap-intersection-paths="true" | ||
461 | 46 | inkscape:object-nodes="true" | ||
462 | 47 | inkscape:snap-smooth-nodes="true" | ||
463 | 48 | inkscape:snap-midpoints="true" | ||
464 | 49 | inkscape:snap-object-midpoints="true" | ||
465 | 50 | inkscape:snap-center="true" | ||
466 | 51 | showguides="true" | ||
467 | 52 | inkscape:guide-bbox="true" | ||
468 | 53 | inkscape:snap-global="true"> | ||
469 | 54 | <inkscape:grid | ||
470 | 55 | type="xygrid" | ||
471 | 56 | id="grid5451" | ||
472 | 57 | empspacing="8" /> | ||
473 | 58 | <sodipodi:guide | ||
474 | 59 | orientation="1,0" | ||
475 | 60 | position="8,-8.0000001" | ||
476 | 61 | id="guide4063" /> | ||
477 | 62 | <sodipodi:guide | ||
478 | 63 | orientation="1,0" | ||
479 | 64 | position="4,-8.0000001" | ||
480 | 65 | id="guide4065" /> | ||
481 | 66 | <sodipodi:guide | ||
482 | 67 | orientation="0,1" | ||
483 | 68 | position="-8,88.000001" | ||
484 | 69 | id="guide4067" /> | ||
485 | 70 | <sodipodi:guide | ||
486 | 71 | orientation="0,1" | ||
487 | 72 | position="-8,92.000001" | ||
488 | 73 | id="guide4069" /> | ||
489 | 74 | <sodipodi:guide | ||
490 | 75 | orientation="0,1" | ||
491 | 76 | position="104,4" | ||
492 | 77 | id="guide4071" /> | ||
493 | 78 | <sodipodi:guide | ||
494 | 79 | orientation="0,1" | ||
495 | 80 | position="-5,8.0000001" | ||
496 | 81 | id="guide4073" /> | ||
497 | 82 | <sodipodi:guide | ||
498 | 83 | orientation="1,0" | ||
499 | 84 | position="88,-8.0000001" | ||
500 | 85 | id="guide4077" /> | ||
501 | 86 | <sodipodi:guide | ||
502 | 87 | orientation="0,1" | ||
503 | 88 | position="-8,84.000001" | ||
504 | 89 | id="guide4074" /> | ||
505 | 90 | <sodipodi:guide | ||
506 | 91 | orientation="1,0" | ||
507 | 92 | position="12,-8.0000001" | ||
508 | 93 | id="guide4076" /> | ||
509 | 94 | <sodipodi:guide | ||
510 | 95 | orientation="1,0" | ||
511 | 96 | position="84,-8.0000001" | ||
512 | 97 | id="guide4080" /> | ||
513 | 98 | <sodipodi:guide | ||
514 | 99 | position="48,-8.0000001" | ||
515 | 100 | orientation="1,0" | ||
516 | 101 | id="guide4170" /> | ||
517 | 102 | <sodipodi:guide | ||
518 | 103 | position="-8,48" | ||
519 | 104 | orientation="0,1" | ||
520 | 105 | id="guide4172" /> | ||
521 | 106 | <sodipodi:guide | ||
522 | 107 | position="92,-8.0000001" | ||
523 | 108 | orientation="1,0" | ||
524 | 109 | id="guide4760" /> | ||
525 | 110 | </sodipodi:namedview> | ||
526 | 111 | <metadata | ||
527 | 112 | id="metadata4879"> | ||
528 | 113 | <rdf:RDF> | ||
529 | 114 | <cc:Work | ||
530 | 115 | rdf:about=""> | ||
531 | 116 | <dc:format>image/svg+xml</dc:format> | ||
532 | 117 | <dc:type | ||
533 | 118 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
534 | 119 | <dc:title /> | ||
535 | 120 | </cc:Work> | ||
536 | 121 | </rdf:RDF> | ||
537 | 122 | </metadata> | ||
538 | 123 | <g | ||
539 | 124 | inkscape:label="Layer 1" | ||
540 | 125 | inkscape:groupmode="layer" | ||
541 | 126 | id="layer1" | ||
542 | 127 | transform="translate(67.857146,-78.50504)"> | ||
543 | 128 | <rect | ||
544 | 129 | transform="rotate(90)" | ||
545 | 130 | y="-28.142857" | ||
546 | 131 | x="78.505051" | ||
547 | 132 | height="96" | ||
548 | 133 | width="96" | ||
549 | 134 | id="rect4782" | ||
550 | 135 | style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:4;marker:none;enable-background:accumulate" /> | ||
551 | 136 | <path | ||
552 | 137 | style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.00000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | ||
553 | 138 | d="M 19.976562 12 C 14.943787 12.05818 11.262944 11.879725 8.2519531 13.541016 C 6.7464581 14.371661 5.5551474 15.776594 4.8964844 17.53125 C 4.2378224 19.285907 4 21.369562 4 24 L 4 76 C 4 78.63043 4.2378224 80.712137 4.8964844 82.466797 C 5.5551474 84.221447 6.7464581 85.626391 8.2519531 86.457031 C 11.262944 88.118321 14.943787 87.94182 19.976562 88 L 19.988281 88 L 76.011719 88 L 76.023438 88 C 81.056213 87.9418 84.737057 88.118321 87.748047 86.457031 C 89.253542 85.626391 90.444854 84.221447 91.103516 82.466797 C 91.762178 80.712137 92 78.63043 92 76 L 92 24 C 92 21.369562 91.762178 19.285907 91.103516 17.53125 C 90.444851 15.776594 89.253542 14.371661 87.748047 13.541016 C 84.737057 11.879725 81.056213 12.058184 76.023438 12 L 76.011719 12 L 19.988281 12 L 19.976562 12 z M 20 16 L 76 16 C 81.038253 16.05877 84.351872 16.236877 85.816406 17.044922 C 86.550044 17.449701 86.969122 17.897876 87.359375 18.9375 C 87.749629 19.977125 88 21.63043 88 24 L 88 76 C 88 78.36956 87.749629 80.02288 87.359375 81.0625 C 86.969122 82.10212 86.550044 82.550298 85.816406 82.955078 C 84.351872 83.763118 81.038253 83.94124 76 84 L 20.023438 84 L 20 84 C 14.961747 83.9412 11.648128 83.763118 10.183594 82.955078 C 9.4499567 82.550298 9.0328321 82.10212 8.6425781 81.0625 C 8.2523251 80.02288 8 78.36956 8 76 L 8 24 C 8 21.63043 8.2523251 19.977125 8.6425781 18.9375 C 9.0328321 17.897876 9.4499567 17.449701 10.183594 17.044922 C 11.648128 16.236877 14.961747 16.058766 20 16 z M 17.3125 23.960938 L 16 27.910156 L 29.324219 33.253906 L 16 38.599609 L 17.3125 42.546875 L 34.455078 35.289062 L 34.455078 31.220703 L 17.3125 23.960938 z M 34.941406 47.970703 L 34.941406 52 L 54.830078 52 L 54.830078 47.970703 L 34.941406 47.970703 z " | ||
554 | 139 | transform="translate(-67.857146,78.50504)" | ||
555 | 140 | id="path4179" /> | ||
556 | 141 | </g> | ||
557 | 142 | </svg> | ||
558 | 0 | 143 | ||
559 | === modified file 'src/app/qml/ubuntu-terminal-app.qml' | |||
560 | --- src/app/qml/ubuntu-terminal-app.qml 2016-01-22 18:29:56 +0000 | |||
561 | +++ src/app/qml/ubuntu-terminal-app.qml 2016-01-28 23:49:15 +0000 | |||
562 | @@ -2,6 +2,7 @@ | |||
563 | 2 | import QtGraphicalEffects 1.0 | 2 | import QtGraphicalEffects 1.0 |
564 | 3 | import Ubuntu.Components 1.3 | 3 | import Ubuntu.Components 1.3 |
565 | 4 | import "KeyboardRows" | 4 | import "KeyboardRows" |
566 | 5 | import "TerminalHints" | ||
567 | 5 | 6 | ||
568 | 6 | import QMLTermWidget 1.0 | 7 | import QMLTermWidget 1.0 |
569 | 7 | 8 | ||
570 | @@ -126,6 +127,10 @@ | |||
571 | 126 | } | 127 | } |
572 | 127 | } | 128 | } |
573 | 128 | 129 | ||
574 | 130 | TerminalHintsOverlay { | ||
575 | 131 | z: Number.MAX_VALUE | ||
576 | 132 | } | ||
577 | 133 | |||
578 | 129 | Component.onCompleted: { | 134 | Component.onCompleted: { |
579 | 130 | tabsModel.selectTab(0); | 135 | tabsModel.selectTab(0); |
580 | 131 | } | 136 | } |