Merge lp:~pafosdfkapos/eidete/translations into lp:eidete
- translations
- Merge into trunk
Proposed by
pafosdfkapos
Status: | Merged |
---|---|
Approved by: | Cody Garver |
Approved revision: | 151 |
Merged at revision: | 145 |
Proposed branch: | lp:~pafosdfkapos/eidete/translations |
Merge into: | lp:eidete |
Diff against target: |
1776 lines (+562/-417) 6 files modified
po/eidete.pot (+133/-87) po/et.po (+145/-98) src/Widgets/countdown.vala (+20/-18) src/Widgets/end_dialog.vala (+24/-27) src/Widgets/keyview.vala (+55/-55) src/eidete.vala (+185/-132) |
To merge this branch: | bzr merge lp:~pafosdfkapos/eidete/translations |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
elementary Apps team | Pending | ||
Review via email:
|
Commit message
Translation fixes and UI improvements.
Description of the change
Fixes to translations, layout and buttons.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'po/cs.po' (properties changed: -x to +x) |
2 | === modified file 'po/eidete.pot' |
3 | --- po/eidete.pot 2012-08-05 00:55:04 +0000 |
4 | +++ po/eidete.pot 2013-05-18 07:55:30 +0000 |
5 | @@ -8,7 +8,7 @@ |
6 | msgstr "" |
7 | "Project-Id-Version: PACKAGE VERSION\n" |
8 | "Report-Msgid-Bugs-To: \n" |
9 | -"POT-Creation-Date: 2012-08-04 19:54-0500\n" |
10 | +"POT-Creation-Date: 2013-05-17 23:02+0300\n" |
11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
14 | @@ -17,137 +17,183 @@ |
15 | "Content-Type: text/plain; charset=CHARSET\n" |
16 | "Content-Transfer-Encoding: 8bit\n" |
17 | |
18 | -#: /home/codygarver/eidete/po/../src/savedialog.vala:8 |
19 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:66 |
20 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:103 |
21 | +#: /home/kristjan/translations/po/../src/desktop_launcher.vala:5 |
22 | +msgid "Record screencasts" |
23 | +msgstr "" |
24 | + |
25 | +#: /home/kristjan/translations/po/../src/desktop_launcher.vala:6 |
26 | +msgid "Screencaster" |
27 | +msgstr "" |
28 | + |
29 | +#: /home/kristjan/translations/po/../src/videobin_uploader.vala:45 |
30 | +msgid "Upload" |
31 | +msgstr "" |
32 | + |
33 | +#: /home/kristjan/translations/po/../src/savedialog.vala:8 |
34 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:28 |
35 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:64 |
36 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:100 |
37 | msgid "Save" |
38 | msgstr "" |
39 | |
40 | -#: /home/codygarver/eidete/po/../src/Widgets/countdown.vala:27 |
41 | -msgid "Recording starts in" |
42 | -msgstr "" |
43 | - |
44 | -#: /home/codygarver/eidete/po/../src/Widgets/countdown.vala:33 |
45 | -msgid "Focus Eidete to stop recording" |
46 | -msgstr "" |
47 | - |
48 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:24 |
49 | -msgid "Recording done" |
50 | -msgstr "" |
51 | - |
52 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:27 |
53 | -msgid "And now?" |
54 | -msgstr "" |
55 | - |
56 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:31 |
57 | -msgid "Go" |
58 | -msgstr "" |
59 | - |
60 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:64 |
61 | -msgid "Could not contact Contractor. Click Save to save the file" |
62 | -msgstr "" |
63 | - |
64 | -#: /home/codygarver/eidete/po/../src/videobin_uploader.vala:45 |
65 | -msgid "Upload" |
66 | -msgstr "" |
67 | - |
68 | -#: /home/codygarver/eidete/po/../src/eidete.vala:139 |
69 | +#: /home/kristjan/translations/po/../src/eidete.vala:138 |
70 | msgid "Monitor" |
71 | msgstr "" |
72 | |
73 | -#: /home/codygarver/eidete/po/../src/eidete.vala:154 |
74 | +#: /home/kristjan/translations/po/../src/eidete.vala:158 |
75 | msgid "Fullscreen" |
76 | msgstr "" |
77 | |
78 | -#: /home/codygarver/eidete/po/../src/eidete.vala:155 |
79 | +#: /home/kristjan/translations/po/../src/eidete.vala:159 |
80 | msgid "Custom" |
81 | msgstr "" |
82 | |
83 | -#: /home/codygarver/eidete/po/../src/eidete.vala:175 |
84 | -msgid "Record" |
85 | +#: /home/kristjan/translations/po/../src/eidete.vala:170 |
86 | +msgid "Default" |
87 | msgstr "" |
88 | |
89 | -#: /home/codygarver/eidete/po/../src/eidete.vala:187 |
90 | +#: /home/kristjan/translations/po/../src/eidete.vala:179 |
91 | msgid "Sound" |
92 | msgstr "" |
93 | |
94 | -#: /home/codygarver/eidete/po/../src/eidete.vala:188 |
95 | +#: /home/kristjan/translations/po/../src/eidete.vala:182 |
96 | +msgid "Video" |
97 | +msgstr "" |
98 | + |
99 | +#: /home/kristjan/translations/po/../src/eidete.vala:185 |
100 | +msgid "Keyboard" |
101 | +msgstr "" |
102 | + |
103 | +#: /home/kristjan/translations/po/../src/eidete.vala:188 |
104 | +msgid "Mouse" |
105 | +msgstr "" |
106 | + |
107 | +#: /home/kristjan/translations/po/../src/eidete.vala:191 |
108 | +msgid "Start Recording" |
109 | +msgstr "" |
110 | + |
111 | +#: /home/kristjan/translations/po/../src/eidete.vala:197 |
112 | +msgid "About" |
113 | +msgstr "" |
114 | + |
115 | +#: /home/kristjan/translations/po/../src/eidete.vala:210 |
116 | msgid "Record Computer Sounds" |
117 | msgstr "" |
118 | |
119 | -#: /home/codygarver/eidete/po/../src/eidete.vala:190 |
120 | +#: /home/kristjan/translations/po/../src/eidete.vala:212 |
121 | msgid "Record from Microphone" |
122 | msgstr "" |
123 | |
124 | -#: /home/codygarver/eidete/po/../src/eidete.vala:192 |
125 | -msgid "Video" |
126 | -msgstr "" |
127 | - |
128 | -#: /home/codygarver/eidete/po/../src/eidete.vala:193 |
129 | +#: /home/kristjan/translations/po/../src/eidete.vala:215 |
130 | msgid "Record from Monitor" |
131 | msgstr "" |
132 | |
133 | -#: /home/codygarver/eidete/po/../src/eidete.vala:195 |
134 | +#: /home/kristjan/translations/po/../src/eidete.vala:217 |
135 | msgid "Recording Area" |
136 | msgstr "" |
137 | |
138 | -#: /home/codygarver/eidete/po/../src/eidete.vala:197 |
139 | +#: /home/kristjan/translations/po/../src/eidete.vala:219 |
140 | msgid "Width" |
141 | msgstr "" |
142 | |
143 | -#: /home/codygarver/eidete/po/../src/eidete.vala:199 |
144 | +#: /home/kristjan/translations/po/../src/eidete.vala:221 |
145 | msgid "Height" |
146 | msgstr "" |
147 | |
148 | -#: /home/codygarver/eidete/po/../src/eidete.vala:218 |
149 | -msgid "Show pressed keys on screen" |
150 | -msgstr "" |
151 | - |
152 | -#: /home/codygarver/eidete/po/../src/eidete.vala:220 |
153 | -msgid "Show clicks on screen" |
154 | -msgstr "" |
155 | - |
156 | -#: /home/codygarver/eidete/po/../src/eidete.vala:222 |
157 | -msgid "Show circle behind mouse" |
158 | -msgstr "" |
159 | - |
160 | -#: /home/codygarver/eidete/po/../src/eidete.vala:228 |
161 | +#: /home/kristjan/translations/po/../src/eidete.vala:245 |
162 | +msgid "Pressed keys on screen" |
163 | +msgstr "" |
164 | + |
165 | +#: /home/kristjan/translations/po/../src/eidete.vala:248 |
166 | +msgid "Mouse clicks on screen" |
167 | +msgstr "" |
168 | + |
169 | +#: /home/kristjan/translations/po/../src/eidete.vala:250 |
170 | +msgid "Circle around the cursor" |
171 | +msgstr "" |
172 | + |
173 | +#: /home/kristjan/translations/po/../src/eidete.vala:256 |
174 | msgid "Behavior" |
175 | msgstr "" |
176 | |
177 | -#: /home/codygarver/eidete/po/../src/eidete.vala:229 |
178 | +#: /home/kristjan/translations/po/../src/eidete.vala:257 |
179 | msgid "Appearance" |
180 | msgstr "" |
181 | |
182 | -#: /home/codygarver/eidete/po/../src/eidete.vala:424 |
183 | +#: /home/kristjan/translations/po/../src/eidete.vala:449 |
184 | +#: /home/kristjan/translations/po/../src/eidete.vala:456 |
185 | +#: /home/kristjan/translations/po/../src/eidete.vala:641 |
186 | +msgid "Recording paused" |
187 | +msgstr "" |
188 | + |
189 | +#: /home/kristjan/translations/po/../src/eidete.vala:459 |
190 | +msgid "You can continue or finish the recording now" |
191 | +msgstr "" |
192 | + |
193 | +#: /home/kristjan/translations/po/../src/eidete.vala:468 |
194 | +msgid "Continue" |
195 | +msgstr "" |
196 | + |
197 | +#: /home/kristjan/translations/po/../src/eidete.vala:469 |
198 | +msgid "Continue recording" |
199 | +msgstr "" |
200 | + |
201 | +#: /home/kristjan/translations/po/../src/eidete.vala:472 |
202 | msgid "Finish" |
203 | msgstr "" |
204 | |
205 | -#: /home/codygarver/eidete/po/../src/eidete.vala:425 |
206 | -msgid "Finish recording" |
207 | -msgstr "" |
208 | - |
209 | -#: /home/codygarver/eidete/po/../src/eidete.vala:427 |
210 | -msgid "Record more" |
211 | -msgstr "" |
212 | - |
213 | -#: /home/codygarver/eidete/po/../src/eidete.vala:441 |
214 | -#: /home/codygarver/eidete/po/../src/eidete.vala:588 |
215 | -msgid "Recording paused" |
216 | -msgstr "" |
217 | - |
218 | -#: /home/codygarver/eidete/po/../src/eidete.vala:442 |
219 | -msgid "You can continue or finish the recording now." |
220 | -msgstr "" |
221 | - |
222 | -#: /home/codygarver/eidete/po/../src/eidete.vala:598 |
223 | +#: /home/kristjan/translations/po/../src/eidete.vala:473 |
224 | +msgid "Stop the recording and save the file" |
225 | +msgstr "" |
226 | + |
227 | +#: /home/kristjan/translations/po/../src/eidete.vala:476 |
228 | +msgid "Cancel" |
229 | +msgstr "" |
230 | + |
231 | +#: /home/kristjan/translations/po/../src/eidete.vala:477 |
232 | +msgid "Cancel the recording without saving the file" |
233 | +msgstr "" |
234 | + |
235 | +#: /home/kristjan/translations/po/../src/eidete.vala:651 |
236 | msgid "Pause recording" |
237 | msgstr "" |
238 | |
239 | -#: /home/codygarver/eidete/po/../src/desktop_launcher.vala:5 |
240 | -msgid "Record screencasts" |
241 | -msgstr "" |
242 | - |
243 | -#: /home/codygarver/eidete/po/../src/desktop_launcher.vala:6 |
244 | -msgid "Screencaster" |
245 | +#: /home/kristjan/translations/po/../src/eidete.vala:671 |
246 | +msgid "Pause Recording" |
247 | +msgstr "" |
248 | + |
249 | +#: /home/kristjan/translations/po/../src/eidete.vala:672 |
250 | +msgid "Finish Recording" |
251 | +msgstr "" |
252 | + |
253 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:24 |
254 | +msgid "Recording complete" |
255 | +msgstr "" |
256 | + |
257 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:33 |
258 | +msgid "Don't save" |
259 | +msgstr "" |
260 | + |
261 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:62 |
262 | +msgid "Could not contact Contractor. Click the Save button to save the file." |
263 | +msgstr "" |
264 | + |
265 | +#: /home/kristjan/translations/po/../src/Widgets/keyview.vala:48 |
266 | +msgid "Left" |
267 | +msgstr "" |
268 | + |
269 | +#: /home/kristjan/translations/po/../src/Widgets/keyview.vala:51 |
270 | +msgid "Middle" |
271 | +msgstr "" |
272 | + |
273 | +#: /home/kristjan/translations/po/../src/Widgets/keyview.vala:54 |
274 | +msgid "Right" |
275 | +msgstr "" |
276 | + |
277 | +#: /home/kristjan/translations/po/../src/Widgets/countdown.vala:27 |
278 | +msgid "Recording starts in" |
279 | +msgstr "" |
280 | + |
281 | +#: /home/kristjan/translations/po/../src/Widgets/countdown.vala:34 |
282 | +msgid "Focus Eidete to stop recording" |
283 | msgstr "" |
284 | |
285 | === modified file 'po/et.po' |
286 | --- po/et.po 2013-03-17 05:13:08 +0000 |
287 | +++ po/et.po 2013-05-18 07:55:30 +0000 |
288 | @@ -6,149 +6,196 @@ |
289 | msgid "" |
290 | msgstr "" |
291 | "Project-Id-Version: eidete\n" |
292 | -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
293 | -"POT-Creation-Date: 2012-08-04 19:54-0500\n" |
294 | -"PO-Revision-Date: 2012-09-21 23:01+0000\n" |
295 | -"Last-Translator: Kristjan Vool <Unknown>\n" |
296 | +"Report-Msgid-Bugs-To: \n" |
297 | +"POT-Creation-Date: 2013-05-17 03:41+0300\n" |
298 | +"PO-Revision-Date: 2013-05-17 03:42+0300\n" |
299 | +"Last-Translator: Kristjan Vool <vool.kristjan@gmail.com>\n" |
300 | "Language-Team: Estonian <et@li.org>\n" |
301 | +"Language: et\n" |
302 | "MIME-Version: 1.0\n" |
303 | "Content-Type: text/plain; charset=UTF-8\n" |
304 | "Content-Transfer-Encoding: 8bit\n" |
305 | "X-Launchpad-Export-Date: 2013-03-17 05:13+0000\n" |
306 | "X-Generator: Launchpad (build 16532)\n" |
307 | |
308 | -#: /home/codygarver/eidete/po/../src/savedialog.vala:8 |
309 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:66 |
310 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:103 |
311 | +#: /home/kristjan/translations/po/../src/desktop_launcher.vala:5 |
312 | +msgid "Record screencasts" |
313 | +msgstr "Screencast'ide filmimine" |
314 | + |
315 | +#: /home/kristjan/translations/po/../src/desktop_launcher.vala:6 |
316 | +msgid "Screencaster" |
317 | +msgstr "Screencaster" |
318 | + |
319 | +#: /home/kristjan/translations/po/../src/videobin_uploader.vala:45 |
320 | +msgid "Upload" |
321 | +msgstr "Laadi üles" |
322 | + |
323 | +#: /home/kristjan/translations/po/../src/savedialog.vala:8 |
324 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:28 |
325 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:64 |
326 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:100 |
327 | msgid "Save" |
328 | msgstr "Salvesta" |
329 | |
330 | -#: /home/codygarver/eidete/po/../src/Widgets/countdown.vala:27 |
331 | -msgid "Recording starts in" |
332 | -msgstr "Lindistamine algab" |
333 | - |
334 | -#: /home/codygarver/eidete/po/../src/Widgets/countdown.vala:33 |
335 | -msgid "Focus Eidete to stop recording" |
336 | -msgstr "Lindistamise lõpetamiseks fokuseeri Eidete" |
337 | - |
338 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:24 |
339 | -msgid "Recording done" |
340 | -msgstr "Lindistamine valmis" |
341 | - |
342 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:27 |
343 | -msgid "And now?" |
344 | -msgstr "Ja nüüd?" |
345 | - |
346 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:31 |
347 | -msgid "Go" |
348 | -msgstr "Mine" |
349 | - |
350 | -#: /home/codygarver/eidete/po/../src/Widgets/end_dialog.vala:64 |
351 | -msgid "Could not contact Contractor. Click Save to save the file" |
352 | -msgstr "" |
353 | -"Ühenduse loomine Contractoriga nurjus. Faili salvestamiseks vali Salvesta." |
354 | - |
355 | -#: /home/codygarver/eidete/po/../src/videobin_uploader.vala:45 |
356 | -msgid "Upload" |
357 | -msgstr "Laadi üles" |
358 | - |
359 | -#: /home/codygarver/eidete/po/../src/eidete.vala:139 |
360 | +#: /home/kristjan/translations/po/../src/eidete.vala:138 |
361 | msgid "Monitor" |
362 | msgstr "Kuvar" |
363 | |
364 | -#: /home/codygarver/eidete/po/../src/eidete.vala:154 |
365 | +#: /home/kristjan/translations/po/../src/eidete.vala:158 |
366 | msgid "Fullscreen" |
367 | msgstr "Täisekraan" |
368 | |
369 | -#: /home/codygarver/eidete/po/../src/eidete.vala:155 |
370 | +#: /home/kristjan/translations/po/../src/eidete.vala:159 |
371 | msgid "Custom" |
372 | msgstr "Kohandatud" |
373 | |
374 | -#: /home/codygarver/eidete/po/../src/eidete.vala:175 |
375 | -msgid "Record" |
376 | -msgstr "Lindista" |
377 | +#: /home/kristjan/translations/po/../src/eidete.vala:171 |
378 | +msgid "Default" |
379 | +msgstr "Vaikimisi" |
380 | |
381 | -#: /home/codygarver/eidete/po/../src/eidete.vala:187 |
382 | +#: /home/kristjan/translations/po/../src/eidete.vala:180 |
383 | msgid "Sound" |
384 | msgstr "Heli" |
385 | |
386 | -#: /home/codygarver/eidete/po/../src/eidete.vala:188 |
387 | +#: /home/kristjan/translations/po/../src/eidete.vala:183 |
388 | +msgid "Video" |
389 | +msgstr "Video" |
390 | + |
391 | +#: /home/kristjan/translations/po/../src/eidete.vala:186 |
392 | +msgid "Keyboard" |
393 | +msgstr "Klaviatuur" |
394 | + |
395 | +#: /home/kristjan/translations/po/../src/eidete.vala:189 |
396 | +msgid "Mouse" |
397 | +msgstr "Hiir" |
398 | + |
399 | +#: /home/kristjan/translations/po/../src/eidete.vala:192 |
400 | +msgid "Start Recording" |
401 | +msgstr "Alusta filmimist" |
402 | + |
403 | +#: /home/kristjan/translations/po/../src/eidete.vala:198 |
404 | +msgid "About" |
405 | +msgstr "Programmist…" |
406 | + |
407 | +#: /home/kristjan/translations/po/../src/eidete.vala:211 |
408 | msgid "Record Computer Sounds" |
409 | -msgstr "Arvuti helide lindistamine" |
410 | +msgstr "Arvuti helide salvestamine" |
411 | |
412 | -#: /home/codygarver/eidete/po/../src/eidete.vala:190 |
413 | +#: /home/kristjan/translations/po/../src/eidete.vala:213 |
414 | msgid "Record from Microphone" |
415 | -msgstr "Mikrofoni lindistamine" |
416 | - |
417 | -#: /home/codygarver/eidete/po/../src/eidete.vala:192 |
418 | -msgid "Video" |
419 | -msgstr "Video" |
420 | - |
421 | -#: /home/codygarver/eidete/po/../src/eidete.vala:193 |
422 | +msgstr "Mikrofoni salvestamine" |
423 | + |
424 | +#: /home/kristjan/translations/po/../src/eidete.vala:216 |
425 | msgid "Record from Monitor" |
426 | -msgstr "Kuvari lindistamine" |
427 | +msgstr "Kuvari filmimine" |
428 | |
429 | -#: /home/codygarver/eidete/po/../src/eidete.vala:195 |
430 | +#: /home/kristjan/translations/po/../src/eidete.vala:218 |
431 | msgid "Recording Area" |
432 | -msgstr "Lindistamise ala" |
433 | +msgstr "Filmimise ala" |
434 | |
435 | -#: /home/codygarver/eidete/po/../src/eidete.vala:197 |
436 | +#: /home/kristjan/translations/po/../src/eidete.vala:220 |
437 | msgid "Width" |
438 | msgstr "Laius" |
439 | |
440 | -#: /home/codygarver/eidete/po/../src/eidete.vala:199 |
441 | +#: /home/kristjan/translations/po/../src/eidete.vala:222 |
442 | msgid "Height" |
443 | msgstr "Kõrgus" |
444 | |
445 | -#: /home/codygarver/eidete/po/../src/eidete.vala:218 |
446 | -msgid "Show pressed keys on screen" |
447 | -msgstr "Vajutatud klahvide näitamine eknraanil" |
448 | - |
449 | -#: /home/codygarver/eidete/po/../src/eidete.vala:220 |
450 | -msgid "Show clicks on screen" |
451 | -msgstr "Klõpsude näitamine ekraanil" |
452 | - |
453 | -#: /home/codygarver/eidete/po/../src/eidete.vala:222 |
454 | -msgid "Show circle behind mouse" |
455 | -msgstr "Ringi näitamine kursori taga" |
456 | - |
457 | -#: /home/codygarver/eidete/po/../src/eidete.vala:228 |
458 | +#: /home/kristjan/translations/po/../src/eidete.vala:246 |
459 | +msgid "Pressed keys on screen" |
460 | +msgstr "Vajutatud klahvid ekraanil" |
461 | + |
462 | +#: /home/kristjan/translations/po/../src/eidete.vala:249 |
463 | +msgid "Mouse clicks on screen" |
464 | +msgstr "Hiire klõpsud ekraanil" |
465 | + |
466 | +#: /home/kristjan/translations/po/../src/eidete.vala:251 |
467 | +msgid "Circle around the cursor" |
468 | +msgstr "Ring ümber kursori" |
469 | + |
470 | +#: /home/kristjan/translations/po/../src/eidete.vala:257 |
471 | msgid "Behavior" |
472 | msgstr "Käitumine" |
473 | |
474 | -#: /home/codygarver/eidete/po/../src/eidete.vala:229 |
475 | +#: /home/kristjan/translations/po/../src/eidete.vala:258 |
476 | msgid "Appearance" |
477 | msgstr "Välimus" |
478 | |
479 | -#: /home/codygarver/eidete/po/../src/eidete.vala:424 |
480 | +#: /home/kristjan/translations/po/../src/eidete.vala:451 |
481 | +msgid "Recording paused" |
482 | +msgstr "Filmimine peatatud" |
483 | + |
484 | +#: /home/kristjan/translations/po/../src/eidete.vala:459 |
485 | +msgid "Continue" |
486 | +msgstr "Jätka" |
487 | + |
488 | +#: /home/kristjan/translations/po/../src/eidete.vala:460 |
489 | +msgid "Continue recording" |
490 | +msgstr "Jätka filmimist" |
491 | + |
492 | +#: /home/kristjan/translations/po/../src/eidete.vala:463 |
493 | msgid "Finish" |
494 | msgstr "Lõpeta" |
495 | |
496 | -#: /home/codygarver/eidete/po/../src/eidete.vala:425 |
497 | -msgid "Finish recording" |
498 | -msgstr "Lõpeta lindistamine" |
499 | - |
500 | -#: /home/codygarver/eidete/po/../src/eidete.vala:427 |
501 | -msgid "Record more" |
502 | -msgstr "Lindista veel" |
503 | - |
504 | -#: /home/codygarver/eidete/po/../src/eidete.vala:441 |
505 | -#: /home/codygarver/eidete/po/../src/eidete.vala:588 |
506 | -msgid "Recording paused" |
507 | -msgstr "Videolindistamine pausil" |
508 | - |
509 | -#: /home/codygarver/eidete/po/../src/eidete.vala:442 |
510 | +#: /home/kristjan/translations/po/../src/eidete.vala:464 |
511 | +msgid "Stop the recording and save the file" |
512 | +msgstr "Peata filmimine ning salvesta video" |
513 | + |
514 | +#: /home/kristjan/translations/po/../src/eidete.vala:467 |
515 | +msgid "Cancel" |
516 | +msgstr "Katkesta" |
517 | + |
518 | +#: /home/kristjan/translations/po/../src/eidete.vala:468 |
519 | +msgid "Cancel the recording without saving the file" |
520 | +msgstr "Katkesta filmimine ilma videot salvestamata" |
521 | + |
522 | +#: /home/kristjan/translations/po/../src/eidete.vala:481 |
523 | msgid "You can continue or finish the recording now." |
524 | -msgstr "Sa saad jätkata või lõpetada lindistamise kohe." |
525 | +msgstr "Sul on võimalus filmimine peatada ning salvestada või jätkata filmimise jätkamist." |
526 | |
527 | -#: /home/codygarver/eidete/po/../src/eidete.vala:598 |
528 | +#: /home/kristjan/translations/po/../src/eidete.vala:636 |
529 | msgid "Pause recording" |
530 | -msgstr "Peata lindistamine" |
531 | - |
532 | -#: /home/codygarver/eidete/po/../src/desktop_launcher.vala:5 |
533 | -msgid "Record screencasts" |
534 | -msgstr "Kaardrite lindistamine" |
535 | - |
536 | -#: /home/codygarver/eidete/po/../src/desktop_launcher.vala:6 |
537 | -msgid "Screencaster" |
538 | -msgstr "Kaadristaja" |
539 | +msgstr "Peata filmimine" |
540 | + |
541 | +#: /home/kristjan/translations/po/../src/eidete.vala:656 |
542 | +msgid "Pause Recording" |
543 | +msgstr "Peata filmimine" |
544 | + |
545 | +#: /home/kristjan/translations/po/../src/eidete.vala:657 |
546 | +msgid "Finish Recording" |
547 | +msgstr "Lõpeta filmimine" |
548 | + |
549 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:24 |
550 | +msgid "Recording complete" |
551 | +msgstr "Filmimine lõpetatud" |
552 | + |
553 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:33 |
554 | +msgid "Don't save" |
555 | +msgstr "Ära salvesta" |
556 | + |
557 | +#: /home/kristjan/translations/po/../src/Widgets/end_dialog.vala:62 |
558 | +msgid "Could not contact Contractor. Click the Save button to save the file." |
559 | +msgstr "Contractor'iga polnud võimalik ühendust saada. Faili salvestamiseks vajuta salvestamise nupule." |
560 | + |
561 | +#: /home/kristjan/translations/po/../src/Widgets/keyview.vala:48 |
562 | +msgid "Left" |
563 | +msgstr "Vasak" |
564 | + |
565 | +#: /home/kristjan/translations/po/../src/Widgets/keyview.vala:51 |
566 | +msgid "Middle" |
567 | +msgstr "Keskmine" |
568 | + |
569 | +#: /home/kristjan/translations/po/../src/Widgets/keyview.vala:54 |
570 | +msgid "Right" |
571 | +msgstr "Parem" |
572 | + |
573 | +#: /home/kristjan/translations/po/../src/Widgets/countdown.vala:27 |
574 | +msgid "Recording starts in" |
575 | +msgstr "Filmimine algab" |
576 | + |
577 | +#: /home/kristjan/translations/po/../src/Widgets/countdown.vala:33 |
578 | +msgid "Focus Eidete to stop recording" |
579 | +msgstr "Filmimise lõpetamiseks fokuseeri Eidete" |
580 | + |
581 | +#~ msgid "Close without saving" |
582 | +#~ msgstr "Sulge salvestamata" |
583 | |
584 | === modified file 'src/Widgets/countdown.vala' |
585 | --- src/Widgets/countdown.vala 2012-05-22 17:19:03 +0000 |
586 | +++ src/Widgets/countdown.vala 2013-05-18 07:55:30 +0000 |
587 | @@ -3,15 +3,15 @@ |
588 | |
589 | |
590 | namespace Eidete.Widgets{ |
591 | - |
592 | + |
593 | public class Countdown : Granite.Widgets.CompositedWindow { |
594 | - |
595 | + |
596 | public Label count; |
597 | public int time; |
598 | - |
599 | + |
600 | public Countdown (){ |
601 | this.time = 5; |
602 | - |
603 | + |
604 | this.set_default_size (300, 200); |
605 | this.window_position = WindowPosition.CENTER; |
606 | this.set_keep_above (true); |
607 | @@ -19,27 +19,29 @@ |
608 | this.type_hint = Gdk.WindowTypeHint.SPLASHSCREEN; |
609 | this.skip_pager_hint = true; |
610 | this.skip_taskbar_hint = true; |
611 | - |
612 | + |
613 | var box = new Box (Orientation.VERTICAL, 0); |
614 | box.margin = 40; |
615 | box.margin_left = box.margin_right = 60; |
616 | - |
617 | - var title = new Label ("<span size='20000' color='#fbfbfb'>"+_("Recording starts in")+"</span>"); |
618 | + |
619 | + var title = new Label ("<span size='20000' color='#fbfbfb'>"+_("Recording starts in")+"…"+"</span>"); |
620 | title.use_markup = true; |
621 | - |
622 | + title.margin_bottom = 20; |
623 | + |
624 | this.count = new Label ("<span size='40000' color='#fbfbfb'>"+time.to_string ()+"</span>"); |
625 | this.count.use_markup = true; |
626 | - |
627 | - var tipp = new Label("<span size='10000' color='#fbfbfb'>"+_("Focus Eidete to stop recording")+"</span>"); |
628 | + |
629 | + var tipp = new Label("<span size='10000' color='#fbfbfb' font-style='italic'>"+_("Focus Eidete to stop recording")+"</span>"); |
630 | tipp.use_markup = true; |
631 | - |
632 | + tipp.margin_top = 20; |
633 | + |
634 | box.pack_start (title); |
635 | box.pack_start (count); |
636 | box.pack_start (tipp); |
637 | - |
638 | + |
639 | this.add (box); |
640 | } |
641 | - |
642 | + |
643 | public override bool draw (Cairo.Context ctx){ |
644 | int w = this.get_allocated_width (); |
645 | int h = this.get_allocated_height (); |
646 | @@ -48,9 +50,9 @@ |
647 | ctx.fill (); |
648 | return base.draw (ctx); |
649 | } |
650 | - |
651 | + |
652 | public void start (EideteApp app){ |
653 | - |
654 | + |
655 | this.show_all (); |
656 | Timeout.add (1000, () => { |
657 | this.time --; |
658 | @@ -68,10 +70,10 @@ |
659 | return true; |
660 | }); |
661 | } |
662 | - |
663 | + |
664 | } |
665 | - |
666 | - |
667 | + |
668 | + |
669 | } |
670 | |
671 | |
672 | |
673 | === modified file 'src/Widgets/end_dialog.vala' |
674 | --- src/Widgets/end_dialog.vala 2012-08-05 00:55:04 +0000 |
675 | +++ src/Widgets/end_dialog.vala 2013-05-18 07:55:30 +0000 |
676 | @@ -2,66 +2,64 @@ |
677 | |
678 | |
679 | namespace Eidete.Widgets { |
680 | - |
681 | + |
682 | private bool contractor; |
683 | - |
684 | + |
685 | public class EndDialog : Window { |
686 | public EndDialog (EideteApp app){ |
687 | this.set_default_size (400, 200); |
688 | - |
689 | + |
690 | this.set_application (app); |
691 | - |
692 | + |
693 | if (app.selectionarea != null) |
694 | app.selectionarea.destroy (); |
695 | if (app.keyview != null) |
696 | app.keyview.destroy (); |
697 | this.window_position = WindowPosition.CENTER; |
698 | this.icon_name = "eidete"; |
699 | - |
700 | + |
701 | var grid = new Grid (); |
702 | grid.margin = 12; |
703 | - |
704 | - var title = new Label ("<span size='30000'>"+_("Recording done")+"</span>"); |
705 | + |
706 | + var title = new Label ("<span size='30000'>"+_("Recording complete")+"</span>"); |
707 | title.use_markup = true; |
708 | title.halign = Align.START; |
709 | - var sub_title = new Label ("<span size='15000'>"+_("And now?")+"</span>"); |
710 | - sub_title.use_markup = true; |
711 | - sub_title.halign = Align.START; |
712 | - |
713 | - var export = new Button.with_label (_("Go")); |
714 | - export.image = new Image.from_stock (Stock.YES, IconSize.BUTTON); |
715 | + |
716 | + var export = new Button.with_label (_("Save")); |
717 | + export.image = new Image.from_stock (Stock.SAVE, IconSize.BUTTON); |
718 | export.can_default = true; |
719 | this.set_default (export); |
720 | - |
721 | - var cancel = new Button.from_stock (Stock.CANCEL); |
722 | + |
723 | + var cancel = new Button.with_label (_("Don't save")); |
724 | + cancel.image = new Image.from_stock (Stock.DELETE, IconSize.BUTTON); |
725 | cancel.halign = Align.END; |
726 | - |
727 | + |
728 | var bbox = new ButtonBox (Orientation.HORIZONTAL); |
729 | bbox.pack_end (cancel, false, true, 0); |
730 | bbox.pack_end (export, false, true, 0); |
731 | bbox.layout_style = ButtonBoxStyle.END; |
732 | - |
733 | + |
734 | //contractor |
735 | var list = new ListStore (2, typeof (Gdk.Pixbuf), typeof (string)); |
736 | var t = new TreeView.with_model (list); |
737 | t.headers_visible = false; |
738 | t.hexpand = true; |
739 | - |
740 | + |
741 | var cell1 = new CellRendererPixbuf (); |
742 | cell1.set_padding (5, 15); |
743 | t.insert_column_with_attributes (-1, "", cell1, "pixbuf", 0); |
744 | var cell2 = new CellRendererText (); |
745 | cell2.set_padding (2, 15); |
746 | t.insert_column_with_attributes (-1, "", cell2, "markup", 1); |
747 | - |
748 | - |
749 | + |
750 | + |
751 | var c = Granite.Services.Contractor.get_contract (app.settings.destination, "video"); |
752 | if (c == null || c.length <= 1){ |
753 | warning ("You should install and/or run contractor"); |
754 | contractor = false; |
755 | var info = new InfoBar (); |
756 | info.message_type = MessageType.WARNING; |
757 | - info.pack_start (new Label (_("Could not contact Contractor. Click Save to save the file"))); |
758 | + info.pack_start (new Label (_("Could not contact Contractor. Click the Save button to save the file."))); |
759 | grid.attach (info, 0, 3, 2, 1); |
760 | export.label = _("Save"); |
761 | }else{ |
762 | @@ -73,19 +71,18 @@ |
763 | try{ |
764 | icon = IconTheme.get_default ().load_icon (c[i].lookup ("IconName"), 32, 0); |
765 | }catch (Error e){warning (e.message);} |
766 | - list.set (it, 0, icon, 1, |
767 | + list.set (it, 0, icon, 1, |
768 | "<b>"+c[i].lookup ("Name")+"</b>\n"+c[i].lookup ("Description")); |
769 | } |
770 | t.set_cursor (new TreePath.from_string ("0"), null, false); |
771 | } |
772 | - |
773 | + |
774 | grid.attach (title, 0, 0, 2, 1); |
775 | - grid.attach (sub_title, 0, 1, 2, 1); |
776 | grid.attach (new Label (""), 0, 2, 1, 1); |
777 | grid.attach (t, 0, 4, 1, 1); |
778 | grid.attach (new Label (""), 0, 5, 1, 1); |
779 | grid.attach (bbox, 0, 6, 1, 1); |
780 | - |
781 | + |
782 | if (contractor){ |
783 | export.clicked.connect ( () => { |
784 | TreePath path; |
785 | @@ -109,7 +106,7 @@ |
786 | try{ |
787 | source.copy (destination, FileCopyFlags.OVERWRITE); |
788 | }catch (GLib.Error e){stderr.printf ("Error: %s\n", e.message);} |
789 | - |
790 | + |
791 | file.destroy (); |
792 | this.destroy (); |
793 | }else{ |
794 | @@ -118,7 +115,7 @@ |
795 | }); |
796 | } |
797 | cancel.clicked.connect ( () => {this.destroy ();}); |
798 | - |
799 | + |
800 | this.add (grid); |
801 | } |
802 | } |
803 | |
804 | === modified file 'src/Widgets/keyview.vala' |
805 | --- src/Widgets/keyview.vala 2012-04-18 15:35:01 +0000 |
806 | +++ src/Widgets/keyview.vala 2013-05-18 07:55:30 +0000 |
807 | @@ -3,9 +3,9 @@ |
808 | |
809 | |
810 | namespace Eidete.Widgets { |
811 | - |
812 | + |
813 | public class YellowCircle : Granite.Widgets.CompositedWindow { |
814 | - |
815 | + |
816 | public YellowCircle (Gdk.RGBA color) { |
817 | this.skip_pager_hint = true; |
818 | this.skip_taskbar_hint = true; |
819 | @@ -13,26 +13,26 @@ |
820 | this.stick (); |
821 | this.type_hint = Gdk.WindowTypeHint.SPLASHSCREEN; |
822 | this.accept_focus = false; |
823 | - |
824 | + |
825 | this.draw.connect ( (ctx) => { |
826 | - ctx.arc (this.get_allocated_width () / 2, this.get_allocated_height () / 2, |
827 | + ctx.arc (this.get_allocated_width () / 2, this.get_allocated_height () / 2, |
828 | this.get_allocated_width () / 2, 0, 6.28318); |
829 | ctx.set_source_rgba (color.red, color.green, color.blue, color.alpha); |
830 | ctx.fill (); |
831 | return false; |
832 | }); |
833 | - |
834 | + |
835 | this.set_size_request (70, 70); |
836 | this.realize (); |
837 | this.get_window ().input_shape_combine_region (new Cairo.Region.rectangle ({0, 0, 1, 1}), 0, 0); |
838 | this.show_all (); |
839 | } |
840 | - |
841 | + |
842 | public new void move (int x, int y) { |
843 | base.move (x - (int)(this.get_allocated_width ()/2), y - (int)(this.get_allocated_height ()/2)); |
844 | } |
845 | } |
846 | - |
847 | + |
848 | public class ClickWindow : Granite.Widgets.CompositedWindow { |
849 | public ClickWindow (int x, int y, int button) { |
850 | this.skip_pager_hint = true; |
851 | @@ -41,17 +41,17 @@ |
852 | this.stick (); |
853 | this.type_hint = Gdk.WindowTypeHint.SPLASHSCREEN; |
854 | this.accept_focus = false; |
855 | - |
856 | + |
857 | string label = ""; |
858 | switch (button) { |
859 | case 1: |
860 | - label = "Left"; |
861 | + label = _("Left"); |
862 | break; |
863 | case 2: |
864 | - label = "Middle"; |
865 | + label = _("Middle"); |
866 | break; |
867 | case 3: |
868 | - label = "Right"; |
869 | + label = _("Right"); |
870 | break; |
871 | default: |
872 | break; |
873 | @@ -65,12 +65,12 @@ |
874 | css.load_from_data ("*{color:#fff; text-shadow:1 1 #000;}", -1); |
875 | } catch (Error e) { warning (e.message); } |
876 | lbl.get_style_context ().add_provider (css, 20000); |
877 | - |
878 | + |
879 | this.realize (); |
880 | this.get_window ().input_shape_combine_region (new Cairo.Region.rectangle ({0, 0, 1, 1}), 0, 0); |
881 | this.show_all (); |
882 | this.move (x + 5, y + 5); |
883 | - |
884 | + |
885 | Timeout.add (10, () => { |
886 | this.opacity -= 0.007; |
887 | if (this.opacity < 0.1) //prevent flickering |
888 | @@ -83,10 +83,10 @@ |
889 | }); |
890 | } |
891 | } |
892 | - |
893 | - |
894 | + |
895 | + |
896 | public class Key : Label { |
897 | - |
898 | + |
899 | public string key; |
900 | public bool ctrl; |
901 | public bool shift; |
902 | @@ -94,7 +94,7 @@ |
903 | public bool super; |
904 | public bool iso_level3_shift; |
905 | public int count; |
906 | - |
907 | + |
908 | public Key (string key, bool ctrl, bool shift, bool alt, bool super, bool iso_level3_shift){ |
909 | this.key = key; |
910 | this.ctrl = ctrl; |
911 | @@ -105,45 +105,45 @@ |
912 | this.count = 1; |
913 | } |
914 | } |
915 | - |
916 | - |
917 | + |
918 | + |
919 | public class KeyView : Granite.Widgets.CompositedWindow { |
920 | - |
921 | + |
922 | public int key_size; |
923 | public int fade_duration; |
924 | - |
925 | - |
926 | - |
927 | + |
928 | + |
929 | + |
930 | private bool ctrl; |
931 | private bool shift; |
932 | private bool alt; |
933 | private bool super; |
934 | private bool iso_level3_shift; |
935 | - |
936 | + |
937 | private int screen_h; |
938 | - |
939 | + |
940 | public Queue<Key> keys; |
941 | - |
942 | + |
943 | public YellowCircle circle; |
944 | - |
945 | + |
946 | public Cairo.ImageSurface key_bg; |
947 | - |
948 | + |
949 | [CCode (cname = "intercept_key_thread")] |
950 | public extern void *intercept_key_thread (); |
951 | - |
952 | + |
953 | public signal void captured (string keyvalue, bool released); |
954 | public signal void captured_mouse (int x, int y, int button); |
955 | public signal void captured_move (int x, int y); |
956 | - |
957 | + |
958 | public override bool draw (Cairo.Context ctx){ |
959 | - |
960 | + |
961 | //key |
962 | for (var i=0;i<keys.length;i++){ |
963 | ctx.set_source_surface (key_bg, 0, screen_h - (i+2)*key_size); |
964 | ctx.paint (); |
965 | - |
966 | + |
967 | ctx.set_source_rgba (1.0, 1.0, 1.0, 1.0); |
968 | - |
969 | + |
970 | int [] sizes = {0, 30, 45, 55, 60}; |
971 | print ("%i\n", keys.peek_nth (i).key.length); |
972 | |
973 | @@ -155,7 +155,7 @@ |
974 | |
975 | ctx.move_to (key_size - 40, screen_h - (i+1)*key_size-20); |
976 | ctx.show_text (keys.peek_nth (i).key); |
977 | - |
978 | + |
979 | ctx.set_font_size (18); |
980 | if (keys.peek_nth (i).count > 1){ |
981 | ctx.move_to (3, screen_h - (i+1)*key_size - (key_size-12)); |
982 | @@ -183,21 +183,21 @@ |
983 | ctx.show_text ("AltGr"); |
984 | } |
985 | } |
986 | - |
987 | + |
988 | return base.draw (ctx); |
989 | } |
990 | - |
991 | + |
992 | public void place (int x, int y, int h){ |
993 | this.set_size_request (key_size, h); |
994 | this.resize (key_size, h); |
995 | this.move (x - key_size, y); |
996 | this.screen_h = h; |
997 | } |
998 | - |
999 | + |
1000 | public KeyView (bool keyboard, bool mouse, bool mouse_circle, Gdk.RGBA mouse_circle_color){ |
1001 | this.key_size = 75; |
1002 | this.fade_duration = 2000; |
1003 | - |
1004 | + |
1005 | this.stick (); |
1006 | this.set_keep_above (true); |
1007 | this.deletable = false; |
1008 | @@ -206,32 +206,32 @@ |
1009 | this.skip_pager_hint = true; |
1010 | this.skip_taskbar_hint = true; |
1011 | this.accept_focus = false; |
1012 | - |
1013 | + |
1014 | this.type_hint = Gdk.WindowTypeHint.NOTIFICATION; |
1015 | - this.events = Gdk.EventMask.BUTTON_MOTION_MASK | Gdk.EventMask.BUTTON1_MOTION_MASK | |
1016 | + this.events = Gdk.EventMask.BUTTON_MOTION_MASK | Gdk.EventMask.BUTTON1_MOTION_MASK | |
1017 | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK ; |
1018 | - |
1019 | + |
1020 | this.realize (); |
1021 | - |
1022 | + |
1023 | Cairo.RectangleInt rect = {0, 0, 1, 1}; |
1024 | this.get_window ().input_shape_combine_region (new Cairo.Region.rectangle (rect), 0, 0); |
1025 | - |
1026 | + |
1027 | this.enter_notify_event.connect ( () => { |
1028 | this.get_window ().input_shape_combine_region (new Cairo.Region.rectangle (rect), 0, 0); |
1029 | return true; |
1030 | }); |
1031 | - |
1032 | + |
1033 | this.keys = new Queue<Key> (); |
1034 | - |
1035 | + |
1036 | //setup the key background |
1037 | key_bg = new Cairo.ImageSurface (Cairo.Format.ARGB32, key_size, key_size); |
1038 | var ctx = new Cairo.Context (key_bg); |
1039 | Granite.Drawing.Utilities.cairo_rounded_rectangle (ctx, 5, 5, key_size-10, key_size-10, 5); |
1040 | ctx.set_source_rgba (0.2, 0.2, 0.2, 0.7); |
1041 | ctx.fill_preserve (); |
1042 | - |
1043 | + |
1044 | capture (); |
1045 | - |
1046 | + |
1047 | Timeout.add (fade_duration, () => { |
1048 | if (!keys.is_empty ()){ |
1049 | keys.pop_tail (); |
1050 | @@ -239,7 +239,7 @@ |
1051 | } |
1052 | return true; |
1053 | }); |
1054 | - |
1055 | + |
1056 | if (mouse_circle) { |
1057 | this.circle = new YellowCircle (mouse_circle_color); |
1058 | this.captured_move.connect ( (x, y) => { |
1059 | @@ -247,14 +247,14 @@ |
1060 | //debug ("Moved to %i, %i\n", x, y); |
1061 | }); |
1062 | } |
1063 | - |
1064 | + |
1065 | if (mouse) |
1066 | this.captured_mouse.connect ( (x, y, button) => { |
1067 | debug ("Button %i pressed at %i, %i ", button, x, y); |
1068 | if (button <= 3) |
1069 | Timeout.add (10, () => { new ClickWindow (x, y, button); return false; }); |
1070 | }); |
1071 | - |
1072 | + |
1073 | if (keyboard) |
1074 | this.captured.connect ( (keyvalue, released) => { |
1075 | if (released){ |
1076 | @@ -289,7 +289,7 @@ |
1077 | switch (res){ |
1078 | case "Control_L": |
1079 | case "Control_R": |
1080 | - this.ctrl = true; |
1081 | + this.ctrl = true; |
1082 | this.queue_draw (); |
1083 | return; |
1084 | case "Shift_L": |
1085 | @@ -404,10 +404,10 @@ |
1086 | res = keyvalue.substring (0, 9); |
1087 | break; |
1088 | } |
1089 | - |
1090 | + |
1091 | if ((!keys.is_empty ()) && |
1092 | - (keys.peek_head ().key == res) && |
1093 | - (keys.peek_head ().ctrl == ctrl) && |
1094 | + (keys.peek_head ().key == res) && |
1095 | + (keys.peek_head ().ctrl == ctrl) && |
1096 | (keys.peek_head ().shift == shift) && |
1097 | (keys.peek_head ().alt == alt) && |
1098 | (keys.peek_head ().iso_level3_shift == iso_level3_shift)){ |
1099 | @@ -425,7 +425,7 @@ |
1100 | } |
1101 | }); |
1102 | } |
1103 | - |
1104 | + |
1105 | public void capture (){ |
1106 | try{ |
1107 | Thread.create<void*> (this.intercept_key_thread, true); |
1108 | |
1109 | === modified file 'src/eidete.vala' |
1110 | --- src/eidete.vala 2012-08-05 00:39:41 +0000 |
1111 | +++ src/eidete.vala 2013-05-18 07:55:30 +0000 |
1112 | @@ -6,7 +6,7 @@ |
1113 | |
1114 | |
1115 | namespace Eidete{ |
1116 | - |
1117 | + |
1118 | class LLabel : Label{ |
1119 | public LLabel (string label){ |
1120 | this.set_halign (Align.START); |
1121 | @@ -30,8 +30,8 @@ |
1122 | this.label = label; |
1123 | } |
1124 | } |
1125 | - |
1126 | - |
1127 | + |
1128 | + |
1129 | public struct Settings{ |
1130 | public int sx; |
1131 | public int sy; |
1132 | @@ -45,39 +45,39 @@ |
1133 | public Gdk.RGBA mouse_circle_color; |
1134 | public string destination; |
1135 | } |
1136 | - |
1137 | + |
1138 | public class EideteApp : Granite.Application{ |
1139 | - |
1140 | + |
1141 | construct{ |
1142 | program_name = "Eidete"; |
1143 | exec_name = "eidete"; |
1144 | - |
1145 | + |
1146 | build_data_dir = Constants.DATADIR; |
1147 | build_pkg_data_dir = Constants.PKGDATADIR; |
1148 | build_release_name = Constants.RELEASE_NAME; |
1149 | build_version = Constants.VERSION; |
1150 | build_version_info = Constants.VERSION_INFO; |
1151 | - |
1152 | + |
1153 | app_years = "2011-2012"; |
1154 | app_icon = "eidete"; |
1155 | app_launcher = "eidete.desktop"; |
1156 | application_id = "net.launchpad.eidete"; |
1157 | - |
1158 | + |
1159 | main_url = "https://code.launchpad.net/eidete"; |
1160 | bug_url = "https://bugs.launchpad.net/eidete"; |
1161 | help_url = "https://code.launchpad.net/eidete"; |
1162 | translate_url = "https://translations.launchpad.net/eidete"; |
1163 | - |
1164 | + |
1165 | about_authors = {"Tom Beckmann <tombeckmann@online.de>"}; |
1166 | about_documenters = {"Tom Beckmann <tombeckmann@online.de>"}; |
1167 | about_artists = {"Harvey Cabaguio", "Sergey 'shnatsel' Davidoff"}; |
1168 | - about_comments = "Development release, not all features implemented"; |
1169 | + about_comments = "Development release (all features not implemented)"; |
1170 | about_translators = ""; |
1171 | about_license_type = License.GPL_3_0; |
1172 | } |
1173 | - |
1174 | + |
1175 | public dynamic Pipeline pipeline; |
1176 | - |
1177 | + |
1178 | public Window main_window; |
1179 | public Eidete.Widgets.KeyView keyview; |
1180 | public Eidete.Widgets.SelectionArea selectionarea; |
1181 | @@ -87,9 +87,9 @@ |
1182 | public Wnck.Window win; |
1183 | public Gdk.Screen screen; |
1184 | public Gdk.Rectangle monitor_rec; |
1185 | - |
1186 | + |
1187 | public Settings settings; |
1188 | - |
1189 | + |
1190 | public bool recording; |
1191 | public bool typing_size; |
1192 | |
1193 | @@ -98,99 +98,121 @@ |
1194 | |
1195 | public EideteApp (){ |
1196 | } |
1197 | - |
1198 | + |
1199 | public void start_and_build () { |
1200 | - |
1201 | + |
1202 | Gtk.Settings.get_default ().gtk_application_prefer_dark_theme = true; |
1203 | - |
1204 | + |
1205 | this.main_window = new Window (); |
1206 | this.main_window.title = program_name; |
1207 | this.main_window.icon_name = exec_name; |
1208 | this.main_window.set_application (this); |
1209 | this.main_window.window_position = WindowPosition.CENTER; |
1210 | this.main_window.set_resizable (false); |
1211 | - |
1212 | - |
1213 | + |
1214 | + |
1215 | if (!this.main_window.is_composited ()){ |
1216 | warning ("Compositing is not supported. No transparency available."); |
1217 | } |
1218 | - |
1219 | - |
1220 | + |
1221 | + |
1222 | /* |
1223 | UI |
1224 | */ |
1225 | - |
1226 | + |
1227 | tabs = new Granite.Widgets.StaticNotebook (false); |
1228 | tabs.margin = 12; |
1229 | - |
1230 | + |
1231 | pause_icon = new Image.from_icon_name ("media-playback-pause", IconSize.DIALOG); |
1232 | pause_icon.pixel_size = 64; |
1233 | - |
1234 | - |
1235 | + |
1236 | + |
1237 | var grid = new Grid (); |
1238 | grid.column_spacing = 12; |
1239 | grid.row_spacing = 6; |
1240 | - grid.hexpand = true; |
1241 | - |
1242 | + grid.hexpand = false; |
1243 | + |
1244 | var monitors_combo = new ComboBoxText (); |
1245 | monitors_combo.hexpand = true; |
1246 | - monitors_combo.margin_left = 6; |
1247 | for (var i=0;i<Gdk.Screen.get_default ().get_n_monitors (); i++) |
1248 | monitors_combo.append (i.to_string (), _("Monitor")+" "+(i+1).to_string ()); |
1249 | monitors_combo.active = 0; |
1250 | if (Gdk.Screen.get_default ().get_n_monitors () == 1) |
1251 | monitors_combo.set_sensitive (false); |
1252 | - |
1253 | + |
1254 | var width = new SpinButton.with_range (50, Gdk.Screen.get_default ().get_width (), 1); |
1255 | width.max_length = 4; |
1256 | + width.margin_left = 1; |
1257 | + width.margin_right = -4; |
1258 | + |
1259 | var height = new SpinButton.with_range (50, Gdk.Screen.get_default ().get_height (), 1); |
1260 | height.max_length = 4; |
1261 | + height.margin_left = 1; |
1262 | + height.margin_right = -4; |
1263 | width.set_sensitive (false); |
1264 | height.set_sensitive (false); |
1265 | width.halign = Align.START; |
1266 | height.halign = Align.START; |
1267 | - |
1268 | + |
1269 | var recordingarea_combo = new ComboBoxText (); |
1270 | recordingarea_combo.append ("full", _("Fullscreen")); |
1271 | recordingarea_combo.append ("custom", _("Custom")); |
1272 | recordingarea_combo.active = 0; |
1273 | - |
1274 | + |
1275 | var use_comp_sounds = new CheckButton (); |
1276 | use_comp_sounds.halign = Align.START; |
1277 | use_comp_sounds.set_sensitive (false); |
1278 | + |
1279 | var use_audio = new CheckButton (); |
1280 | - use_audio.halign = Align.END; |
1281 | - |
1282 | + use_audio.halign = Align.START; |
1283 | + |
1284 | var audio_source = new ComboBoxText (); |
1285 | - audio_source.margin_left = 6; |
1286 | - audio_source.append ("0", "Default"); |
1287 | + audio_source.append ("0", _("Default")); |
1288 | audio_source.active = 0; |
1289 | audio_source.hexpand = true; |
1290 | audio_source.set_sensitive (false); |
1291 | - |
1292 | + |
1293 | var audio_box = new Box (Orientation.HORIZONTAL, 0); |
1294 | audio_box.pack_start (use_audio, false, true, 0); |
1295 | audio_box.pack_start (audio_source, true, true, 0); |
1296 | - |
1297 | - var start_bt = new Button.with_label (_("Record")); |
1298 | + |
1299 | + var sound = new LLabel.markup ("<b>"+_("Sound")+":"+"</b>"); |
1300 | + sound.margin_top = 18; |
1301 | + |
1302 | + var video = new LLabel.markup ("<b>"+_("Video")+":"+"</b>"); |
1303 | + video.margin_top = 12; |
1304 | + |
1305 | + var keyboard = new LLabel.markup ("<b>"+_("Keyboard")+":"+"</b>"); |
1306 | + keyboard.margin_top = 18; |
1307 | + |
1308 | + var mouse = new LLabel.markup ("<b>"+_("Mouse")+":"+"</b>"); |
1309 | + mouse.margin_top = 12; |
1310 | + |
1311 | + var start_bt = new Button.with_label (_("Start Recording")); |
1312 | + start_bt.can_default = true; |
1313 | + start_bt.get_style_context ().add_class ("noundo"); |
1314 | + |
1315 | var cancel_bt = new Button.from_stock (Stock.CANCEL); |
1316 | - var about_bt = new Button.from_stock (Stock.ABOUT); |
1317 | + |
1318 | + var about_bt = new Button.with_label (_("About")); |
1319 | + about_bt.image = new Image.from_stock (Stock.ABOUT, IconSize.BUTTON); |
1320 | + |
1321 | var buttons = new Box (Orientation.HORIZONTAL, 5); |
1322 | - buttons.homogeneous = false; |
1323 | + buttons.homogeneous = true; |
1324 | + buttons.pack_start (about_bt, false, true, 0); |
1325 | + buttons.pack_start (cancel_bt, false, true, 0); |
1326 | buttons.pack_end (start_bt, false, true, 0); |
1327 | - buttons.pack_end (cancel_bt, false, true, 0); |
1328 | - buttons.pack_start (about_bt, false, true, 0); |
1329 | - start_bt.can_default = true; |
1330 | - start_bt.get_style_context ().add_class ("noundo"); |
1331 | + buttons.margin_top = 24; |
1332 | + |
1333 | this.main_window.set_default (start_bt); |
1334 | - |
1335 | - grid.attach (new LLabel.markup ("<b>"+_("Sound")+"</b>"), 0, 0, 2, 1); |
1336 | - grid.attach (new LLabel.right (" "+_("Record Computer Sounds")+":"), 0, 1, 1, 1); |
1337 | + |
1338 | + grid.attach ((sound), 0, 0, 1, 1); |
1339 | + grid.attach (new LLabel.right (_("Record Computer Sounds")), 0, 1, 1, 1); |
1340 | grid.attach (use_comp_sounds, 1, 1, 1, 1); |
1341 | grid.attach (new LLabel.right (_("Record from Microphone")+":"), 0, 2, 1, 1); |
1342 | grid.attach (audio_box, 1, 2, 1, 1); |
1343 | - grid.attach (new LLabel.markup ("<b>"+_("Video")+"</b>"), 0, 3, 2, 1); |
1344 | - grid.attach (new LLabel.right (_("Record from Monitor")+":"), 0, 4, 1, 1); |
1345 | + grid.attach ((video), 0, 3, 2, 1); |
1346 | + grid.attach (new LLabel.right (" "+_("Record from Monitor")+":"), 0, 4, 1, 1); |
1347 | grid.attach (monitors_combo, 1, 4, 1, 1); |
1348 | grid.attach (new LLabel.right (_("Recording Area")+":"), 0, 5, 1, 1); |
1349 | grid.attach (recordingarea_combo, 1, 5, 1, 1); |
1350 | @@ -199,56 +221,62 @@ |
1351 | grid.attach (new LLabel.right (_("Height")+":"), 0, 7, 1, 1); |
1352 | grid.attach (height, 1, 7, 1, 1); |
1353 | grid.attach (buttons, 0, 8, 2, 1); |
1354 | - |
1355 | + |
1356 | //grid2 |
1357 | var grid2 = new Grid (); |
1358 | - |
1359 | + |
1360 | var use_keyview = new Gtk.CheckButton (); |
1361 | use_keyview.halign = Gtk.Align.START; |
1362 | + |
1363 | var use_clickview = new Gtk.CheckButton (); |
1364 | use_clickview.halign = Gtk.Align.START; |
1365 | + |
1366 | var use_circle = new Gtk.CheckButton (); |
1367 | use_circle.halign = Gtk.Align.START; |
1368 | + |
1369 | var circle_color = new Gtk.ColorButton (); |
1370 | + |
1371 | var circle_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); |
1372 | - |
1373 | circle_box.pack_start (use_circle, false); |
1374 | circle_box.pack_start (circle_color); |
1375 | - |
1376 | - grid2.attach (new LLabel.right (_("Show pressed keys on screen")+":"), 0, 0, 1, 1); |
1377 | - grid2.attach (use_keyview, 1, 0, 1, 1); |
1378 | - grid2.attach (new LLabel.right (_("Show clicks on screen")+":"), 0, 1, 1, 1); |
1379 | - grid2.attach (use_clickview, 1, 1, 1, 1); |
1380 | - grid2.attach (new LLabel.right (_("Show circle behind mouse")+":"), 0, 2, 1, 1); |
1381 | - grid2.attach (circle_box, 1, 2, 1, 1); |
1382 | + |
1383 | + //grid2.attach (new LLabel |
1384 | + grid2.attach ((keyboard), 0, 0, 1, 1); |
1385 | + grid2.attach (new LLabel.right (_("Pressed keys on screen")+":"), 0, 1, 1, 1); |
1386 | + grid2.attach (use_keyview, 1, 1, 1, 1); |
1387 | + grid2.attach ((mouse), 0, 2, 1, 1); |
1388 | + grid2.attach (new LLabel.right (_("Mouse clicks on screen")+":"), 0, 3, 1, 1); |
1389 | + grid2.attach (use_clickview, 1, 3, 1, 1); |
1390 | + grid2.attach (new LLabel.right (_("Circle around the cursor")+":"), 0, 4, 1, 1); |
1391 | + grid2.attach (circle_box, 1, 4, 1, 1); |
1392 | grid2.column_spacing = 12; |
1393 | grid2.row_spacing = 6; |
1394 | grid2.hexpand = true; |
1395 | - |
1396 | + |
1397 | tabs.append_page (grid, new Label (_("Behavior"))); |
1398 | tabs.append_page (grid2, new Label (_("Appearance"))); |
1399 | - |
1400 | + |
1401 | this.main_window.add (tabs); |
1402 | this.main_window.show_all (); |
1403 | this.main_window.present (); |
1404 | - |
1405 | + |
1406 | /* |
1407 | Events |
1408 | */ |
1409 | - |
1410 | + |
1411 | + about_bt.clicked.connect ( () => { |
1412 | + this.show_about (this.main_window); |
1413 | + }); |
1414 | + |
1415 | cancel_bt.clicked.connect ( () => { |
1416 | this.main_window.destroy (); |
1417 | }); |
1418 | - |
1419 | + |
1420 | start_bt.clicked.connect ( () => { |
1421 | var count = new Eidete.Widgets.Countdown (); |
1422 | this.main_window.iconify (); |
1423 | count.start (this); |
1424 | }); |
1425 | - |
1426 | - about_bt.clicked.connect ( () => { |
1427 | - this.show_about (this.main_window); |
1428 | - }); |
1429 | |
1430 | this.screen = Gdk.Screen.get_default(); |
1431 | settings.monitor = 0; |
1432 | @@ -260,14 +288,14 @@ |
1433 | settings.ex = settings.sx + this.monitor_rec.width - 1; |
1434 | settings.ey = settings.sy + this.monitor_rec.height - 1; |
1435 | }); |
1436 | - |
1437 | + |
1438 | settings.monitor = int.parse (monitors_combo.active_id); |
1439 | this.screen.get_monitor_geometry(settings.monitor, out this.monitor_rec); |
1440 | settings.sx = this.monitor_rec.x; |
1441 | settings.sy = this.monitor_rec.y; |
1442 | settings.ex = settings.sx + this.monitor_rec.width - 1; |
1443 | settings.ey = settings.sy + this.monitor_rec.height - 1; |
1444 | - |
1445 | + |
1446 | recordingarea_combo.changed.connect ( () => { |
1447 | if (recordingarea_combo.active_id != "full"){ |
1448 | selectionarea = new Eidete.Widgets.SelectionArea (); |
1449 | @@ -303,7 +331,7 @@ |
1450 | height.set_sensitive (false); |
1451 | } |
1452 | }); |
1453 | - |
1454 | + |
1455 | width.key_release_event.connect ( (e) => { |
1456 | selectionarea.resize ((int)width.value, (int)height.value); |
1457 | typing_size = true; |
1458 | @@ -316,7 +344,7 @@ |
1459 | return false; |
1460 | }); |
1461 | height.focus_out_event.connect ( (e) => {typing_size = false;return false;}); |
1462 | - |
1463 | + |
1464 | settings.audio = false; |
1465 | use_audio.toggled.connect ( () => { |
1466 | settings.audio = use_audio.active; |
1467 | @@ -326,40 +354,40 @@ |
1468 | audio_source.set_sensitive (false); |
1469 | } |
1470 | }); |
1471 | - |
1472 | - |
1473 | + |
1474 | + |
1475 | Gdk.Screen.get_default ().monitors_changed.connect ( () => { |
1476 | if (Gdk.Screen.get_default ().get_n_monitors () > 1) |
1477 | monitors_combo.set_sensitive (true); |
1478 | else |
1479 | monitors_combo.set_sensitive (false); |
1480 | }); |
1481 | - |
1482 | + |
1483 | settings.keyview = false; |
1484 | use_keyview.toggled.connect ( () => { |
1485 | settings.keyview = use_keyview.active; |
1486 | }); |
1487 | - |
1488 | + |
1489 | settings.clickview = false; |
1490 | use_clickview.toggled.connect ( () => { |
1491 | settings.clickview = use_clickview.active; |
1492 | }); |
1493 | - |
1494 | + |
1495 | settings.mouse_circle = false; |
1496 | use_circle.toggled.connect ( () => { |
1497 | settings.mouse_circle = use_circle.active; |
1498 | }); |
1499 | - |
1500 | + |
1501 | settings.mouse_circle_color = {1, 1, 0, 0.3}; |
1502 | circle_color.use_alpha = true; |
1503 | circle_color.rgba = settings.mouse_circle_color; |
1504 | circle_color.color_set.connect ( () => { |
1505 | settings.mouse_circle_color = circle_color.rgba; |
1506 | }); |
1507 | - |
1508 | + |
1509 | settings.destination = GLib.Environment.get_tmp_dir ()+ |
1510 | "/screencast"+new GLib.DateTime.now_local ().to_unix ().to_string ()+".webm"; |
1511 | - |
1512 | + |
1513 | ulong handle = 0; |
1514 | handle = Wnck.Screen.get_default().active_window_changed.connect ( () => { |
1515 | this.win = Wnck.Screen.get_default().get_active_window (); |
1516 | @@ -372,7 +400,7 @@ |
1517 | }); |
1518 | Wnck.Screen.get_default ().disconnect (handle); |
1519 | }); |
1520 | - |
1521 | + |
1522 | this.main_window.focus_in_event.connect ( (ev) => { |
1523 | if (this.selectionarea != null && !this.selectionarea.not_visible){ |
1524 | this.selectionarea.present (); |
1525 | @@ -397,11 +425,11 @@ |
1526 | finish_recording (); |
1527 | } |
1528 | }); |
1529 | - |
1530 | + |
1531 | Granite.Services.Logger.initialize ("Eidete"); |
1532 | Granite.Services.Logger.DisplayLevel = Granite.Services.LogLevel.DEBUG; |
1533 | } |
1534 | - |
1535 | + |
1536 | public override void activate (){ |
1537 | if (this.get_windows ().length () == 0){ |
1538 | this.start_and_build (); |
1539 | @@ -413,50 +441,74 @@ |
1540 | } |
1541 | } |
1542 | } |
1543 | - |
1544 | + |
1545 | private void build_pause_ui (){ |
1546 | + |
1547 | pause_grid = new Grid (); |
1548 | pause_grid.margin = 12; |
1549 | - |
1550 | + this.main_window.title = _("Recording paused"); |
1551 | + |
1552 | + |
1553 | + var img_text_grid = new Grid (); |
1554 | + |
1555 | + var text_grid = new Grid (); |
1556 | + |
1557 | + var title = new LLabel.markup ("<span weight='bold' size='larger'>"+_("Recording paused")+"</span>"); |
1558 | + title.valign = Align.START; |
1559 | + |
1560 | + var info = new LLabel (_("You can continue or finish the recording now")); |
1561 | + info.valign = Align.START; |
1562 | + info.margin_top = 6; |
1563 | + |
1564 | var buttons = new Box (Orientation.HORIZONTAL, 0); |
1565 | - var stop_bt = new Button (); |
1566 | - stop_bt.image = new Image.from_stock (Stock.MEDIA_STOP, IconSize.BUTTON); |
1567 | - stop_bt.label = _("Finish"); |
1568 | - stop_bt.set_tooltip_text (_("Finish recording")); |
1569 | - var cancel_bt = new Button.from_stock (Stock.CANCEL); |
1570 | - var continue_bt = new Button.with_label (_("Record more")); |
1571 | + buttons.homogeneous = true; |
1572 | + buttons.spacing = 6; |
1573 | + buttons.margin_top = 24; |
1574 | + |
1575 | + var continue_bt = new Button.with_label (_("Continue")); |
1576 | + continue_bt.set_tooltip_text (_("Continue recording")); |
1577 | continue_bt.image = new Image.from_stock (Stock.MEDIA_RECORD, IconSize.BUTTON); |
1578 | + |
1579 | + var stop_bt = new Button.with_label (_("Finish")); |
1580 | + stop_bt.set_tooltip_text (_("Stop the recording and save the file")); |
1581 | + stop_bt.image = new Image.from_stock (Stock.APPLY, IconSize.BUTTON); |
1582 | + |
1583 | + var cancel_bt = new Button.with_label (_("Cancel")); |
1584 | + cancel_bt.set_tooltip_text (_("Cancel the recording without saving the file")); |
1585 | + cancel_bt.image = new Image.from_stock (Stock.DELETE, IconSize.BUTTON); |
1586 | + |
1587 | buttons.pack_end (stop_bt, false, true, 0); |
1588 | - buttons.pack_end (cancel_bt, false, true, 0); |
1589 | buttons.pack_end (continue_bt, false, true, 0); |
1590 | - |
1591 | + buttons.pack_end (cancel_bt, false, true, 0); |
1592 | + |
1593 | var img = new Image.from_stock (Stock.MEDIA_PAUSE, IconSize.DIALOG); |
1594 | img.valign = Align.START; |
1595 | img.margin_right = 12; |
1596 | - |
1597 | - var space = new Label (""); |
1598 | - space.height_request = 24; |
1599 | - |
1600 | - pause_grid.attach (img, 0, 0, 1, 1); |
1601 | - pause_grid.attach (new LLabel.markup ("<span weight='bold' size='20000'>"+_("Recording paused")+"</span>"), 1, 0, 1, 1); |
1602 | - pause_grid.attach (new LLabel (_("You can continue or finish the recording now.")), 1, 1, 1, 1); |
1603 | - pause_grid.attach (space, 0, 2, 1, 1); |
1604 | - pause_grid.attach (buttons, 0, 3, 2, 1); |
1605 | - |
1606 | + |
1607 | + text_grid.attach (title, 0, 0, 1, 1); |
1608 | + text_grid.attach (info, 0, 1, 1, 1); |
1609 | + |
1610 | + img_text_grid.attach (img, 0, 0, 1, 1); |
1611 | + img_text_grid.attach (text_grid, 1, 0, 1, 1); |
1612 | + |
1613 | + pause_grid.attach (img_text_grid, 0, 0, 1, 1); |
1614 | + pause_grid.attach (buttons, 0, 2, 1, 1); |
1615 | + |
1616 | + |
1617 | stop_bt.can_default = true; |
1618 | this.main_window.set_default (stop_bt); |
1619 | - |
1620 | + |
1621 | /* |
1622 | Events |
1623 | */ |
1624 | cancel_bt.clicked.connect ( () => { |
1625 | this.main_window.destroy (); |
1626 | }); |
1627 | - |
1628 | + |
1629 | stop_bt.clicked.connect ( () => { |
1630 | finish_recording (); |
1631 | }); |
1632 | - |
1633 | + |
1634 | continue_bt.clicked.connect ( () => { |
1635 | this.main_window.iconify (); |
1636 | this.pipeline.set_state (State.PLAYING); |
1637 | @@ -464,7 +516,7 @@ |
1638 | switch_to_paused (false); |
1639 | }); |
1640 | } |
1641 | - |
1642 | + |
1643 | public void record () { |
1644 | if (settings.keyview || settings.clickview || settings.mouse_circle) { |
1645 | keyview = new Eidete.Widgets.KeyView (settings.keyview, settings.clickview, settings.mouse_circle, settings.mouse_circle_color); |
1646 | @@ -476,36 +528,36 @@ |
1647 | return false; |
1648 | }); |
1649 | keyview.place (settings.ex, |
1650 | - settings.sy, |
1651 | + settings.sy, |
1652 | settings.ey - settings.sy); |
1653 | keyview.show_all (); |
1654 | } |
1655 | - |
1656 | + |
1657 | pipeline = new Pipeline ("screencast-pipe"); |
1658 | dynamic Element muxer = ElementFactory.make ("webmmux", "mux"); |
1659 | dynamic Element sink = ElementFactory.make ("filesink", "sink"); |
1660 | - |
1661 | + |
1662 | //video bin |
1663 | this.videobin = new Gst.Bin ("video"); |
1664 | try { |
1665 | videobin = (Gst.Bin)parse_bin_from_description ( |
1666 | - "ximagesrc name=\"videosrc\" ! video/x-raw-rgb, framerate=15/1 ! |
1667 | + "ximagesrc name=\"videosrc\" ! video/x-raw-rgb, framerate=15/1 ! |
1668 | ffmpegcolorspace ! vp8enc name=\"encoder\" ! queue", true); |
1669 | }catch (Error e){ stderr.printf ("Error: %s\n", e.message);} |
1670 | - |
1671 | + |
1672 | //audio bin |
1673 | this.audiobin = new Gst.Bin ("audio"); |
1674 | try{ |
1675 | - audiobin = (Gst.Bin)parse_bin_from_description ("pulsesrc name=\"audiosrc\" ! |
1676 | + audiobin = (Gst.Bin)parse_bin_from_description ("pulsesrc name=\"audiosrc\" ! |
1677 | audioconvert ! audioresample ! audiorate ! vorbisenc ! queue", true); |
1678 | }catch (Error e){ stderr.printf ("Error: %s\n", e.message);} |
1679 | - |
1680 | - |
1681 | + |
1682 | + |
1683 | string cores; |
1684 | try{ |
1685 | Process.spawn_command_line_sync ("cat /sys/devices/system/cpu/online", out cores); |
1686 | }catch (Error e){warning (e.message);} |
1687 | - |
1688 | + |
1689 | //configure |
1690 | sink.set ("location", settings.destination); |
1691 | videobin.get_by_name ("videosrc").set ("startx", this.settings.sx); |
1692 | @@ -514,37 +566,37 @@ |
1693 | videobin.get_by_name ("videosrc").set ("endy", this.settings.ey); |
1694 | videobin.get_by_name ("videosrc").set ("use-damage", false); |
1695 | videobin.get_by_name ("videosrc").set ("screen-num", this.settings.monitor); |
1696 | - |
1697 | + |
1698 | //videobin.get_by_name ("encoder").set ("mode", 1); |
1699 | videobin.get_by_name ("encoder").set ("quality", 8.0); |
1700 | videobin.get_by_name ("encoder").set ("speed", 6); |
1701 | videobin.get_by_name ("encoder").set ("max-keyframe-distance", 150); |
1702 | videobin.get_by_name ("encoder").set ("threads", int.parse (cores.substring (2))); |
1703 | - |
1704 | - |
1705 | + |
1706 | + |
1707 | if (pipeline==null||muxer==null||sink==null||videobin==null||audiobin==null){ |
1708 | stderr.printf ("Error: Elements weren't made correctly!\n"); |
1709 | } |
1710 | - |
1711 | + |
1712 | if (settings.audio) |
1713 | pipeline.add_many (audiobin, videobin, muxer, sink); |
1714 | else |
1715 | pipeline.add_many (videobin, muxer, sink); |
1716 | - |
1717 | - |
1718 | + |
1719 | + |
1720 | videobin.get_static_pad ("src").link(muxer.get_request_pad ("video_%d")); |
1721 | if (settings.audio) |
1722 | audiobin.get_static_pad ("src").link(muxer.get_request_pad ("audio_%d")); |
1723 | - |
1724 | + |
1725 | muxer.link (sink); |
1726 | - |
1727 | + |
1728 | pipeline.get_bus ().add_watch (bus_message_cb); |
1729 | |
1730 | pipeline.set_state (State.READY); |
1731 | - |
1732 | + |
1733 | if (selectionarea != null) |
1734 | selectionarea.to_discrete (); |
1735 | - |
1736 | + |
1737 | pipeline.set_state (State.PLAYING); |
1738 | this.recording = true; |
1739 | } |
1740 | @@ -581,9 +633,10 @@ |
1741 | } |
1742 | return true; |
1743 | } |
1744 | - |
1745 | + |
1746 | //only visuals |
1747 | public void switch_to_paused (bool to_normal){ |
1748 | + |
1749 | if (to_normal){ |
1750 | this.main_window.title = _("Recording paused"); |
1751 | this.main_window.remove (pause_icon); |
1752 | @@ -615,8 +668,8 @@ |
1753 | bool finish_rec; |
1754 | |
1755 | static const OptionEntry[] entries = { |
1756 | - {"pause", 'n', 0, OptionArg.NONE, ref pause_rec, "Pause Recording", ""}, |
1757 | - {"finish", 'n', 0, OptionArg.NONE, ref finish_rec, "Finish Recording", ""}, |
1758 | + {"pause", 'n', 0, OptionArg.NONE, ref pause_rec, N_("Pause Recording"), ""}, |
1759 | + {"finish", 'n', 0, OptionArg.NONE, ref finish_rec, N_("Finish Recording"), ""}, |
1760 | { null } |
1761 | }; |
1762 | |
1763 | @@ -628,11 +681,11 @@ |
1764 | try{ |
1765 | context.parse (ref args); |
1766 | }catch (Error e){ error ("Error: "+e.message);} |
1767 | - |
1768 | + |
1769 | Gst.init (ref args); |
1770 | - |
1771 | + |
1772 | eidete = new Eidete.EideteApp (); |
1773 | - |
1774 | + |
1775 | return eidete.run (args); |
1776 | } |
1777 |